Semua artikel
PlaybookWaktu baca 8 menit

Jika aplikasi Anda masih memakai App Store Server Notifications V1, Apple tidak pernah menanyakan pengembalian dana langganan kepada Anda

Apple menghentikan dukungan App Store Server Notifications V1 pada Juni 2023, dan versi itu tidak pernah mendapatkan CONSUMPTION_REQUEST untuk langganan, REFUND_DECLINED, maupun REFUND_REVERSED. Inilah yang terlewat oleh server V1, berapa kerugiannya, dan cara pindah ke V2 tanpa kehilangan satu pun pengembalian dana.

Kotak surat tua yang penuh dengan surat belum dibuka di samping rak server modern, menggambarkan sinyal pengembalian dana yang hilang di App Store Server Notifications V1

Poin utama

  • Apple menghentikan dukungan App Store Server Notifications V1 dan endpoint verifyReceipt pada 5 Juni 2023. Keduanya masih berfungsi, tidak menerima fitur baru, dan belum memiliki tanggal akhir masa pakai yang diumumkan.
  • Dokumentasi V1 Apple mencantumkan CONSUMPTION_REQUEST hanya untuk pembelian dalam aplikasi jenis consumable. Permintaan konsumsi untuk langganan perpanjangan otomatis ditambahkan ke App Store Server Notifications V2 pada April 2024.
  • REFUND_DECLINED dan REFUND_REVERSED hanya ada di App Store Server Notifications V2, sehingga server V1 tidak pernah tahu bahwa Apple menolak pengembalian dana atau menariknya kembali.
  • Di V1, pengembalian dana Apple untuk langganan perpanjangan otomatis datang sebagai CANCEL. Di V2, pengembalian dana datang sebagai REFUND dengan revocationDate dan revocationReason pada transaksi yang ditandatangani.
  • Apple mencoba ulang notifikasi V2 yang gagal sebanyak lima kali dalam sekitar satu minggu, setelah 1, 12, 24, 48, dan 72 jam. Notifikasi V1 yang gagal hanya mendapat tiga percobaan ulang, setelah 6, 24, dan 48 jam, dan tidak bisa dipulihkan melalui Get Notification History.
  • Setelah aplikasi beralih ke V2 di App Store Connect, notifikasi baru langsung datang dalam format V2, sementara notifikasi V1 yang sedang dicoba ulang masih bisa terus datang selama sekitar 78 jam.

Version 1 dari App Store Server Notifications masih mengirimkan pengembalian dana, tetapi tidak menyertakan satu notifikasi yang memungkinkan Anda membela diri dalam pengembalian dana langganan. Apple menghentikan dukungan V1 pada 5 Juni 2023, bersamaan dengan endpoint verifyReceipt, dan sejak itu menambahkan setiap fitur pengembalian dana hanya ke V2. Jika pengaturan App Store Connect Anda masih menunjukkan Version 1, Apple bisa memutuskan pengembalian dana langganan tanpa pernah mengirimkan CONSUMPTION_REQUEST ke server Anda. Anda tidak kalah dalam perdebatan itu. Anda memang tidak pernah diundang.

Arti penghentian dukungan App Store Server Notifications V1 oleh Apple

Dihentikan dukungannya tidak berarti dimatikan. Seorang engineer Apple menulis di forum developer pada Juni 2023 bahwa verifyReceipt dan notifikasi V1 akan tetap berfungsi sampai tanggal akhir masa pakai diumumkan, bahwa tanggal itu belum ditetapkan, dan bahwa developer akan diberi tahu sebelumnya. Lebih dari tiga tahun kemudian, App Store Connect masih menawarkan "Version 1 (deprecated)" sebagai pilihan saat Anda mengatur URL server.

Yang sebenarnya berarti adalah pembekuan. Setiap perubahan di changelog notifikasi Apple sejak Juni 2023 adalah perubahan V2: field baru pada transaksi yang ditandatangani, jenis notifikasi baru, data komitmen 12 bulan yang ditambahkan pada April 2026. Server V1 tidak melihat satu pun dari semua itu.

Sinyal pengembalian dana yang tidak pernah diterima server V1

Berikut cara peristiwa pengembalian dana yang sama sampai ke server V1 dan server V2, menurut dokumentasi Apple untuk masing-masing versi.

Peristiwa pengembalian danaVersion 1Version 2
Pelanggan meminta Apple mengembalikan dana untuk consumableCONSUMPTION_REQUESTCONSUMPTION_REQUEST
Pelanggan meminta Apple mengembalikan dana untuk langganan perpanjangan otomatisTidak tercantum di dokumentasi V1CONSUMPTION_REQUEST, sejak April 2024
Apple mengembalikan dana langganan perpanjangan otomatisCANCELREFUND
Apple mengembalikan dana consumable, non-consumable, atau langganan tanpa perpanjanganREFUNDREFUND
Apple menolak pengembalian dana yang dimulai pelanggan di aplikasi AndaTidak tersediaREFUND_DECLINED
Apple membatalkan pengembalian dana yang sudah diberikanTidak tersediaREFUND_REVERSED
Anda memulihkan notifikasi yang terlewat saat gangguanTidak tersediaGet Notification History

Apakah V1 masih menerima CONSUMPTION_REQUEST?

Ya, untuk consumable. Referensi V1 Apple menjelaskan CONSUMPTION_REQUEST sebagai notifikasi yang dikirim saat pelanggan memulai permintaan pengembalian dana untuk pembelian dalam aplikasi jenis consumable. Seorang engineer Apple mengonfirmasi di forum pada 2023 bahwa permintaan konsumsi V1 dikirim untuk pengembalian dana yang memenuhi syarat. Celahnya ada pada langganan. Changelog Apple mencatat permintaan konsumsi untuk langganan mulai 11 April 2024, di V2, dan dokumentasi Send Consumption Information menyebutkan bahwa Apple mengirim permintaan itu melalui endpoint V2 Anda.

Mengapa CANCEL di V1 mudah disalahartikan

Di V1, saat Apple mengembalikan dana langganan, jenis notifikasinya adalah CANCEL, sering kali disertai DID_CHANGE_RENEWAL_STATUS. Banyak server menganggap setiap pembatalan sebagai pelanggan yang mematikan perpanjangan otomatis, sehingga akses tetap berjalan sampai periode berakhir. V2 menghilangkan ambiguitas itu. Pengembalian dana datang sebagai REFUND, dan pelanggan yang mematikan perpanjangan datang sebagai DID_CHANGE_RENEWAL_STATUS dengan subtipe AUTO_RENEW_DISABLED.

Kerugian finansial jika tetap di V1

Apple memutuskan setiap pengembalian dana App Store. CONSUMPTION_REQUEST adalah satu-satunya titik di mana data penggunaan Anda sampai ke keputusan itu, dan Apple meminta Anda menjawab dalam 12 jam. Di V1, pengembalian dana langganan melewati langkah tersebut.

Berikut contoh perhitungan dengan angka ilustratif. Misalkan aplikasi Anda menjual langganan bulanan $9.99 yang mencakup pembuatan gambar AI. Seorang pelanggan menjalankan 400 pembuatan gambar dalam sebulan, dan masing-masing menelan biaya nyata untuk inferensi model. Lalu pelanggan itu meminta pengembalian dana ke Apple.

Pos biayaServer V1Server V2
Bagian pembayaran AndaDikembalikan jika Apple menyetujuiDikembalikan jika Apple menyetujui
Komputasi, panggilan API, dan penyimpanan yang dipakai bulan ituSudah dibayar, tidak bisa dipulihkanSudah dibayar, tidak bisa dipulihkan
Kesempatan menunjukkan 400 pembuatan gambar kepada AppleTidak adaSatu CONSUMPTION_REQUEST, 12 jam
Mengetahui Apple menolak pengembalian danaTidak pernahREFUND_DECLINED
Mengetahui pengembalian dana dibatalkanTidak pernahREFUND_REVERSED

Pembayaran yang hilang adalah bagian Anda, bukan harga jualnya. Apple membayar 70% dari harga langganan, dikurangi pajak yang berlaku, selama tahun pertama layanan berbayar pelanggan, dan 85% setelahnya atau untuk anggota App Store Small Business Program. Tagihan komputasi tidak ikut menyusut. Inferensi, panggilan API pihak ketiga, dan penyimpanan file sudah dibayar saat pelanggan menggunakannya.

Dua notifikasi hasil yang hilang juga menimbulkan kerugian. Tanpa REFUND_REVERSED, server yang mencabut akses saat pengembalian dana tidak pernah memulihkannya ketika Apple menarik kembali pengembalian dana itu, sehingga pelanggan yang membayar tetap terkunci dan menghubungi tim dukungan. Tanpa REFUND_DECLINED, Anda tidak bisa membedakan pengembalian dana yang masih tertunda dari yang sudah ditolak Apple.

Tangan seorang developer memindahkan kabel jaringan dari port patch panel lama ke port baru di samping laptop yang terbuka

Cara migrasi dari V1 ke V2 tanpa kehilangan pengembalian dana

Pindah ke V2 berarti satu perubahan server ditambah satu pengaturan. Panduan Apple sendiri di forum, dari seorang App Store Commerce Engineer pada Desember 2025, menjelaskan apa yang terjadi pada hari Anda beralih.

Bangun endpoint V2 sebelum mengubah pengaturan

  • Terima POST yang body-nya berisi signedPayload. Payload V2 berformat JWS dan ditandatangani oleh Apple, jadi verifikasi tanda tangannya sebelum memercayai isinya. App Store Server Library dari Apple melakukannya untuk Anda.
  • Ubah penanganan CANCEL menjadi REFUND, dan tangani REFUND_DECLINED serta REFUND_REVERSED sebagai kasus baru.
  • Jawab CONSUMPTION_REQUEST untuk langganan dengan Send Consumption Information, dan hanya jika pelanggan menyetujui berbagi data dengan Apple. Apple menyatakan bahwa tanpa persetujuan, Anda sebaiknya tidak merespons.
  • Kembalikan HTTP 200 sampai 206 jika berhasil. Kode 40x atau 50x apa pun membuat Apple mencoba ulang.

Ubah pengaturan di App Store Connect

Di App Store Connect, buka aplikasi Anda, pilih App Information di bagian General, temukan App Store Server Notifications, lalu atur Production Server URL ke endpoint V2 Anda dengan Version 2 dipilih. Lakukan hal yang sama untuk URL sandbox terlebih dahulu jika ingin menguji, dan gunakan Request a Test Notification untuk memastikan server Anda merespons.

Biarkan handler V1 tetap aktif selama sekitar tiga hari

Setelah beralih, notifikasi baru langsung datang dalam format V2, untuk setiap langganan, lama maupun baru. Notifikasi V1 yang sudah dalam percobaan ulang terus datang dalam format V1 sampai berhasil atau habis. Apple menyebut percobaan ulang V1 terakhir yang mungkin terjadi sekitar 78 jam, yaitu 6 plus 24 plus 48. Biarkan handler lama berjalan melewati waktu itu, lalu hapus.

Sekalian ganti verifyReceipt

verifyReceipt dihentikan dukungannya pada hari yang sama. Endpoint itu masih merespons, tetapi Apple mengarahkan server ke App Store Server API sebagai gantinya. Get Transaction Info mengembalikan satu transaksi yang ditandatangani, Get Transaction History mengembalikan riwayat pelanggan, dan Get Refund History mencantumkan setiap pembelian yang dananya dikembalikan untuk seorang pelanggan. Bersama notifikasi V2, semuanya mencakup apa yang dulu diambil sebagian besar server dari receipt, termasuk field cancellation_date yang dulu menandai pengembalian dana di dalam receipt.

RefundHalt terhubung ke App Store Server Notifications V2 dan menjawab setiap CONSUMPTION_REQUEST dalam jendela 12 jam, menggunakan data penggunaan yang sudah dicatat aplikasi Anda. Jika Anda masih memakai V1, beralih adalah langkah yang membuat semua itu menjadi mungkin.

Pertanyaan yang sering diajukan

Apakah App Store Server Notifications V1 akan dimatikan?
Belum. Apple menghentikan dukungan V1 dan verifyReceipt pada 5 Juni 2023, dan keduanya masih berfungsi. Apple menyatakan belum ada tanggal akhir masa pakai dan developer akan diberi tahu sebelumnya. Sementara itu, V1 tidak menerima fitur baru.
Apakah saya menerima notifikasi CONSUMPTION_REQUEST di V1?
Hanya untuk consumable, menurut dokumentasi V1 Apple. Permintaan konsumsi untuk langganan perpanjangan otomatis ditambahkan ke V2 pada April 2024, dan Apple mengirimkannya melalui endpoint V2 Anda. Jika Anda menjual langganan dan tetap di V1, Anda tidak bisa menjawab permintaan pengembalian dana tersebut.
Seperti apa pengembalian dana langganan di V1 dibandingkan V2?
Di V1, pengembalian dana datang sebagai CANCEL, sering kali dengan DID_CHANGE_RENEWAL_STATUS. Di V2, pengembalian dana datang sebagai REFUND, dengan revocationDate dan revocationReason pada transaksi yang ditandatangani. V2 juga mengirim REFUND_DECLINED saat Apple menolak pengembalian dana yang dimulai di aplikasi Anda, dan REFUND_REVERSED saat Apple menarik kembali pengembalian dana yang sudah diberikan.
Apa yang terjadi pada notifikasi saat saya beralih dari V1 ke V2?
Notifikasi baru datang dalam format V2 tidak lama setelah Anda beralih, untuk semua langganan. Notifikasi V1 yang sedang dicoba ulang terus datang dalam format V1 sampai berhasil atau percobaan ulangnya habis, yang menurut Apple sekitar 78 jam setelah peralihan. Biarkan kedua handler berjalan selama jangka waktu itu.
Bisakah saya kembali ke V1 setelah beralih ke V2?
Bisa, melalui endpoint Modify an App di App Store Connect API, seperti yang dijelaskan dalam technote TN3180 dari Apple. Apple menyebutnya kasus yang tidak biasa dan tetap menandai V1 sebagai deprecated, jadi kembali ke V1 berarti melepaskan permintaan konsumsi untuk langganan dan notifikasi pengembalian dana yang lebih baru.

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.