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:
- Siapkan
Real-time developer notifications
dan aktifkanGet all notifications for subscriptions and one-time products
untuk menerima info terbaru tentang status pembelian. - Terapkan antarmuka
PurchasesUpdatedListener
dariBillingClient
untuk menerima update pembelian secara otomatis. - Panggil
metode
BillingClient.queryPurchasesAsync()
.
Setelah menerima pembelian baru, gunakan
metode getPurchaseState
atau
purchases.products.get 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 akan mengirimkan
pesan
OneTimeProductNotification
. Untuk memperbarui status pembelian backend, gunakan token pembelian yang disediakan
dalam objek OneTimeProductNotification
untuk memanggil
metode
purchases.products.get
. Metode ini memberikan status pembelian dan konsumsi terbaru berdasarkan
token pembelian.
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 dicabut oleh developer atau atas permintaan
pelanggan. Saat server backend Anda menerima notifikasi ini, panggil metode
purchases.products.get
untuk mendapatkan status pembelian terbaru, lalu perbarui backend Anda,
termasuk hak pengguna.
Jika pembelian produk sekali beli di negara bagian Purchased
dikembalikan dananya, Anda juga akan
diberi tahu melalui Voided Purchases API.
Memproses pembelian produk sekali beli di backend Anda
Baik Anda telah mendeteksi pembelian baru melalui RTDN ONE_TIME_PRODUCT_PURCHASED
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.products.get
untuk mendapatkan status pembelian produk sekali beli terbaru. Agar dapat memanggil metode ini untuk pembelian, Anda memerlukanpurchaseToken
yang sesuai, baik dari aplikasi Anda maupun dari RTDNONE_TIME_PRODUCT_PURCHASED
. - Panggil
getPurchaseState()
dan pastikan status pembeliannya adalahPURCHASED
. - Verifikasi pembelian.
- Beri pengguna akses ke konten. Akun pengguna yang terkait dengan
pembelian dapat diidentifikasi dengan kolom
obfuscatedExternalAccountId
daripurchases.products.get
, jika akun ditetapkan menggunakansetObfuscatedAccountId()
saat pembelian dilakukan.- Untuk pembelian produk tidak habis pakai, konfirmasi pengiriman konten
dengan memanggil
metode
purchases.products.acknowledge
. Pastikan pembelian belum dikonfirmasi sebelumnya dengan memeriksa kolomacknowledgementState
. - Jika produk tersebut habis pakai, tandai item sebagai telah digunakan dengan memanggil
metode
purchases.products.consume
agar 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
metode
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.