Google Play Voided Purchases API menyediakan daftar pesanan terkait pembelian yang telah dibatalkan pengguna. Anda dapat menggunakan informasi dari daftar ini untuk menerapkan sistem pembatalan yang mencegah pengguna mengakses produk dari pesanan tersebut.
API ini berlaku untuk pesanan dalam aplikasi satu kali dan Langganan Aplikasi.
Pembelian dapat dibatalkan dengan cara berikut:
- Pengguna meminta pengembalian dana atas pesanan.
- Pengguna membatalkan pesanan.
- Pesanan ditagih balik.
Developer membatalkan atau mengembalikan dana pesanan.
Google membatalkan atau mengembalikan dana pesanan.
Dengan menggunakan API ini, berarti Anda membantu menghadirkan pengalaman yang lebih seimbang dan adil bagi semua pengguna aplikasi, terutama jika aplikasi Anda adalah game.
Mendapatkan Akses
Untuk menggunakan Voided Purchases API, Anda harus memiliki izin untuk melihat informasi keuangan. Anda memberikan otorisasi menggunakan klien OAuth atau akun layanan. Jika Anda menggunakan akun layanan, aktifkan izin "Lihat laporan keuangan" di akun ini.
Untuk mempelajari lebih lanjut tentang mendapatkan akses yang sah ke Google Play Developer API, lihat panduan berikut:
Melihat Pembelian yang Dibatalkan
Gunakan metode GET
untuk meminta daftar pembelian yang dibatalkan. Dalam permintaan,
sertakan nama paket yang sepenuhnya memenuhi syarat untuk aplikasi—seperti
com.google.android.apps.maps
—dan token otorisasi yang
diterima saat mendapatkan akses ke API.
GET https://www.googleapis.com/androidpublisher/v3/applications/ your_package_name/purchases/voidedpurchases?access_token=your_auth_token
Anda juga dapat menyertakan parameter yang bersifat opsional berikut dalam permintaan:
- startTime
Waktu, (dalam milidetik sejak epoch Unix) pembelian terlama yang dibatalkan, yang ingin dilihat dalam respons. Secara default,
startTime
ditetapkan ke 30 hari yang lalu.API ini hanya dapat menampilkan pembelian yang dibatalkan dan telah terjadi dalam 30 hari terakhir. Pembelian lebih lama yang dibatalkan tidak disertakan dalam respons, apa pun nilai yang diberikan untuk
startTime
.- endTime
Waktu, (dalam milidetik sejak epoch Unix) pembelian terbaru yang dibatalkan, yang ingin dilihat dalam respons. Secara default,
endTime
ditetapkan ke waktu saat ini.- maxResults
- Jumlah maksimum pembelian yang dibatalkan yang muncul dalam setiap respons. Secara default, nilainya adalah 1.000. Perlu diketahui bahwa nilai maksimum parameter ini juga 1.000.
- token
- Token lanjutan dari respons sebelumnya, memungkinkan Anda melihat lebih banyak hasil.
- type
Jenis pembelian yang dibatalkan yang muncul di setiap respons. Jika ditetapkan ke 0, hanya pembelian dalam aplikasi yang dibatalkan yang akan ditampilkan. Jika ditetapkan ke 1, pembelian dalam aplikasi dan pembelian langganan yang dibatalkan akan ditampilkan. Nilai defaultnya adalah 0.
- includeQuantityBasedPartialRefund
Apakah akan menyertakan pembelian yang dibatalkan untuk pengembalian dana sebagian berdasarkan jumlah, yang hanya berlaku untuk pembelian multikuantitas. Jika
true
, pembelian tambahan yang dibatalkan dapat ditampilkan denganvoidedQuantity
yang menunjukkan jumlah pengembalian dana dari pengembalian dana sebagian berdasarkan jumlah. Nilai default-nya adalahfalse
.
Respons berupa string JSON yang berisi daftar pembelian yang dibatalkan. Jika ada lebih banyak hasil daripada jumlah yang ditentukan dalam parameter permintaan maxResults
, responsnya akan menyertakan nilai nextPageToken
, yang dapat diteruskan menjadi permintaan berikutnya untuk melihat lebih banyak hasil. Hasil pertama dalam daftar menampilkan
pembelian terlama yang dibatalkan.
{ "tokenPagination": { "nextPageToken": "next_page_token" }, "voidedPurchases": [ { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_purchase_token", "purchaseTimeMillis": "1468825200000", "voidedTimeMillis": "1469430000000", "orderId": "some_order_id", "voidedSource": "0", "voidedReason": "4" }, { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_other_purchase_token", "purchaseTimeMillis": "1468825100000", "voidedTimeMillis": "1470034800000", "orderId": "some_other_order_id", "voidedSource": "2", "voidedReason": "5" }, ] }
Kuota
Voided Purchases API menetapkan kuota berikut per paket:
- 6.000 kueri per hari. (Hari dimulai dan berakhir pada tengah malam Waktu Pasifik.)
- 30 kueri dalam setiap periode 30 detik.
Pedoman permintaan awal
Selama permintaan API pertama, Anda mungkin ingin mengambil semua data yang tersedia untuk aplikasi. Meskipun kemungkinannya kecil, proses ini dapat menghabiskan kuota harian. Untuk memperoleh data pembelian yang dibatalkan secara lebih aman dan konsisten, ikuti praktik terbaik berikut:
- Gunakan nilai default untuk parameter
maxResults
. Dengan begitu, Anda dapat mengambil detail 6.000.000 pembelian yang dibatalkan jika menggunakan seluruh kuota kueri harian. - Jika respons menyertakan nilai untuk
nextPageToken
, tetapkan nilai ini ke parametertoken
selama permintaan berikutnya.
Praktik Terbaik
Saat menggunakan API ini di aplikasi Anda, ingatlah bahwa ada banyak alasan untuk membatalkan pembelian dan tidak ada solusi tunggal yang berhasil untuk semua kasus. Anda harus mempertimbangkan pengguna saat merancang kebijakan dan strategi pembatalan. Untuk melakukannya, Anda dapat menerapkan praktik yang disarankan berikut:
- Gunakan API ini sebagai satu dari banyak elemen dalam strategi komprehensif untuk mengatasi perilaku yang tidak diinginkan. Mencabut akses ke produk dalam aplikasi umumnya lebih efektif bila digabungkan dengan aplikasi yang memiliki harga pembelian dalam aplikasi yang wajar, desain aplikasi yang mencegah perilaku yang tidak diinginkan, basis pengguna yang kuat dan memiliki budaya menolak perilaku tersebut, serta saluran dukungan pengguna yang responsif dan efisien.
- Kelola pengaturan kebijakan pembatalan untuk memastikan keadilan bagi semua pengguna.
- Pertimbangkan pembuatan kebijakan bertahap saat menangani perilaku yang tidak diinginkan. Misalnya, mulai dengan peringatan dalam aplikasi untuk pelanggaran awal, kemudian tingkatkan respons bila perilaku pengguna yang tidak diinginkan berlanjut. Sebagai upaya terakhir, Anda dapat mencegah pengguna berinteraksi dengan aplikasi sama sekali.
- Saat memperkenalkan kebijakan pembatalan, dan setiap kali Anda memperbaruinya, gunakan saluran komunikasi aplikasi untuk menginformasikan perubahan ini kepada pengguna. Beri pengguna waktu untuk memahaminya dengan jelas sebelum perubahan ini diberlakukan di aplikasi.
- Bersikaplah transparan dan informasikan setiap tindakan yang Anda lakukan kepada para pengguna, seperti mencabut akses mereka ke produk dalam aplikasi. Idealnya, pengguna harus dapat membantah keputusan Anda, dan bantahan tersebut harus diperlakukan dengan adil.
- Pantau formulir masukan dan forum komunitas untuk memahami alasan yang mendorong para pengguna berperilaku dengan cara yang tidak diinginkan serta cara mereka melakukan perilaku tersebut. Sebagai garis pertahanan pertama, bertindaklah berdasarkan data ini.