Saya menggunakan dompet google untuk gateway pembayaran saya, setelah membeli produk google memberi saya tanggapan di bawah itu
{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}
Saya mencoba menggunakan Validasi Tanda Terima yang baru saja diperkenalkan oleh google play. Di konsol Pengembang Google saya membuat kunci sertifikat dengan Akun Layanan di Izin. Tetapi saya bingung bagaimana menggunakan Validasi Tanda Terima setelah membeli Produk dari Google Play-store.
Jadi bisa siapa saja tolong bantu saya bagaimana melakukan validasi Penerimaan dari InApp
Pembelian.
android
in-app-purchase
android-pay
Binil Surendran
sumber
sumber
Jawaban:
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 manaPurchases.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 membutuhkanaccess_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 sebagaiissuer
dan kunci publik yang dapat Anda peroleh dariprivate_key
dan frasa sandinotasecret
akan digunakan untuksigning_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
danexpiryTimeMillis
akan dapat berubah tergantung pada durasi langganan.Selamat memvalidasi!
sumber
Jawaban Marc luar biasa. Saya hanya akan menambahkan bahwa Perpustakaan Klien API Pengembang Google Play untuk Java membuatnya lebih sederhana saat menghubungkan dari server Anda ke server Google Play. Pustaka secara otomatis menangani penyegaran token autentikasi dan juga menyediakan API yang aman untuk mengetik sehingga Anda tidak perlu membuang-buang URL.
Inilah cara Anda menyiapkan
Publisher
singleton:httpTransport = GoogleNetHttpTransport.newTrustedTransport(); jsonFactory = JacksonFactory.getDefaultInstance(); credential = GoogleCredential.fromStream(getClass().getResourceAsStream("/path/to/your/key.json")).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER)); publisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential).setApplicationName(APP_NAME).build();
Kode berikut menanyakan pembelian produk:
Anda juga bisa menanyakan tentang langganan:
SubscriptionPurchase sub = publisher.purchases().subscriptions().get(PACKAGE_NAME, sku, token).execute(); sub.getAutoRenewing(); sub.getCancelReason(); ...
sumber
APP_NAME = APP_PACKAGE_NAME
.getClass().getResourceAsStream(...
saya yang digunakannew FileInputStream(...
.credential.refreshToken();
antara mendapatkan kredensial dan penerbit.@ marc-greenstock memberikan jawaban yang bagus, namun, ada hal yang sangat penting tentang validasi tanda terima menggunakan API Pengembang Android Google Play.
Jika Anda memiliki masalah dalam menggunakan API ini dan Anda menambahkan produk dalam aplikasi SEBELUM memberikan izin atau menautkan ke akun layanan Anda, Anda perlu membuka "Produk dalam aplikasi" dan melakukan beberapa pembaruan. Misalnya, Anda dapat mengedit deskripsi produk Anda dan menyimpannya. Anda harus segera mendapatkan izin.
Saya menghabiskan beberapa jam memikirkan kesalahan apa yang saya lakukan ...
sumber
Jawaban ini luar biasa. Satu masalah lagi yang kami hadapi saat mengikuti arahan adalah bahwa akun layanan tidak muncul di Konsol Google Play. Kami akhirnya menemukan solusi ini untuk membantu: Akun layanan tidak muncul di Konsol Google setelah pembuatan
Pada dasarnya, buka IAM di Google API Console dan tambahkan akun layanan baru, lalu akan muncul di Konsol Google Play. tangkapan layar
sumber
Saya menghadapi masalah serupa, masalahnya ada pada pengaturan yang kami lakukan di proyek pengembang google.
Lihat kredensial buat-putar-layanan untuk pengaturan. Gunakan akun utama yang sama dengan yang Anda gunakan untuk membuat produk dalam aplikasi.
Pastikan Anda menghapus yang sebelumnya.
Tautkan ke Proyek Pengembang Google Akun Pengembang Play Anda harus ditautkan ke Proyek Pengembang Google.
1a. Buka Pengaturan> menu akun Pengembang dan pilih akses API
1b. Pilih Tautan untuk menghubungkan akun Play Anda ke Proyek Pengembang Google
1c. Setuju dengan syarat dan ketentuan
2. Buat Akun Layanan Selanjutnya kita perlu membuat akun layanan. Ini dilakukan dari Google API Console.
2a. Pilih Buat Akun Layanan
2b. Buat kredensial kunci akun Layanan
2c. Masukkan detail untuk akun layanan
2d. Unduh kredensial JSON Anda:
3. Berikan Akses
3a. Di Konsol Play, pilih Berikan Akses pada akun layanan yang baru dibuat
3b. Berikan izin berikut:
Setelah ini, tunggu selama 48 jam untuk mengizinkan Google menyebarkan semua hak akses untuk API.
sumber