Mengelola langganan dan pembelian satu kali

Anda mungkin perlu melakukan tindakan pengelolaan pada langganan atau pembelian satu kali sebagai bagian dari bisnis sehari-hari. Misalnya, layanan pelanggan Anda mungkin perlu melakukan pengembalian dana penuh atau sebagian untuk pengguna, atau Anda mungkin perlu mencabut hak dalam kasus tertentu. Anda dapat mengelola pesanan dari Konsol Play, atau jika ingin mengelolanya dari sistem Anda sendiri, Anda dapat melakukannya dengan menggunakan Google Play Developer API.

Membatalkan langganan

Pembatalan langganan dapat dilakukan oleh pengguna atau developer.

Pembatalan yang dimulai pengguna

Pengguna dapat membatalkan langganan Google Play kapan saja menggunakan Play Store. Jika berlaku, Anda juga harus memberikan opsi bagi pengguna untuk membatalkan langganan mereka di aplikasi dan situs Anda.

Cara termudah untuk memungkinkan pengguna membatalkan langganan secara sukarela adalah dengan menyediakan deep link di aplikasi Anda ke Play Store, tempat mereka dapat melihat dan mengelola langganan.

Pembatalan yang dilakukan developer

Sebagai developer, Anda mungkin juga perlu memicu pembatalan dari backend. purchases.subscriptions.cancel API memungkinkan Anda membatalkan pembelian langganan. Misalnya, Anda dapat menggunakan metode ini untuk menonaktifkan layanan lama. Membatalkan langganan tidak akan memberikan pengembalian dana, dan pengguna akan tetap memiliki akses hingga akhir periode penagihan saat ini.

Metode ini memungkinkan Anda menentukan jenis pembatalan berikut dalam parameter isi permintaan cancellationType:

  • USER_REQUESTED_STOP_RENEWALS: Membatalkan langganan seolah-olah pengguna telah membatalkan dari Play Store. Pembayaran cicilan akan berlanjut selama sisa periode komitmen saat ini. Dari Play Store, pengguna dapat memulihkan langganan sebelum masa berlakunya habis, atau berlangganan kembali setelah masa berlakunya habis jika diaktifkan untuk paket dasar.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: Membatalkan langganan dan mencegah pembayaran lebih lanjut. Pengguna tidak dapat memulihkan atau berlangganan kembali langganan dari Play Store, tetapi Anda dapat mengizinkan mereka berlangganan lagi dalam aplikasi Anda.

Memungkinkan pengguna memulihkan langganan yang belum kedaluwarsa

Dalam beberapa skenario, Anda mungkin merasa berguna untuk mengizinkan pengguna memulihkan langganan yang belum habis masa berlakunya dari pusat langganan Play setelah Anda memicu pembatalan sebagai developer. Misalnya, Anda mungkin ingin menyediakan alur pembatalan dalam aplikasi yang disesuaikan. Berdasarkan logika bisnis Anda, Anda dapat memutuskan pembatalan mana yang dipicu dari backend yang dapat dipulihkan oleh pengguna.

Untuk menunjukkan bahwa pengguna dapat memulihkan pembatalan, kirim permintaan POST ke API purchases.subscriptions.cancel, dan tetapkan parameter permintaan cancellationType ke nilai USER_REQUESTED_STOP_RENEWAL.

Contoh:

  • Token pembelian langganan 1a2b3c4d5e6f7g8h9i0j
  • Nama paket aplikasi com.your.app
  • ID Langganan your-subscription-product

Permintaan POST HTTP:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

Isi permintaan:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}

Mengizinkan pengguna berlangganan kembali langganan yang sudah berakhir

Untuk mengizinkan berlangganan kembali langganan yang telah habis masa berlakunya, Anda harus mengaktifkan opsi Berlangganan lagi di paket dasar langganan, lalu membatalkan langganan dengan menyetel parameter cancellationType ke nilai USER_REQUESTED_STOP_RENEWAL.

Mengizinkan pengguna untuk berlangganan lagi hanya di aplikasi Anda

Jika Anda telah menyetel parameter cancellationType ke DEVELOPER_REQUESTED_STOP _PAYMENTS atau belum menyetel parameter cancellationType, pengguna tidak dapat memulihkan langganan mereka dari pusat langganan Play. Namun, pengguna dapat mendaftar ulang ke langganan melalui aplikasi Anda jika diperlukan.

Tindakan ini akan memicu Notifikasi developer real time SUBSCRIPTION_CANCELED. Tangani pembatalan ini seperti yang dijelaskan dalam Pembatalan.

Menangguhkan penagihan

Anda dapat memperpanjang periode hak untuk langganan dengan menggunakan metode subscriptionsv2.defer. Saat Anda menunda langganan dengan add-on, semua item dalam langganan akan ditunda dengan durasi yang sama. Selama periode penundaan, pengguna tetap berlangganan konten Anda, tetapi tidak dikenai biaya untuk waktu tambahan tersebut. Saat Anda menunda penagihan untuk langganan, informasi status akan diperbarui sebagaimana mestinya dan Anda akan melihatnya tercermin di kolom expiryTime dalam informasi status pembelian:

  • Untuk langganan berulang yang aktif, penagihan yang ditangguhkan memperpanjang tanggal perpanjangan berikutnya.
  • Untuk paket prabayar, penundaan penagihan memperpanjang waktu habis masa berlaku.

Berikut beberapa contoh cara Anda dapat menggunakan penagihan yang ditangguhkan:

  • Memberikan akses tanpa biaya kepada pengguna sebagai penawaran spesial, seperti memberikan satu minggu gratis kepada pelanggan lama karena telah mengisi survei masukan.
  • Memberikan akses tanpa biaya kepada pelanggan sebagai tindakan layanan pelanggan, misalnya setelah gangguan yang berkepanjangan yang mungkin memengaruhi kemampuan mereka untuk menggunakan layanan Anda.

Penagihan dapat ditunda selama minimal satu hari dan hingga satu tahun per panggilan API. Untuk menunda akhir hak lebih lama lagi, panggil API lagi sebelum tanggal habis masa berlaku baru tiba.

Tindakan ini akan memicu Notifikasi developer real time SUBSCRIPTION_DEFERRED. Lihat Menunda penagihan untuk pelanggan di Tentang langganan untuk mempelajari cara menangani peristiwa ini.

Contoh:

  1. Layanan streaming FitnessGoals ingin menjalankan promosi untuk mendorong olahraga rutin pada bulan Februari.

  2. Mereka memutuskan untuk menawarkan layanan tambahan selama satu bulan kepada pelanggan yang berolahraga dengan FitnessGoals setidaknya 10 kali selama bulan Februari.

  3. Mereka melacak hasil tantangan, dan pada 1 Maret, mereka memanggil metode subscriptionsv2.defer untuk setiap pembelian langganan aktif milik pengguna yang memenuhi tantangan pada bulan Februari.

  4. Pengguna ini mendapatkan manfaat video latihan rutin selama sebulan penuh tanpa biaya tambahan, dan pengguna ini memberi tahu semua temannya tentang bagaimana FitnessGoals membantu mereka tetap sehat.

Melakukan pengembalian dana dan pencabutan

Ada banyak situasi ketika Anda mungkin ingin melakukan pengembalian dana atau mencabut akses ke langganan atau pembelian satu kali.

Mengembalikan dana penuh pesanan berdasarkan ID pesanan

Dengan orders.refund API, Anda dapat melakukan pengembalian dana penuh untuk pesanan apa pun dalam waktu tiga tahun setelah pembelian. Metode orders.refund menerima parameter pencabutan yang menunjukkan apakah akses harus dicabut selain memberikan pengembalian dana atau tidak.

Jika Anda membatalkan dengan panggilan pengembalian dana untuk pembelian langganan, langganan akan segera dihentikan dan memicuSUBSCRIPTION_REVOKED Notifikasi Developer Real Time. Baca panduan pengelolaan siklus proses langganan, bagian Pencabutan, untuk mempelajari cara menangani peristiwa ini.

Contoh:

  1. Untuk merayakan dimulainya piala dunia baru, aplikasi e-sport Football-Not-Soccer memutuskan untuk mengundi jersey virtual gratis bagi semua pengguna yang membeli perlengkapan tim baru dalam 24 jam pertama.

  2. Football-Not-Soccer menggunakan orders.refund API tanpa meneruskan parameter pencabutan untuk mengembalikan dana pembelian jersey kepada pemenang.

Mencabut dan mengembalikan dana langganan berdasarkan token pembelian

Untuk kasus penggunaan tertentu, Anda mungkin perlu mencabut akses ke langganan pengguna dan memberikan pengembalian dana. Layanan Penagihan Play menawarkan metode pencabutan termasuk pengembalian dana penuh dan pengembalian dana prorata melalui subscriptionsv2.revoke API. Dengan endpoint ini, Anda dapat menentukan revocationContext untuk menentukan cara penghitungan pengembalian dana.

Tindakan ini akan memicu Notifikasi Developer Real Time SUBSCRIPTION_REVOKED. Aplikasi Anda harus menangani pembatalan ini seperti yang dijelaskan dalam Pencabutan.

Contoh:

  • Membeli dengan token pembelian 1a2b3c4d5e6f7g8h9i0j
  • Aplikasi dengan nama paket com.your.app
  • Maksud melakukan pengembalian dana prorata

Permintaan POST HTTP:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Isi permintaan:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Pengembalian dana penuh

Jika Anda perlu menghentikan langganan dan mengembalikan dana penuh untuk periode penagihan saat ini, lakukan pengembalian dana penuh. Gunakan fungsi purchases.subscriptionsv2.revoke, dan tetapkan "fullRefund": {} sebagai jenis pengembalian dana.

Contoh:

  1. Maria memiliki langganan 30 hari perpanjangan otomatis ke paket bulanan streaming SuperMovies. Maria mengalami beberapa masalah teknis yang mencegahnya mengakses konten. Dia menghubungi layanan pelanggan pada hari ke-3 siklus penagihannya dan menyatakan bahwa dia tidak pernah mendapatkan akses ke langganan.

  2. Layanan pelanggan menemukan detail pembelian langganan Maria di sistem mereka dan memicu panggilan ke purchases.subscriptionsv2.revoke untuk meminta pengembalian dana penuh.

  3. Layanan pelanggan memberi tahu Maria bahwa dia akan mendapatkan pengembalian dana 100% dari harga langganannya dan dia tidak lagi berlangganan paket tersebut.

Pengembalian dana prorata

Jika Anda perlu menghentikan langganan dan mengembalikan dana sebagian untuk sisa waktu hak, lakukan pengembalian dana prorata. Gunakan fungsi purchases.subscriptionsv2.revoke, dan tetapkan "proratedRefund": {} sebagai jenis pengembalian dana.

Contoh:

  1. Maria memiliki langganan 30 hari perpanjangan otomatis ke paket bulanan streaming SuperMovies. Dia telah menggunakan layanan ini dengan senang hati selama beberapa waktu. Maria menghubungi layanan pelanggan pada hari ke-15 siklus penagihannya dan menyatakan bahwa dia akan pindah ke luar negeri dan tidak dapat menggunakan layanan tersebut lagi mulai keesokan harinya.

  2. Layanan pelanggan menemukan detail pembelian langganan Maria di sistem mereka dan memicu panggilan ke purchases.subscriptionsv2.revoke untuk meminta pengembalian dana prorata.

  3. Layanan pelanggan memberi tahu Maria bahwa dia akan mendapatkan pengembalian dana sekitar 50% dari harga langganannya dan akses ke layanan tersebut akan segera dihentikan.