Voided Purchases API

Google Play Voided Purchases API menyediakan daftar pesanan terkait pembelian yang telah dibatalkan pengguna. Anda dapat menggunakan informasi dari daftar ini untuk menerapkan sistem pencabutan 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. Catatan: hanya pesanan yang dibatalkan yang akan ditampilkan di Voided Purchases API. Jika developer mengembalikan dana tanpa mengatur opsi pembatalan, pesanan tidak akan muncul di API.
  • 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 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 yang akan ditampilkan. Nilai defaultnya adalah 0.

Respons berupa string JSON yang berisi daftar pembelian yang dibatalkan. Jika ada lebih banyak hasil daripada jumlah yang ditentukan dalam parameter permintaan maxResults , respons 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 parameter token selama permintaan berikutnya.

Praktik Terbaik

Saat Anda menentukan cara penggunaan API ini di aplikasi, ingat 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.