ผลิตภัณฑ์แบบซื้อครั้งเดียวมีวงจรที่ง่ายกว่าผลิตภัณฑ์แบบสมัครใช้บริการ แต่ก็ยังมีสถานะและเหตุการณ์การเปลี่ยนสถานะหลายอย่างที่แบ็กเอนด์ของคุณต้องจัดการได้อย่างเหมาะสม
การซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวครั้งใหม่
หลังจากผู้ใช้ทำตามขั้นตอนโฟลว์การเรียกเก็บเงินเสร็จแล้ว แอปของคุณจะเห็นข้อมูลเกี่ยวกับการซื้อใหม่ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- ตั้งค่า
Real-time developer notificationsและเปิดใช้Get all notifications for subscriptions and one-time productsเพื่อรับ ข้อมูลอัปเดตเกี่ยวกับสถานะการซื้อ - ใช้อินเทอร์เฟซ
PurchasesUpdatedListenerจากBillingClientเพื่อรับข้อมูลอัปเดตการซื้อโดยอัตโนมัติ - เรียกใช้เมธอด
BillingClient.queryPurchasesAsync()
หลังจากได้รับการซื้อใหม่แล้ว ให้ใช้เมธอด
getPurchaseState หรือ
purchases.productsv2.getproductpurchasev2 in Play Developer API
เพื่อกำหนดสถานะการชำระเงินของการซื้อใหม่
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป
เมื่อผู้ใช้ซื้อหรือยกเลิกการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว Google Play
จะส่งข้อความ OneTimeProductNotification
หากต้องการอัปเดตสถานะการซื้อในแบ็กเอนด์ ให้ใช้โทเค็นการซื้อที่ระบุไว้ใน
OneTimeProductNotification ออบเจ็กต์เพื่อเรียกใช้
purchases.productsv2.getproductpurchasev2
เมธอด เมธอดนี้จะแสดงสถานะการซื้อและการใช้ล่าสุดเมื่อได้รับโทเค็นการซื้อ
เมื่อมีการดำเนินการตามคำสั่งซื้อล่วงหน้าและสถานะการซื้อเปลี่ยนเป็น PURCHASED ระบบจะส่ง RTDN ไปยังไคลเอ็นต์ของคุณ หลังจากได้รับ RTDN แล้ว ให้ประมวลผลการซื้อสั่งล่วงหน้าตามที่อธิบายไว้ในหัวข้อประมวลผลการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวในแบ็กเอนด์
คุณควรจัดการ RTDN ที่เกี่ยวข้องกับธุรกรรมในแบ็กเอนด์ที่ปลอดภัย
จัดการธุรกรรมที่เสร็จสมบูรณ์
เมื่อผู้ใช้ทำการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวเสร็จสมบูรณ์ Google Play จะส่งข้อความ OneTimeProductNotification ที่มีประเภท ONE_TIME_PRODUCT_PURCHASED
เมื่อได้รับ RTDN นี้ ให้ประมวลผลการซื้อตามที่อธิบายไว้ในหัวข้อประมวลผลการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวในแบ็กเอนด์
จัดการธุรกรรมที่ยกเลิก
เมื่อมีการยกเลิกการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว Google Play จะส่งข้อความ OneTimeProductNotification ที่มีประเภท ONE_TIME_PRODUCT_CANCELED หากคุณกำหนดค่าให้รับการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป เช่น กรณีนี้อาจเกิดขึ้นหากผู้ใช้ชำระเงินไม่เสร็จสมบูรณ์ภายในกรอบเวลาที่กำหนด หรือหากนักพัฒนาแอปเพิกถอนการซื้อ หรือผู้ใช้ขอให้เพิกถอน เมื่อเซิร์ฟเวอร์แบ็กเอนด์ของคุณได้รับการแจ้งเตือนนี้ ให้เรียกใช้
purchases.productsv2.getproductpurchasev2
เพื่อดูสถานะการซื้อล่าสุด แล้วอัปเดตแบ็กเอนด์ตามนั้น
รวมถึงสิทธิ์ของผู้ใช้
หากการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวที่มีสถานะ Purchased ได้รับเงินคืน คุณจะทราบเรื่องนี้ผ่าน Voided Purchases API ด้วย
ประมวลผลการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวในแบ็กเอนด์
ไม่ว่าคุณจะตรวจพบการซื้อใหม่โดยใช้ ONE_TIME_PRODUCT_PURCHASED
RTDN
หรือทราบเรื่องนี้ในแอปผ่าน
PurchasesUpdatedListener หรือ ดึงข้อมูล
การซื้อด้วยตนเองในเมธอด onResume() ของแอป คุณต้องประมวลผล
การซื้อใหม่ เราขอแนะนำให้คุณจัดการการประมวลผลการซื้อในแบ็กเอนด์เพื่อความปลอดภัยที่ดียิ่งขึ้น
ทำตามขั้นตอนต่อไปนี้เพื่อประมวลผลการซื้อครั้งเดียวใหม่
- เรียกใช้ปลายทาง
purchases.productsv2.getproductpurchasev2เพื่อดูสถานะการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวล่าสุด หากต้องการเรียกใช้เมธอดนี้สำหรับการซื้อ คุณต้องมีpurchaseTokenที่เกี่ยวข้องจากแอปหรือจาก RTDNONE_TIME_PRODUCT_PURCHASED - เรียกใช้
getPurchaseState()และตรวจสอบว่าสถานะการซื้อเป็นPURCHASED - ยืนยันการซื้อ
- ให้สิทธิ์ผู้ใช้เข้าถึงเนื้อหา คุณสามารถระบุบัญชีผู้ใช้ที่เชื่อมโยงกับการ
ซื้อได้ด้วยฟิลด์
obfuscatedExternalAccountIdจากpurchases.productsv2.getproductpurchasev2หากมีการตั้งค่าโดยใช้setObfuscatedAccountId()เมื่อทำการซื้อ- สำหรับการซื้อผลิตภัณฑ์แบบใช้ครั้งเดียว ให้ยืนยันการส่งมอบ
เนื้อหาโดยเรียกใช้
purchases.products.acknowledgeเมธอด ตรวจสอบว่าการซื้อยังไม่ได้รับการยืนยันก่อนหน้านี้โดย ดูที่ฟิลด์acknowledgementState - หากผลิตภัณฑ์เป็นแบบใช้ซ้ำได้ ให้ทำเครื่องหมายว่าไอเทมถูกใช้แล้วโดยเรียกใช้เมธอด
purchases.products.consumeเพื่อให้ผู้ใช้ซื้อไอเทมอีกครั้งได้หลังจากใช้แล้ว เมธอดนี้จะยืนยันการซื้อด้วย
- สำหรับการซื้อผลิตภัณฑ์แบบใช้ครั้งเดียว ให้ยืนยันการส่งมอบ
เนื้อหาโดยเรียกใช้
นอกจากนี้ยังมีเมธอดการยืนยันการซื้อและการใช้ที่มีอยู่ใน Play Billing Library ซึ่งช่วยให้คุณประมวลผลการซื้อจากแอปได้ แต่เราขอแนะนำให้คุณจัดการการประมวลผลในแบ็กเอนด์หากมี เพื่อการใช้งานที่ปลอดภัยยิ่งขึ้น