Produk pembelian satu kali memiliki siklus proses yang lebih sederhana daripada produk langganan, tetapi masih ada beberapa status dan peristiwa transisi yang diperlukan backend Anda agar dapat ditangani dengan benar.
Pembelian produk sekali beli yang baru
Setelah pengguna menyelesaikan alur penagihan, aplikasi Anda dapat melihat informasi tentang pembelian baru dengan salah satu cara berikut:
- Menyiapkan
Real-time developer notificationsdan mengaktifkanGet all notifications for subscriptions and one-time productsuntuk menerima update tentang status pembelian. - Mengimplementasikan antarmuka
PurchasesUpdatedListenerdariBillingClientuntuk otomatis menerima update pembelian. - Memanggil
BillingClient.queryPurchasesAsync()metode.
Setelah menerima pembelian baru, gunakan metode
getPurchaseState atau
purchases.productsv2.getproductpurchasev2 in Play Developer API
untuk menentukan status pembayaran pembelian baru.
Notifikasi developer real-time
Saat pengguna membeli atau membatalkan pembelian produk sekali beli, Google Play
mengirimkan pesan OneTimeProductNotification.
Untuk memperbarui status pembelian backend, gunakan token pembelian yang disediakan di objek
OneTimeProductNotification untuk memanggil metode
purchases.productsv2.getproductpurchasev2. Metode ini memberikan status pembelian dan konsumsi terbaru berdasarkan token pembelian.
Saat pra-order dipenuhi dan status pembeliannya berubah menjadi PURCHASED, RTDN akan dikirim ke klien Anda. Setelah menerima RTDN, proses pembelian pra-order seperti yang dijelaskan dalam Memproses pembelian produk sekali beli di backend.
Anda harus menangani RTDN terkait transaksi di backend aman Anda.
Menangani transaksi yang telah selesai
Saat pengguna menyelesaikan pembelian produk sekali beli, Google Play akan mengirimkan pesan OneTimeProductNotification dengan jenis ONE_TIME_PRODUCT_PURCHASED.
Saat Anda menerima RTDN ini, proses pembelian seperti yang dijelaskan dalam Memproses
pembelian produk sekali beli di backend.
Menangani transaksi yang dibatalkan
Saat pembelian produk sekali beli dibatalkan, Google Play akan mengirimkan pesan OneTimeProductNotification dengan jenis ONE_TIME_PRODUCT_CANCELED jika Anda telah mengonfigurasi untuk menerima notifikasi developer real-time. Misalnya, hal ini dapat terjadi jika pengguna tidak menyelesaikan pembayaran dalam jangka waktu yang diperlukan, atau jika pembelian dibatalkan oleh developer atau atas permintaan pelanggan. Saat server backend Anda menerima notifikasi ini, panggil
purchases.productsv2.getproductpurchasev2
metode untuk mendapatkan status pembelian terbaru, lalu perbarui backend Anda,
termasuk hak pengguna.
Jika pembelian produk sekali beli dalam status Purchased dikembalikan dananya, Anda juga akan
diberi tahu menggunakan Voided Purchases API.
Memproses pembelian produk sekali beli di backend Anda
Baik Anda telah mendeteksi pembelian baru menggunakan ONE_TIME_PRODUCT_PURCHASED
RTDN
atau Anda telah diberi tahu dalam aplikasi melalui
PurchasesUpdatedListener atau mengambil
pembelian secara manual dalam metode onResume() aplikasi, Anda harus memproses
pembelian baru. Sebaiknya tangani pemrosesan pembelian di backend Anda untuk keamanan yang lebih baik.
Ikuti langkah-langkah berikut untuk memproses pembelian satu kali yang baru:
- Buat kueri endpoint
purchases.productsv2.getproductpurchasev2untuk mendapatkan status pembelian produk sekali beli terbaru. Agar dapat memanggil metode ini untuk pembelian, Anda memerlukanpurchaseTokenyang sesuai, baik dari aplikasi Anda maupun dari RTDNONE_TIME_PRODUCT_PURCHASED. - Panggil
getPurchaseState()dan pastikan status pembelian adalahPURCHASED. - Verifikasi pembelian.
- Beri pengguna akses ke konten. Akun pengguna yang terkait dengan
pembelian dapat diidentifikasi dengan kolom
obfuscatedExternalAccountIddaripurchases.productsv2.getproductpurchasev2, jika akun tersebut ditetapkan menggunakansetObfuscatedAccountId()saat pembelian dilakukan.- Untuk pembelian produk tidak habis pakai, konfirmasi pengiriman
konten dengan memanggil
purchases.products.acknowledgemetode. Pastikan pembelian belum dikonfirmasi sebelumnya dengan memeriksaacknowledgementStatekolom. - Jika produk tersebut habis pakai, tandai item sebagai telah digunakan dengan memanggil metode
purchases.products.consumeagar pengguna dapat membeli item itu lagi setelah menghabiskan item tersebut. Metode ini juga mengonfirmasi pembelian.
- Untuk pembelian produk tidak habis pakai, konfirmasi pengiriman
konten dengan memanggil
Ada juga metode konfirmasi pembelian dan konsumsi yang tersedia di Library Layanan Penagihan Play yang memungkinkan Anda memproses pembelian dari aplikasi. Namun, sebaiknya Anda menangani pemrosesan di backend jika ada, untuk penerapan yang lebih aman.