วงจรการซื้อครั้งเดียว

ผลิตภัณฑ์แบบซื้อครั้งเดียวมีวงจรที่ง่ายกว่าผลิตภัณฑ์แบบสมัครใช้บริการ แต่ก็ยังมีสถานะและเหตุการณ์การเปลี่ยนสถานะหลายอย่างที่แบ็กเอนด์ของคุณต้องจัดการได้อย่างเหมาะสม

สถานะวงจรและเหตุการณ์การเปลี่ยนสถานะสำหรับการซื้อครั้งเดียว
รูปที่ 1 สถานะวงจรและเหตุการณ์การเปลี่ยนสถานะสำหรับการ ซื้อครั้งเดียว

การซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวครั้งใหม่

หลังจากที่ผู้ใช้ทำโฟลว์การเรียกเก็บเงินเสร็จสมบูรณ์แล้ว แอปของคุณจะเห็นข้อมูลเกี่ยวกับการซื้อใหม่ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

  • ตั้งค่า 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 นี้แล้ว ให้ประมวลผลการซื้อตามที่อธิบายไว้ในหัวข้อ Process ประมวลผลการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวในแบ็กเอนด์

จัดการธุรกรรมที่ยกเลิก

เมื่อมีการยกเลิกการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว Google Play จะส่งข้อความ OneTimeProductNotification ที่มีประเภท ONE_TIME_PRODUCT_CANCELED หากคุณกำหนดค่าให้รับการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป เช่น กรณีนี้อาจเกิดขึ้นหากผู้ใช้ชำระเงินไม่เสร็จสมบูรณ์ภายในกรอบเวลาที่กำหนด หรือหากนักพัฒนาแอปหรือผู้ใช้ขอให้เพิกถอนการซื้อ เมื่อเซิร์ฟเวอร์แบ็กเอนด์ของคุณได้รับการแจ้งเตือนนี้ ให้เรียกใช้ purchases.productsv2.getproductpurchasev2 เมธอดเพื่อดูสถานะการซื้อล่าสุด จากนั้นอัปเดตแบ็กเอนด์ตามความเหมาะสม รวมถึงสิทธิ์ของผู้ใช้

หากการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวที่มีสถานะ Purchased ได้รับเงินคืน คุณจะทราบถึงเรื่องนี้ผ่าน Voided Purchases API ด้วย

ประมวลผลการซื้อผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวในแบ็กเอนด์

ไม่ว่าคุณจะตรวจพบการซื้อใหม่โดยใช้ ONE_TIME_PRODUCT_PURCHASED RTDN หรือทราบถึงการซื้อใหม่ในแอปผ่าน PurchasesUpdatedListener หรือ การดึงข้อมูล การซื้อด้วยตนเองในเมธอด onResume() ของแอป คุณต้องประมวลผล การซื้อใหม่ เราขอแนะนำให้คุณจัดการการประมวลผลการซื้อในแบ็กเอนด์เพื่อความปลอดภัยที่ดียิ่งขึ้น

ทำตามขั้นตอนต่อไปนี้เพื่อประมวลผลการซื้อครั้งเดียวครั้งใหม่

  1. เรียกใช้ปลายทาง purchases.productsv2.getproductpurchasev2 เพื่อดูสถานะการซื้อผลิตภัณฑ์แบบซื้อครั้งเดียวล่าสุด หากต้องการเรียกใช้เมธอดนี้สำหรับการซื้อ คุณต้องมี purchaseToken ที่เกี่ยวข้องจากแอปหรือจาก RTDN ONE_TIME_PRODUCT_PURCHASED
  2. เรียกใช้ getPurchaseState() และตรวจสอบว่าสถานะการซื้อเป็น PURCHASED
  3. ยืนยันการซื้อ
  4. ให้สิทธิ์ผู้ใช้เข้าถึงเนื้อหา คุณสามารถระบุบัญชีผู้ใช้ที่เชื่อมโยงกับการ ซื้อได้ด้วยฟิลด์ obfuscatedExternalAccountId จาก purchases.productsv2.getproductpurchasev2 หากมีการตั้งค่าโดยใช้ setObfuscatedAccountId() เมื่อทำการซื้อ
    1. สำหรับการซื้อผลิตภัณฑ์ที่อยู่ตลอดไป ให้รับทราบการส่งมอบ เนื้อหาโดยเรียกใช้ purchases.products.acknowledge เมธอด ตรวจสอบว่าการซื้อยังไม่ได้รับการรับทราบก่อนหน้านี้โดย ดูที่ฟิลด์ acknowledgementState
    2. หากผลิตภัณฑ์เป็นผลิตภัณฑ์ที่ใช้หมดไป ให้ทำเครื่องหมายว่าไอเทมถูกใช้หมดแล้วโดยเรียกใช้เมธอด purchases.products.consume เพื่อให้ผู้ใช้ ซื้อไอเทมดังกล่าวได้อีกครั้งหลังจากใช้หมดแล้ว เมธอดนี้จะรับทราบการซื้อด้วย

นอกจากนี้ยังมีเมธอดการรับทราบและการใช้การซื้อใน Play Billing Library ซึ่งช่วยให้คุณประมวลผลการซื้อจากแอปได้ แต่เราขอแนะนำให้คุณจัดการการประมวลผลในแบ็กเอนด์หากมี เพื่อการใช้งานที่ปลอดภัยยิ่งขึ้น