Bayaran balik App Store: apa yang pembangun nampak
Oleh Mehdi Azizi
Diterbitkan pada , 8 min
Bayaran balik App Store diputuskan oleh Apple sahaja. Pembangun terima CONSUMPTION_REQUEST, boleh membalas dalam 12 jam, kemudian tahu keputusan melalui REFUND.
Di App Store, Apple yang meluluskan atau menolak bayaran balik, bukan pembangun. Pelanggan membuat permintaan di laman Apple atau dari dalam app anda. Jika anda sudah menyambungkan notifikasi pelayan Apple, anda akan menerima notifikasi CONSUMPTION_REQUEST semasa permintaan dibuat, kemudian REFUND atau REFUND_DECLINED apabila keputusan dibuat. Di antara kedua-duanya, anda ada 12 jam untuk menghantar data penggunaan dan pilihan anda, dengan syarat pelanggan sudah memberi persetujuan.
Bayaran balik yang diluluskan akan mengeluarkan pembelian itu daripada hak aktif pelanggan dan muncul sebagai nilai negatif dalam laporan jualan anda. Panduan ini menerangkan setiap langkah, apa yang boleh anda hantar kepada Apple, dan apa yang anda dibenarkan buat terhadap permintaan yang menyalahgunakan sistem. Peraturannya diambil daripada halaman Apple yang saya semak semula pada 3 November 2026. Kes sebenar pula datang daripada amaran yang saya pasang pada app saya pada bulan Oktober.
Siapa yang memutuskan bayaran balik App Store?
Apple, dan hanya Apple. Halaman sokongan Apple menerangkan perjalanan pelanggan: dia log masuk ke reportaproblem.apple.com, pilih "Request a refund", nyatakan sebab, kemudian pilih pembelian yang berkenaan. Apple menasihatinya supaya menunggu 24 hingga 48 jam untuk mendapat jawapan.
Pelanggan juga boleh meminta bayaran balik dari dalam app anda. StoreKit menyediakan helaian permintaan untuk tujuan ini, tersedia sejak iOS 15. Apple menyarankan supaya ia dipanggil dari tetapan akaun atau menu bantuan. Helaian ini memaparkan pembelian dan senarai sebab, dan Apple mengambil masa sehingga 48 jam untuk membuat keputusan.
Dalam kedua-dua kes, anda tidak perlu meluluskan apa-apa. Anda hanya boleh memberi maklumat dan pilihan, yang menjadi antara beberapa kriteria dalam keputusan Apple.
Apa yang dilihat setiap pihak, langkah demi langkah
| Langkah | Pihak pelanggan | Pihak pembangun |
|---|---|---|
| Permintaan | Borang Apple atau helaian dalam app | Notifikasi CONSUMPTION_REQUEST |
| Dalam 12 jam | Menunggu | Boleh menghantar data penggunaan |
| Dalam 48 jam | Jawapan daripada Apple | Notifikasi REFUND atau REFUND_DECLINED |
| Selepas diluluskan | Wang dipulangkan ke kaedah pembayarannya | Pembelian dikeluarkan dari hak aktif, unit negatif |
| Selepas bantahan | Bayaran balik dibatalkan oleh Apple | Notifikasi REFUND_REVERSED, akses perlu dipulihkan |
App Store Connect hanya menunjukkan bayaran balik yang sudah diluluskan, dalam Sales and Trends. Permintaan itu sendiri hanya sampai melalui notifikasi pelayan. Tanpanya, anda hanya tahu tentang bayaran balik selepas ia berlaku.
Notifikasi pelayan untuk bayaran balik
App Store Server Notifications V2 menghantar lima jenis yang berguna di sini. Anda menerimanya di alamat HTTPS yang didaftarkan dalam App Store Connect, satu untuk production dan satu untuk sandbox.
| Notifikasi | Apa yang diumumkan | Apa yang anda buat |
|---|---|---|
CONSUMPTION_REQUEST | Pelanggan meminta bayaran balik | Balas dalam 12 jam, jika ada persetujuan |
REFUND | Apple telah membayar balik transaksi | Keluarkan kandungan atau akses yang dibayar balik |
REFUND_DECLINED | Apple menolak permintaan | Tiada apa-apa, akses diteruskan |
REFUND_REVERSED | Apple membatalkan bayaran balik selepas bantahan pelanggan | Pulihkan apa yang anda keluarkan |
REVOKE | Pembelian yang dikongsi melalui Perkongsian Keluarga tidak lagi tersedia | Keluarkan akses ahli keluarga itu |
Pelayan anda mesti membalas dengan kod HTTP antara 200 dan 206. Menurut halaman tentang membalas notifikasi, jika tidak, Apple akan mencuba semula lima kali, iaitu 1, 12, 24, 48 dan kemudian 72 jam selepas cubaan sebelumnya. Dalam sandbox, ia hanya menghantar sekali.
Consumption API: apa yang boleh anda beritahu Apple
Apabila permintaan sampai, anda boleh membalas dengan Send Consumption Information. Peraturannya hanya satu ayat daripada Apple: "Respond within 12 hours of receiving the CONSUMPTION_REQUEST notification." Versi 2 API ini terpakai untuk semua jenis produk, termasuk langganan.
Medan dalam permintaan:
| Medan | Wajib | Apa yang diberitahu kepada Apple |
|---|---|---|
customerConsented | Ya | Pelanggan bersetuju untuk berkongsi datanya |
deliveryStatus | Ya | Pembelian telah dihantar dan berfungsi, atau sebab ia tidak dihantar |
sampleContentProvided | Ya | Percubaan, petikan atau penerangan ditawarkan sebelum pembelian |
consumptionPercentage | Tidak | Bahagian yang telah digunakan, dari 0 hingga 100 000 untuk 0 hingga 100 % |
refundPreference | Tidak | Pilihan anda: DECLINE, GRANT_FULL atau GRANT_PRORATED |
Dua perkara penting. Jika deliveryStatus bukan DELIVERED, bahagian yang digunakan mesti bernilai sifar. Dan untuk bayaran balik prorata bagi langganan, anda tidak perlu menyertakan bahagian yang digunakan: Apple yang mengiranya.
Persetujuan ialah syarat utama. Apple menulis: "You must obtain valid consent from the customer before sharing their personal data with Apple in the Send Consumption Information API." Tanpa persetujuan, anda tidak membalas. Apple juga melarang penggunaan tetingkap penjejakan iklan untuk mendapatkan persetujuan ini: "Don't use the AppTrackingTransparency prompt to obtain consent".
Jika anda menggunakan RevenueCat
Dengan RevenueCat, RevenueCat yang menerima notifikasi Apple dan membalas permintaan, melalui Refund Control. Anda memilih satu daripada empat polisi: utamakan bayaran balik penuh, utamakan penolakan, hantar data penggunaan sahaja, atau tidak membalas.
Mengaktifkan perkongsian data bermakna anda mengesahkan bahawa anda mempunyai persetujuan pelanggan. RevenueCat sendiri menyatakannya: "Enabling consumption data sharing confirms that you obtained consent from your Customers." Ia juga menasihatkan supaya "Prefer no refund" dikhaskan untuk kumpulan tertentu, dan memberi amaran apabila pilihan ini melibatkan kebanyakan pelanggan anda.
Untuk menerima notifikasi di pelayan anda sendiri juga, RevenueCat menyediakan medan "Apple Server Notification Forwarding URL" dalam tetapan app. Ia diterangkan dalam halamannya tentang notifikasi Apple. Inilah yang saya gunakan. Cara menyediakan langganan dengan RevenueCat ada dalam RevenueCat dan langganan dalam app iOS.
Kesan pada hasil anda dan pada langganan
Pada akses. Menurut dokumentasi currentEntitlements, "Products that the App Store has refunded or revoked don't appear in the current entitlements". Jika app anda menyemak hak dengan currentEntitlements, akses yang dibayar balik akan hilang dengan sendirinya. Transaksi itu menyimpan tarikh dan sebab penarikan, dalam revocationDate dan revocationReason.
Pada laporan. Menurut bantuan laporan jualan, bayaran balik muncul dengan unit dan harga pelanggan yang negatif. Untuk langganan, halaman tentang data langganan mengira bayaran balik penuh dan separa sebagai peristiwa, dan menolaknya daripada unit harian.
Pada reputasi anda. Guideline 5.6.4 menyenaraikan permintaan bayaran balik yang berlebihan sebagai antara tanda kualiti yang tidak mencukupi. Kadar bayaran balik yang tinggi bukan sekadar kerugian wang: Apple boleh mengambil kiranya untuk menilai pematuhan anda terhadap kod tatalaku.
Kes saya: amaran yang dipasang pada app saya
Pada 12 Oktober 2026, saya memasang amaran pada app saya. RevenueCat memanjangkan notifikasi Apple ke satu laluan di devoria.fr. Laluan itu mengesahkan tandatangan Apple, kemudian menghantar amaran kepada saya, tanpa jumlah wang. Saya mahu melihat permintaan sebaik sahaja ia sampai, bukan hanya keputusannya.
Pada 18 Oktober, permintaan sebenar yang pertama sampai untuk TradaZen, simulator dagangan saya. Langganan tahunan, dibayar pada penghujung percubaan percuma 7 hari. Sebab yang dinyatakan: pembelian tidak sengaja. Tiga pengajaran:
- Permintaan yang sama boleh sampai beberapa kali. Saya menerima amaran yang sama tiga kali pada malam yang sama. Sejak itu, setiap amaran dinyahduakan berdasarkan jenis notifikasi dan ID transaksi.
- Keputusan sampai dalam masa kurang sehari. Apple menolak kira-kira 22 jam selepas permintaan. Pelanggan itu mengekalkan aksesnya.
- Penolakan bukan pengakhiran. Pelanggan yang sama membuat permintaan semula dua hari kemudian, untuk transaksi yang sama.
Permintaan atas sebab "pembelian tidak sengaja" pada penghujung percubaan tidak dimenangi melalui jawapan kepada Apple. Ia dicegah di paywall, sebelum bayaran pertama.
Mengehadkan permintaan yang menyalahgunakan sistem tanpa melanggar peraturan
Apa yang dibenarkan:
- Membalas setiap permintaan dengan data yang tepat, apabila pelanggan sudah bersetuju.
- Menyatakan pilihan yang disasarkan, contohnya penolakan untuk pembelian yang sudah digunakan, bukannya penolakan untuk semua orang.
- Mengaitkan setiap
REFUNDdengan akaun pelanggan. Halaman Apple tentang notifikasi bayaran balik mengesyorkannya untuk mengesan bayaran balik berulang. - Menyatakan dengan jelas apa yang dibeli sebelum pembelian. Guideline 3.1.2(c) meminta anda menerangkan apa yang pengguna dapat untuk harga itu, sebelum menawarkan langganan.
Apa yang dilarang:
- Menghantar data palsu supaya permintaan ditolak, atau membalas tanpa persetujuan.
- Mendapatkan persetujuan melalui tetingkap penjejakan iklan, yang Apple larang secara jelas.
- Memerangkap pembelian. Guideline 5.6 melarang mendorong pelanggan membuat pembelian yang tidak dikehendaki atau mengenakan bayaran untuk sesuatu yang tidak dihantar.
- Menekan pelanggan yang meminta bayaran balik. Peraturan yang sama mewajibkan sikap hormat dalam khidmat pelanggan, tanpa ugutan.
Senjata terbaik tetap di peringkat awal: paywall yang menyatakan harga, tarikh bayaran pertama dan cara untuk membatalkan. Kesilapan yang perlu dielakkan ada dalam kesilapan paywall, dan peraturan percubaan ada dalam percubaan percuma di App Store.
Uji sebelum production
Menurut halaman tentang menguji permintaan, sandbox dan ujian StoreKit dalam Xcode menerima permintaan bayaran balik. Dalam sandbox, sebarang sebab akan mencetuskan kelulusan automatik. Untuk mensimulasikan penolakan, pilih "Other" dan taip DECLINE. Untuk bayaran balik prorata, taip GRANT_PRORATED. Dalam sandbox, jawapan penggunaan anda mesti dihantar dalam masa lima minit.
Langganan yang kurang dibayar balik
iOS & Android Kit bermula daripada kod app saya, dengan onboarding, paywall dan langganan yang sudah siap dikod, dan mengikuti empat langkah sehingga ke App Store, mengikut rentak anda. Persediaan lengkapnya diterangkan di halaman langganan dalam app iOS, dan peraturan Apple tentang langganan dalam guideline 3.1.2.
Sebelum melancarkan paywall anda, buat diagnostik percuma anda: ia memberitahu apa yang benar-benar menghalang projek anda dan menghantar senarai semak anti-penolakan Apple saya.
Soalan lazim
Bolehkah pembangun menolak bayaran balik App Store?
Tidak. Apple yang memutuskan sendiri. Anda boleh menghantar data penggunaan dan pilihan, contohnya DECLINE, yang menjadi antara beberapa kriteria. Apple tetap membuat keputusan muktamad.
Adakah pembangun dimaklumkan tentang permintaan bayaran balik?
Ya, jika dia sudah menyambungkan App Store Server Notifications V2. Apple menghantar CONSUMPTION_REQUEST semasa permintaan dibuat, kemudian REFUND atau REFUND_DECLINED apabila keputusan dibuat. Tanpa notifikasi, anda hanya nampak bayaran balik yang diluluskan, dalam laporan anda.
Berapa lama Apple mengambil masa untuk memproses permintaan bayaran balik?
Apple memberitahu pelanggan 24 hingga 48 jam. Dokumentasi StoreKit menyebut paling lama 48 jam. Bagi pihak anda, anda ada 12 jam untuk menghantar data penggunaan.
Apa yang berlaku pada akses selepas bayaran balik?
Pembelian yang dibayar balik keluar daripada hak aktif pelanggan: StoreKit 2 tidak lagi memulangkannya dalam currentEntitlements. Jika Apple kemudian membatalkan bayaran balik itu, anda menerima REFUND_REVERSED dan anda perlu memulihkan akses.
Perlukah persetujuan pelanggan untuk membalas kepada Apple?
Ya. Apple mewajibkan persetujuan yang sah sebelum sebarang data dikongsi melalui Consumption API. Tanpanya, anda tidak membalas notifikasi. Tetingkap penjejakan iklan tidak boleh digunakan untuk mendapatkannya.
Adakah bayaran balik memberi kesan buruk kepada app saya?
Boleh. Guideline 5.6.4 menyenaraikan permintaan bayaran balik yang berlebihan sebagai antara tanda kualiti yang tidak mencukupi, yang boleh diambil kira oleh Apple untuk menilai pematuhan terhadap kod tatalaku.

