Pengingat
1. Mulai 2 Agustus 2023, semua aplikasi baru harus menggunakan Library Penagihan versi 5 atau yang lebih baru. Mulai 1 November 2023, semua update untuk aplikasi yang ada harus menggunakan Library Penagihan versi 5 atau yang lebih baru. Pelajari lebih lanjut.
2. Jika aplikasi Anda menargetkan Android 14 atau yang lebih baru, Anda harus mengupdate ke PBL 5.2.1 atau PBL 6.0.1 atau yang lebih tinggi.

Siklus proses pembelian satu kali

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.

Gambar 1 Status siklus proses dan peristiwa transisi untuk pembelian satu kali.

Pembelian produk sekali beli yang baru

Setelah pengguna menyelesaikan alur penagihan, aplikasi Anda dapat melihat informasi tentang pembelian baru dengan salah satu dari dua cara berikut:

Setelah menerima pembelian baru, gunakan metode getPurchaseState untuk menentukan status pembayaran pembelian baru.

Transaksi yang tertunda

Pembelian produk sekali beli hanya menghasilkan RTDN saat tertunda. Format kolom data untuk jenis RTDN ini adalah OneTimeProductNotification. Untuk memperbarui status pembelian backend, gunakan token pembelian yang disediakan di 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 yang tertunda, 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 yang tertunda dibatalkan, Google Play akan mengirimkan pesan OneTimeProductNotification dengan jenis ONE_TIME_PRODUCT_CANCELED. Misalnya, hal ini dapat terjadi jika pengguna tidak menyelesaikan pembayaran dalam jangka waktu yang diperlukan. Saat server backend Anda menerima notifikasi ini, panggil metode purchases.products.get untuk mendapatkan status pembelian terbaru, lalu perbarui backend Anda, termasuk hak pengguna.

Hanya pembelian produk sekali beli di negara bagian Pending yang dapat dibatalkan. Jika pembelian produk sekali beli di negara bagian Purchased dikembalikan dananya, Anda 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:

  1. Buat kueri endpoint purchases.products.get untuk mendapatkan status pembelian produk sekali beli terbaru. Agar dapat memanggil metode ini untuk pembelian, Anda memerlukan purchaseToken yang sesuai, baik dari aplikasi Anda maupun dari RTDN ONE_TIME_PRODUCT_PURCHASED.
  2. Panggil getPurchaseState() dan pastikan status pembeliannya adalah PURCHASED.
  3. Verifikasi pembelian.
  4. Beri pengguna akses ke konten. Akun pengguna yang terkait dengan pembelian dapat diidentifikasi dengan kolom obfuscatedExternalAccountId dari purchases.products.get, jika akun ditetapkan menggunakan setObfuscatedAccountId() saat pembelian dilakukan.
    1. Untuk pembelian produk tidak habis pakai, konfirmasi pengiriman konten dengan memanggil metode purchases.products.acknowledge. Pastikan pembelian belum dikonfirmasi sebelumnya dengan memeriksa kolom acknowledgementState.
    2. 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.

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.