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 memberikan pengembalian dana total 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 dimulai 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 secara sukarela adalah dengan menyediakan deep link di aplikasi Anda ke Play Store, tempat mereka dapat melihat dan mengelola langganan mereka.

Pembatalan yang dimulai oleh developer

Sebagai developer, Anda mungkin juga perlu memicu pembatalan dari backend. API purchases.subscriptions.cancel 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. Semua pembayaran cicilan akan berlanjut selama sisa periode komitmen saat ini. Dari Play Store, pengguna dapat memulihkan langganan sebelum masa berlakunya berakhir, atau berlangganan kembali setelah masa berlakunya berakhir jika diaktifkan untuk paket dasar.

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

Memungkinkan pengguna memulihkan langganan yang belum habis masa berlakunya

Dalam beberapa skenario, Anda mungkin merasa perlu 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 dapat menentukan pembatalan mana yang dipicu dari backend yang dapat dipulihkan oleh pengguna.

Untuk menunjukkan bahwa pengguna dapat memulihkan pembatalan, buat 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 untuk berlangganan kembali langganan yang sudah habis masa berlakunya

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

Mengizinkan pengguna untuk berlangganan lagi hanya di aplikasi Anda

Jika Anda telah menetapkan parameter cancellationType ke DEVELOPER_REQUESTED_STOP _PAYMENTS atau belum menetapkan parameter cancellationType, pengguna tidak dapat memulihkan langganan mereka dari pusat langganan Play. Namun, pengguna dapat mendaftar lagi untuk 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

Gunakan subscriptions.defer untuk memperpanjang periode hak untuk langganan. Selama periode penundaan, pengguna tetap berlangganan konten Anda meskipun tidak dikenai biaya untuk waktu tambahan. Saat Anda menunda penagihan untuk langganan, informasi status akan diperbarui dan Anda akan melihatnya tercermin di kolom expiryTime dalam informasi status pembelian:

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

Beberapa contoh cara menggunakan penagihan tertunda adalah:

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

Penagihan dapat ditunda selama minimal satu hari dan maksimal 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 setiap pelanggan yang berolahraga dengan FitnessGoals minimal 10 kali selama bulan Februari.

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

  4. Pengguna ini mendapatkan manfaat video olahraga reguler selama sebulan penuh tanpa biaya, dan pengguna tersebut memberi tahu semua teman mereka tentang cara FitnessGoals membantu mereka tetap sehat.

Memberikan pengembalian dana dan pencabutan

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

Mengembalikan dana penuh untuk pesanan berdasarkan ID pesanan

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

Jika Anda mengeluarkan pencabutan dengan panggilan pengembalian dana untuk pembelian langganan, langganan akan segera dihentikan dan memicu Notifikasi Developer Real Time SUBSCRIPTION_REVOKED. Baca bagian Pembatalan dalam panduan pengelolaan siklus proses langganan untuk mempelajari cara menangani peristiwa ini.

Contoh:

  1. Untuk merayakan awal piala dunia baru, aplikasi e-sports Football-Not-Soccer memutuskan untuk mengadakan undian jersey virtual gratis bagi semua pengguna yang membeli kit tim baru dalam 24 jam pertama.

  2. Football-Not-Soccer menggunakan orders.refund API tanpa meneruskan parameter pembatalan 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 pengembalian dana dihitung.

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

Contoh:

  • Pembelian dengan token pembelian 1a2b3c4d5e6f7g8h9i0j
  • Aplikasi dengan nama paket com.your.app
  • Niat untuk 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 sebesar jumlah penuh periode penagihan saat ini, berikan pengembalian dana penuh. Gunakan fungsi purchases.subscriptionsv2.revoke, dan tetapkan "fullRefund": {} sebagai jenis pengembalian dana.

Contoh:

  1. Maria memiliki langganan 30 hari dengan perpanjangan otomatis ke paket streaming bulanan SuperMovies. Maria mengalami beberapa masalah teknis yang mencegahnya mengakses konten. Dia menghubungi layanan pelanggan pada hari ke-3 siklus penagihan 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 ia akan mendapatkan pengembalian dana sebesar 100% dari harga langganannya dan ia tidak lagi berlangganan paket tersebut.

Pengembalian dana prorata

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

Contoh:

  1. Maria memiliki langganan 30 hari dengan perpanjangan otomatis ke paket streaming bulanan SuperMovies. Ia 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 akan dapat menggunakan layanan lagi mulai hari berikutnya.

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

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