Semua artikel
PanduanWaktu baca 8 menit

Apple dan Google melakukan refund per toko, jadi langganan lintas platform Anda harus mengakhiri akses di semua tempat lain

Saat Apple atau Google melakukan refund atas langganan lintas platform, aplikasi Android, aplikasi iPhone, dan situs web Anda tidak mengetahuinya dengan sendirinya. Berikut cara mengaitkan setiap pembelian di toko ke satu akun, mencabut hak akses yang tepat, dan berhenti membayar untuk melayani pengguna yang sudah menerima refund.

Sebuah iPhone, sebuah ponsel Android, dan sebuah laptop berdampingan di atas meja, masing-masing masuk ke akun yang sama dari sebuah langganan lintas platform

Poin utama

  • App Review Guideline 3.1.3(b) dari Apple mengizinkan aplikasi yang beroperasi di beberapa platform memberi pengguna akses ke konten dan langganan yang diperoleh di platform lain atau di situs web pengembang, selama item tersebut juga tersedia sebagai pembelian dalam aplikasi di aplikasi itu.
  • Apple dan Google hanya melakukan refund atas pembelian di toko mereka sendiri, sehingga refund dari Apple atas langganan lintas platform tidak menjangkau penagihan Google Play atau web milik pelanggan. Server pengembang harus mencabut akses yang telah diberikannya di setiap platform.
  • Apple mengirim notifikasi REFUND melalui App Store Server Notifications V2 saat melakukan refund atas consumable, non-consumable, langganan non-perpanjangan, atau langganan perpanjangan otomatis, dan menyatakan bahwa pengembang bertanggung jawab untuk menyimpan, memantau, dan menindaklanjuti setiap transaksi yang di-refund.
  • appAccountToken dari Apple adalah UUID yang dilampirkan pengembang pada In-App Purchase, dan endpoint Set App Account Token di App Store Server API dapat menambahkannya belakangan pada pembelian yang dilakukan di luar aplikasi, misalnya kode penawaran yang ditukarkan.
  • setObfuscatedAccountId dari Google Play menautkan pembelian ke akun di aplikasi pengembang, dibatasi hingga 64 karakter, dan menyebabkan pembelian diblokir jika berisi data pribadi dalam teks biasa seperti email.
  • Voided Purchases API dari Google Play melaporkan pembelian yang di-refund dan terkena chargeback dengan orderId serta voidedSource bernilai 0 untuk User, 1 untuk Developer, atau 2 untuk Google.
  • Untuk pesanan Google Play yang dibuat setelah 3 Agustus 2026, pengembang menanggung harga pembelian, dikurangi biaya layanan Play, ditambah biaya chargeback dari bank saat chargeback berhasil.

Pelanggan Anda membayar ke Apple, membuka aplikasi Android Anda pada sore yang sama, dan kini memakai situs web Anda di kantor. Lalu Apple memberi mereka refund. Google Play tidak tahu. Penagihan web Anda tidak tahu. Kecuali server Anda sendiri yang mengakhiri akses, langganan lintas platform yang sudah di-refund tetap berfungsi di setiap layar yang membaca basis data akun Anda. Toko melakukan refund satu etalase pada satu waktu, dan sistem akun Anda adalah satu-satunya tempat langganan itu ada secara utuh. Karena itu, hanya di sanalah langganan tersebut bisa diakhiri.

Mengapa refund dari satu toko tidak mengakhiri langganan lintas platform

Apple mengizinkan pengaturan ini secara tegas. App Review Guideline 3.1.3(b), Multiplatform Services, menyatakan bahwa aplikasi yang beroperasi di beberapa platform boleh mengizinkan pengguna mengakses konten, langganan, atau fitur yang mereka peroleh di aplikasi Anda pada platform lain atau di situs web Anda, asalkan item tersebut juga tersedia sebagai pembelian dalam aplikasi di aplikasi itu.

Panduan Apple tentang menawarkan satu langganan di beberapa aplikasi menjelaskan cara kerjanya dalam praktik. Server Anda memberikan akses menggunakan basis data akun terpadu, dan setiap aplikasi membaca dari sana. Panduan yang sama memperingatkan bahwa jika sebuah pembelian tidak diteruskan ke aplikasi lain, pengguna bisa saja membayar lebih dari sekali untuk layanan yang sama.

Desain itu punya konsekuensi yang sering terlewat. Hak akses tersimpan di basis data Anda, tetapi setiap toko hanya mengetahui tanda terimanya sendiri. Apple dapat melakukan refund atas pembelian di iPhone dan memberi tahu server Anda. Apple tidak dapat memberi tahu aplikasi Android atau situs web Anda apa pun. Jika penangan refund hanya memperbarui klien iOS, pelanggan mendapatkan uangnya kembali dan tetap memegang langganan di semua tempat lain.

Tempat mereka membayarSiapa yang memutuskan refundCara server Anda mengetahuinyaSiapa yang dapat menghentikan perpanjangan
App StoreAppleNotifikasi REFUND di App Store Server Notifications V2Pelanggan, di pengaturan langganan App Store mereka atau di layar pengelolaan yang dibuka aplikasi Anda
Google PlayGoogle dalam 48 jam pertama, setelah itu Anda atau GoogleVoided Purchases API dan notifikasi developer real-timePelanggan, atau Anda melalui purchases.subscriptionsv2.cancel
Situs web AndaAndaWebhook dari pemroses pembayaran AndaAnda

Cara mencabut akses di setiap platform setelah refund

Kaitkan setiap pembelian di toko ke satu akun

Mencocokkan refund dengan seseorang adalah bagian tersulit, karena setiap toko mengidentifikasi pembeli dengan caranya sendiri. Keduanya menyediakan kolom untuk ID akun Anda sendiri. Gunakan kolom itu pada setiap pembelian.

  • Di Apple, tetapkan appAccountToken, yaitu UUID yang Anda buat, saat pembelian dimulai. App Store mengembalikan UUID yang sama dalam informasi transaksi dan perpanjangan. Apple menyatakan Anda dapat memakai satu nilai yang sama untuk setiap transaksi milik pelanggan yang sama.
  • Jika pelanggan membeli di luar aplikasi Anda, misalnya dengan menukarkan kode penawaran di App Store, transaksinya tidak memiliki token. Endpoint Set App Account Token menambahkannya. Untuk langganan perpanjangan otomatis, token berlaku untuk perpanjangan saat ini dan berikutnya, bukan transaksi sebelumnya, dan tidak berfungsi untuk pembelian yang dibagikan melalui Family Sharing.
  • Di Google Play, kirimkan ID akun tersamar dengan setObfuscatedAccountId saat Anda memulai alur penagihan. Panjangnya dibatasi hingga 64 karakter. Google menyatakan data pribadi dalam teks biasa seperti email akan membuat pembelian diblokir, dan merekomendasikan enkripsi atau hash satu arah.

Dengarkan kedua toko, lalu tulis satu hak akses

Apple mengirim REFUND saat melakukan refund atas jenis produk apa pun, termasuk langganan perpanjangan otomatis. Apple mengirim REFUND_REVERSED saat membatalkan refund yang sudah diberikan, karena sengketa yang diajukan pelanggan. Di Google Play, Voided Purchases API mencantumkan pembelian yang di-refund dan terkena chargeback, masing-masing dengan orderId yang mengidentifikasi pembelian atau perpanjangan secara tepat. Pemroses pembayaran web Anda mengirim peristiwa refund-nya sendiri. Ketiganya harus masuk ke penangan yang sama dan mengubah catatan yang sama.

Cabut hak aksesnya, bukan akunnya

Refund membatalkan sebuah pembelian, bukan seseorang. Hapus akses yang berasal dari pembelian yang di-refund, lalu hitung ulang apa yang masih dimiliki akun tersebut. Jika pelanggan juga memegang langganan aktif dari toko lain, mereka tetap memiliki akses melalui langganan itu. Jika tidak, setiap klien kehilangan fitur premium saat berikutnya memeriksa server Anda.

Saat orang yang sama berlangganan di dua toko

Langganan ganda adalah separuh masalah lainnya. Seseorang berlangganan di Android, membeli iPhone baru, tidak masuk ke akunnya, lalu berlangganan lagi. Kini mereka membayar dua kali untuk satu layanan, dan salah satu tagihan itu biasanya berubah menjadi permintaan refund. Tim commerce Apple, saat menjawab seorang pengembang di Apple Developer Forums, menyatakannya dengan sederhana: sistem akun aplikasi sebaiknya menyertakan logika untuk mencegah pembelian ganda di platform lain.

Periksa setiap toko sebelum menampilkan paywall

Minta pengguna masuk sebelum paywall, cari semua pembelian aktif mereka di server Anda, dan lewati penawaran jika salah satunya sudah mencakup platform ini. Satu pemeriksaan itu mencegah sebagian besar tagihan ganda sebelum terjadi.

Pembelian mana yang harus saya refund jika sudah terlanjur terjadi?

Refund pembelian yang Anda kendalikan. Di Google Play Anda dapat menerbitkan refund sendiri di Play Console, dan purchases.subscriptionsv2.cancel dengan DEVELOPER_REQUESTED_STOP_PAYMENTS menghentikan pembayaran berikutnya. Langganan web sepenuhnya milik Anda untuk di-refund. Refund App Store diputuskan oleh Apple, jadi jika duplikatnya ada di iPhone, pelanggan memintanya ke Apple, dan aplikasi Anda dapat membuka permintaan itu dengan API permintaan refund dari StoreKit.

Kerugian dari refund yang melewatkan satu platform

Harga yang di-refund hanyalah kerugian pertama. Pelanggan yang refund Apple-nya tidak pernah sampai ke aplikasi Android atau situs web Anda tetap memakai apa yang Anda bayar untuk dijalankan. Setiap sesi tetap menghabiskan daya komputasi. Setiap fitur AI tetap melakukan panggilan API pihak ketiga yang ditagihkan kepada Anda. File mereka tetap memakan penyimpanan, dan jika aplikasi Anda membayar kreator per tayangan atau per penggunaan, pembayaran itu terus keluar. Pada paket tahunan, ini bisa berarti biaya layanan selama setahun penuh untuk akun yang kini tidak membayar apa pun.

Jalur bank memperburuknya. Untuk pesanan Google Play yang dibuat setelah 3 Agustus 2026, Google menyatakan bahwa saat chargeback berhasil, pengembang bertanggung jawab atas harga pembelian, dikurangi biaya layanan Play, ditambah biaya chargeback yang dikenakan lembaga keuangan. Chargeback bersifat final di bank. Pelanggan yang melakukan chargeback dan masih memiliki akses telah membuat Anda menanggung harga, biaya, dan ongkos layanan sekaligus.

Apa yang tetap berjalan setelah pencabutan terlewatSiapa yang menanggungnya
Komputasi server untuk setiap sesi di Android atau webAnda
Panggilan API pihak ketiga yang dilakukan fitur AndaAnda
Penyimpanan untuk file dan riwayat penggunaAnda
Pembayaran per penggunaan atau per tayangan kepada kreatorAnda
Biaya chargeback pada pesanan Google Play setelah 3 Agustus 2026Anda, di luar harga pembelian dikurangi biaya layanan Play
Sebuah tangan memegang ponsel di samping laptop yang terbuka, dengan ponsel kedua tergeletak menghadap ke bawah, pemandangan sehari-hari pengguna langganan lintas platform

Penggunaan lintas platform tetap menjadi bukti

Satu akun di seluruh platform juga membantu saat toko meminta keterangan dari pihak Anda. Informasi konsumsi Apple menanyakan seberapa besar bagian dari consumable, non-consumable, atau langganan non-perpanjangan yang telah dipakai pelanggan. Untuk langganan perpanjangan otomatis, Anda tidak mengirim persentase, karena Apple menghitungnya dari waktu yang telah berlalu. Tinjauan chargeback Google Play menerima hingga 1.000 peristiwa penggunaan konsumsi, yang masing-masing dapat membawa ID akun tersamar. Penggunaan yang tercatat di bawah satu ID akun, dari perangkat mana pun asalnya, adalah penggunaan yang dapat Anda tunjukkan.

Refund mana yang tidak pernah meminta keterangan dari Anda

Sebagian besar refund diputuskan tanpa melibatkan Anda. Google Play dapat melakukan refund atas pembelian dalam 48 jam melalui alur refund-nya sendiri. Refund oleh dukungan toko, pembelian yang dibatalkan, dan refund otomatis Google atas pembelian yang tidak pernah Anda konfirmasi, sekitar 72 jam, semuanya terjadi lebih dulu dan baru dilaporkan setelahnya. Untuk kasus-kasus itu, logika pencabutan di atas adalah keseluruhan tugasnya.

Hanya dua alur yang meminta bukti. CONSUMPTION_REQUEST dari Apple memberi Anda waktu 12 jam untuk mengirim informasi konsumsi. Tinjauan chargeback Google Play memberi Anda waktu 24 jam sejak PendingRefundReviewNotification untuk menjawab melalui orders.reviewrefund, dan Google hanya mencatat panggilan pertama Anda. RefundHalt menjawab keduanya dalam batas waktu, menggunakan data penggunaan yang sudah Anda kumpulkan, yang terikat ke akun yang sama di seluruh aplikasi Anda.

Daftar periksa singkat untuk refund lintas platform

  • Tetapkan appAccountToken pada pembelian Apple dan ID akun tersamar pada pembelian Google Play.
  • Lengkapi token Apple yang hilang dengan Set App Account Token untuk penukaran kode penawaran.
  • Arahkan REFUND dan REFUND_REVERSED dari Apple, pembelian yang dibatalkan di Google Play, dan refund web ke satu penangan.
  • Simpan setiap pembelian beserta sumbernya, dan hitung akses dari semua pembelian aktif.
  • Periksa pembelian di setiap toko sebelum menampilkan paywall di platform mana pun.

Pertanyaan yang sering diajukan

Bolehkah saya mengizinkan pengguna iPhone mengakses langganan yang mereka beli di Android atau situs web saya?
Boleh. App Review Guideline 3.1.3(b) dari Apple mengizinkan aplikasi yang beroperasi di beberapa platform memberi pengguna akses ke konten, langganan, atau fitur yang diperoleh di platform lain atau di situs web Anda, selama item tersebut juga tersedia sebagai pembelian dalam aplikasi di aplikasi iPhone.
Jika Apple memberi refund kepada pelanggan, apakah Google Play atau penagihan web saya mengetahuinya?
Tidak. Apple memberi tahu server Anda melalui notifikasi REFUND di App Store Server Notifications V2, dan tidak ada pihak lain yang diberi tahu. Server Anda harus mencabut akses yang diberikan pembelian itu di Android, di web, dan di mana pun akun tersebut masuk.
Bagaimana cara mencocokkan refund App Store dengan akun pengguna?
Gunakan appAccountToken, yaitu UUID yang dilampirkan aplikasi Anda pada pembelian, yang dikembalikan App Store dalam informasi transaksi. Untuk pembelian di luar aplikasi Anda, seperti penukaran kode penawaran, endpoint Set App Account Token dari Apple menambahkan atau mengganti token tersebut. Endpoint ini tidak mendukung transaksi Family Sharing.
Seorang pelanggan berlangganan di App Store dan Google Play sekaligus. Mana yang harus saya refund?
Refund yang Anda kendalikan. Anda dapat me-refund pesanan Google Play di Play Console dan menghentikan pembayaran berikutnya dengan purchases.subscriptionsv2.cancel. Apple yang memutuskan refund App Store, jadi duplikat di iPhone diproses melalui permintaan refund ke Apple, yang dapat dibuka aplikasi Anda dengan StoreKit.
Apakah penggunaan di situs web atau aplikasi Android saya dihitung sebagai bukti dalam tinjauan refund?
Penggunaan yang tercatat di bawah satu akun dapat mendukung jawaban Anda. Informasi konsumsi Apple menanyakan seberapa besar bagian dari consumable, non-consumable, atau langganan non-perpanjangan yang telah dipakai, dan tinjauan chargeback Google Play menerima hingga 1.000 peristiwa penggunaan yang dapat membawa ID akun tersamar.

Sumber dan bacaan lanjutan

RefundHalt

Autopilot refund untuk App Store dan Google Play

Baca selanjutnya

Permintaan refund berikutnya sudah menuju kepada Anda.

Siapkan RefundHalt dalam waktu yang dibutuhkan untuk membaca satu lagi email dukungan tentang refund yang tidak sempat Anda sengketakan.