Google memberikan validasi tanda terima melalui Google Play Developer API , dalam API ada dua titik akhir yang paling Anda minati: Purchases.products: get dan Purchases.subscriptions: get .
Purchases.products: get
dapat digunakan untuk memverifikasi pembelian produk yang tidak diperpanjang secara otomatis, di mana Purchases.subscriptions: get
untuk memverifikasi dan memverifikasi ulang langganan produk yang diperpanjang secara otomatis.
Untuk menggunakan endpoint Anda harus tahu packageName
, productId
, purchaseToken
semua ini dapat ditemukan dalam payload yang Anda terima pada pembelian. Anda juga membutuhkan access_token
yang bisa Anda dapatkan dengan membuat akun layanan API Google.
Untuk memulai dengan akun layanan, pertama-tama buka laman setelan akses API konsol Pengembang Google play dan klik tombol Buat proyek baru:
Sekarang Anda akan melihat Proyek Tertaut baru dan beberapa bagian baru, di bagian Akun Layanan, klik tombol Buat akun layanan.
Anda akan diberikan kotak info dengan instruksi untuk membuat akun layanan Anda. Klik tautan ke Google Developers Console dan tab baru akan muncul.
Sekarang klik Buat ID Klien baru, pilih Akun layanan dari opsi dan klik Buat ID Klien.
File JSON akan diunduh, ini adalah Token Web JSON Anda yang akan Anda gunakan untuk menukarnya access_token
sehingga tetap aman.
Selanjutnya, alihkan tab kembali ke konsol Pengembang Google play dan klik Selesai di kotak info. Anda akan melihat akun layanan baru Anda dalam daftar. Klik Berikan akses di sebelah email akun layanan.
Selanjutnya di bawah Pilih peran untuk pengguna ini, pilih Keuangan dan klik Tambahkan pengguna.
Anda sekarang telah menyiapkan akun layanan Anda dan akun tersebut memiliki semua akses yang diperlukan untuk melakukan validasi tanda terima. Selanjutnya adalah menukar JWT Anda dengan access_token.
The access_token
berakhir setelah satu jam dari pertukaran Anda sehingga perlu beberapa kode server untuk menangani ini dan Google telah menyediakan beberapa perpustakaan dalam banyak bahasa untuk menangani ini (daftar tidak lengkap):
Saya tidak akan menjelaskan secara detail karena ada banyak dokumentasi tentang cara menggunakan pustaka ini, tetapi saya akan menyebutkan Anda ingin menggunakan https://www.googleapis.com/auth/androidpublisher
sebagai cakupan OAuth2, client_email
dari JWT sebagai issuer
dan kunci publik yang dapat Anda peroleh dari private_key
dan frasa sandi notasecret
akan digunakan untuk signing_key
.
Setelah Anda memiliki access_token
Anda siap untuk pergi (setidaknya untuk satu jam berikutnya di mana Anda akan ingin meminta yang baru mengikuti proses yang sama di paragraf di atas).
Untuk memeriksa status pembelian yang dapat dikonsumsi (tanpa perpanjangan otomatis), buat get
permintaan http ke:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Jika Anda mendapatkan kode respons 200 http, semuanya berjalan sesuai rencana dan pembelian Anda valid. 404 berarti token Anda tidak valid sehingga pembelian kemungkinan besar merupakan upaya penipuan. 401 berarti token akses Anda tidak valid dan 403 berarti akun layanan Anda memiliki akses yang tidak memadai, periksa apakah Anda telah mengaktifkan Keuangan untuk akun akses di konsol Pengembang Google Play.
Tanggapan dari 200 akan terlihat seperti ini:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Untuk penjelasan tentang setiap properti, lihat https://developers.google.com/android-publisher/api-ref/purchases/products .
Langganan serupa tetapi titik akhirnya terlihat seperti ini:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
Dan responsnya harus berisi properti ini:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Lihat https://developers.google.com/android-publisher/api-ref/purchases/subscriptions untuk deskripsi properti dan perhatikan bahwa startTimeMillis
dan expiryTimeMillis
akan dapat berubah tergantung pada durasi langganan.
Selamat memvalidasi!