ผลิตภัณฑ์แบบซื้อครั้งเดียวมีวงจรที่เรียบง่ายกว่าผลิตภัณฑ์แบบสมัครใช้บริการ แต่ก็ยังมีสถานะและเหตุการณ์การเปลี่ยนสถานะหลายอย่างที่แบ็กเอนด์ของคุณต้อง จัดการได้อย่างเหมาะสม
การซื้อไอเทมแบบเรียกเก็บเงินครั้งเดียวใหม่
หลังจากผู้ใช้ทำตามขั้นตอนการเรียกเก็บเงินเสร็จแล้ว แอปของคุณจะดูข้อมูลเกี่ยวกับการซื้อใหม่ได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- ตั้งค่า
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
วิธีนี้จะแสดงสถานะการซื้อและการใช้ล่าสุดเมื่อระบุโทเค็นการซื้อ
เมื่อมีการจัดส่งคำสั่งซื้อล่วงหน้าและสถานะการซื้อเปลี่ยนเป็น "ซื้อแล้ว" ระบบจะส่ง 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
ที่เกี่ยวข้อง จากแอปหรือจากONE_TIME_PRODUCT_PURCHASED
RTDN - โทรหา
getPurchaseState()
และตรวจสอบว่าสถานะการซื้อเป็นPURCHASED
- ยืนยันการซื้อ
- ให้สิทธิ์ผู้ใช้เข้าถึงเนื้อหา ระบบจะระบุบัญชีผู้ใช้ที่เชื่อมโยงกับการซื้อได้ด้วยฟิลด์
obfuscatedExternalAccountId
จากpurchases.productsv2.getproductpurchasev2
หากมีการตั้งค่าโดยใช้setObfuscatedAccountId()
เมื่อทำการซื้อ- สำหรับการซื้อผลิตภัณฑ์ที่อยู่ตลอดไป ให้รับทราบการนำส่งเนื้อหาโดยเรียกใช้เมธอด
purchases.products.acknowledge
ตรวจสอบว่าคุณไม่ได้ยืนยันการรับทราบการซื้อก่อนหน้านี้แล้วโดย ดูช่องacknowledgementState
- หากผลิตภัณฑ์เป็นไอเทมที่ใช้แล้วหมด ให้ทำเครื่องหมายไอเทมว่าใช้แล้วโดยเรียกใช้เมธอด
purchases.products.consume
เพื่อให้ผู้ใช้ซื้อไอเทมอีกครั้งได้หลังจากที่ใช้แล้ว วิธีนี้ ยังเป็นการรับทราบการซื้อด้วย
- สำหรับการซื้อผลิตภัณฑ์ที่อยู่ตลอดไป ให้รับทราบการนำส่งเนื้อหาโดยเรียกใช้เมธอด
นอกจากนี้ ยังมีวิธีการรับทราบการซื้อและวิธีการใช้ที่มีอยู่ใน Play Billing Library ซึ่งช่วยให้คุณประมวลผลการซื้อจากแอปได้ แต่เรา ขอแนะนำให้คุณจัดการการประมวลผลในแบ็กเอนด์หากมี เพื่อการติดตั้งใช้งานที่ปลอดภัยยิ่งขึ้น