Semua artikel
Ulasan mendalamWaktu baca 7 menit

Setiap permintaan refund Apple kini disertai alasan, dan consumptionRequestReason adalah cara Anda membacanya

Sejak WWDC24, setiap CONSUMPTION_REQUEST dari Apple membawa consumptionRequestReason, yaitu alasan yang dinyatakan sendiri oleh pelanggan mengapa mereka ingin refund. Ada lima nilai, dari UNINTENDED_PURCHASE hingga LEGAL, dan masing-masing seharusnya mengubah apa yang Anda kirim kembali dalam jendela 12 jam Anda. Berikut cara membaca setiap nilainya.

Sebuah ponsel pintar di atas meja gelap menampilkan layar pembayaran langganan di samping label kertas kosong, menggambarkan alasan permintaan refund Apple yang kini datang bersama setiap consumption request

Poin utama

  • Sejak App Store Server Notifications versi 2.11, yang diumumkan di WWDC24, setiap notifikasi CONSUMPTION_REQUEST menyertakan consumptionRequestReason, sebuah string yang menyatakan mengapa pelanggan meminta refund.
  • Ada tepat lima nilai: UNINTENDED_PURCHASE, FULFILLMENT_ISSUE, UNSATISFIED_WITH_PURCHASE, LEGAL, dan OTHER. Apple mengirim satu untuk tiap permintaan.
  • Alasan tidak menentukan refund. Ia adalah konteks yang Anda gunakan untuk memilih refundPreference dan data konsumsi Anda sebelum jendela 12 jam ditutup.
  • CONSUMPTION_REQUEST kini juga terpicu untuk langganan yang diperbarui otomatis, bukan hanya consumable, sehingga consumptionRequestReason menjangkau jauh lebih banyak refund Anda dibanding sebelum WWDC24.
  • Alasan FULFILLMENT_ISSUE adalah sinyal bahwa pengiriman Anda sendiri mungkin gagal. Menentangnya menghabiskan jendela dan mengundang chargeback di kemudian hari. Mengabulkannya biasanya jawaban yang lebih murah.
  • Anda membalas dengan memanggil Send Consumption Information dalam 12 jam dengan customerConsented disetel true dan refundPreference berupa GRANT_FULL, GRANT_PRORATED, atau DECLINE. Apple memperlakukan preferensi Anda sebagai satu masukan, bukan perintah.
  • Refund tetap merugikan Anda dari sisi komputasi, panggilan API, penyimpanan, dan pembayaran yang sudah dikonsumsi oleh pembelian tersebut. Kolom alasan adalah cara Anda mengeluarkan pembelaan hanya pada kasus yang layak dibela.

Apple mengubah cara permintaan refund tiba di server Anda, dan banyak developer tidak pernah menyadarinya. Sejak pembaruan App Store Server Notifications 2.11 yang diumumkan di WWDC24, setiap notifikasi CONSUMPTION_REQUEST membawa kolom bernama consumptionRequestReason. Ini adalah alasan yang dinyatakan sendiri oleh pelanggan untuk meminta uangnya kembali. Satu string sederhana, lima kemungkinan nilai, dikirim di dalam payload yang sama yang sudah Anda miliki waktu dua belas jam untuk menjawabnya.

Alasan permintaan refund Apple tidak menentukan apa pun dengan sendirinya. Yang ia lakukan adalah memberitahu Anda sedang berada di antara lima situasi yang sangat berbeda, sehingga Anda berhenti mengirim data konsumsi generik yang sama untuk refund yang seharusnya Anda kabulkan dan refund yang seharusnya Anda lawan. Berikut penjelasan tentang apa kolom itu, nilai persis yang bisa Apple kirim, apa arti sinyal masing-masing, dan bagaimana ia seharusnya mengubah preferensi dan bukti yang Anda kembalikan.

Apa sebenarnya consumptionRequestReason itu

consumptionRequestReason adalah kolom string di dalam objek data pada notifikasi CONSUMPTION_REQUEST. Apple menambahkannya di App Store Server Notifications versi 2.11, bersamaan dengan perubahan alur refund di WWDC24. Sebelum itu, permintaan tiba dengan transaksi bertanda tangan dan tanpa apa pun tentang motif. Anda menjawab tanpa melihat. Kini alasan yang dinyatakan pelanggan ikut bersama permintaan tersebut.

Baca kata dinyatakan dengan cermat. Ini adalah alasan yang dipilih pelanggan saat mengajukan ke Apple, bukan fakta yang diverifikasi Apple. UNINTENDED_PURCHASE tidak membuktikan pembelian tidak digunakan, dan UNSATISFIED_WITH_PURCHASE tidak membuktikan produk rusak. Nilai itu adalah lensa, bukan vonis. Anda tetap memasangkannya dengan catatan pengiriman dan penggunaan Anda sendiri.

Ia menumpang di notifikasi yang sudah Anda tangani

CONSUMPTION_REQUEST adalah satu-satunya alur Apple yang sama sekali meminta bukti dari developer. Padanannya di Google Play adalah tinjauan chargeback melalui orders.reviewrefund. Ketika satu tiba, Anda punya 12 jam untuk menjawab dengan memanggil Send Consumption Information, sebuah PUT ke endpoint konsumsi transaksi. consumptionRequestReason kini menjadi bagian dari notifikasi yang sama itu, jadi tidak ada yang baru untuk dilanggani. Jika Anda sudah mem-parsing CONSUMPTION_REQUEST, alasan itu adalah satu kolom yang mungkin Anda abaikan.

Lima alasan, dan apa yang diberitahukan masing-masing kepada Anda

Apple mendokumentasikan tepat lima nilai. Satu tiba untuk tiap permintaan. Berikut set lengkapnya dan cara membaca masing-masing dalam praktik.

NilaiApa yang dinyatakan pelangganApa artinya biasanya bagi Anda
UNINTENDED_PURCHASEMereka tidak bermaksud membelinyaSering kali ketukan tak sengaja atau oleh keluarga. Periksa pengiriman dan konsumsi sebelum memutuskan.
FULFILLMENT_ISSUEMereka tidak dapat menerima atau menggunakannyaMenunjuk kembali ke pengiriman Anda sendiri. Verifikasi log Anda sebelum menentang.
UNSATISFIED_WITH_PURCHASEMereka tidak puas dengannyaPenyesalan pembeli. Bukti konsumsi Anda paling berbobot di sini.
LEGALMereka mengutip alasan hukumPerlakukan sebagai pemberian. Menentang permintaan hukum tidak sepadan dengan jendela waktu.
OTHERAlasan apa pun yang tidak tercantum di atasTidak ada sinyal dengan sendirinya. Kembali ke data pengiriman dan penggunaan Anda.

UNINTENDED_PURCHASE adalah kategori ketukan tak sengaja

Ini adalah alasan yang dipilih orang tua setelah anaknya membeli 10,000 koin, atau orang dewasa yang salah menekan konfirmasi. Ia berkorelasi dengan pembelian yang tidak pernah dibuka atau digunakan. Justru karena itulah data Anda sendiri penting. Jika catatan Anda menunjukkan consumable telah sepenuhnya dikirim dan banyak dikonsumsi, klaim pembelian tak sengaja dan saldo yang sudah habis terpakai tidak sejalan, dan celah itu layak dilaporkan melalui consumptionPercentage.

FULFILLMENT_ISSUE menunjuk kembali ke Anda

FULFILLMENT_ISSUE adalah satu-satunya alasan yang sebagian tentang aplikasi Anda, bukan pelanggan. Artinya mereka mengatakan tidak dapat menerima atau menggunakan apa yang mereka bayar. Sebelum secara refleks menentang, tarik log pengiriman Anda. Jika server Anda sendiri menunjukkan entitlement tidak pernah aktif, atau kredit tidak pernah masuk, pelanggan benar, dan DECLINE adalah preferensi yang salah. Melawan kegagalan pemenuhan yang nyata menyia-nyiakan jendela dan bisa mendorong pelanggan ke banknya, di mana chargeback lebih mahal daripada refund itu sendiri.

UNSATISFIED_WITH_PURCHASE adalah tempat bukti menentukan

Ini adalah penyesalan pembeli biasa, dan inilah alasan di mana data konsumsi Anda paling banyak bekerja. Produk berfungsi. Pelanggan menggunakan sebagian atau seluruhnya dan kini ingin uangnya kembali. consumptionPercentage yang tinggi, deliveryStatus yang jujur berupa DELIVERED, dan refundPreference berupa DECLINE atau GRANT_PRORATED adalah kasus yang diminta Apple untuk Anda susun. Kirim angka-angkanya, bukan argumen.

LEGAL dan OTHER

LEGAL berarti pelanggan menggunakan hak hukum atau regulasi. Orang yang berakal bisa berbeda pendapat, tetapi sebagai aturan ini bukan jendela untuk berperkara. Kabulkan dan lanjutkan. OTHER adalah wadah serba-guna yang Apple gunakan saat alasan yang dinyatakan tidak cocok dengan satu pun dari empat di atas. Ia tidak membawa sinyal dengan sendirinya, jadi perlakukan OTHER persis seperti permintaan tanpa alasan sama sekali: awali dengan status pengiriman dan bukti penggunaan Anda.

Lima kartu terlipat kosong terkembang di atas meja gelap di samping sebuah ponsel, mewakili lima nilai consumptionRequestReason yang dapat dikirim pelanggan

Bagaimana alasan mengubah jawaban Anda, kolom demi kolom

Anda membalas CONSUMPTION_REQUEST dengan memanggil Send Consumption Information menggunakan body ConsumptionRequest. Alasan seharusnya membentuk tiga kolom dalam body tersebut.

customerConsented harus true

Apple hanya menerima pengiriman ketika customerConsented bernilai true, artinya pelanggan setuju membagikan data konsumsi. Jika Anda tidak memiliki persetujuan itu, Anda tidak dapat mengirim data sama sekali, terlepas dari alasannya. Tanpa persetujuan, tanpa bukti, dan permintaan diputuskan tanpa angka-angka Anda.

deliveryStatus dan consumptionPercentage membawa faktanya

deliveryStatus menyatakan apakah Anda mengirimkan pembelian yang berfungsi. Jika nilainya selain DELIVERED, Apple mensyaratkan consumptionPercentage bernilai 0. Ketika Anda memang mengirim, consumptionPercentage adalah bilangan bulat dalam milliunits dari 0 hingga 100,000, di mana 100,000 berarti pelanggan menggunakan seluruh pembelian. Pasangan ini adalah inti faktual Anda, dan inilah yang seharusnya membawa kasus FULFILLMENT_ISSUE atau UNSATISFIED_WITH_PURCHASE, bukan alasan itu sendiri.

refundPreference adalah satu-satunya tuas Anda

refundPreference adalah tempat Anda menyatakan apa yang Anda inginkan. Apple mendokumentasikan tiga nilai: GRANT_FULL, GRANT_PRORATED, dan DECLINE. Baca alasannya, timbang terhadap data Anda, lalu pilih. FULFILLMENT_ISSUE dengan pengiriman gagal di log Anda condong ke GRANT_FULL. UNSATISFIED_WITH_PURCHASE pada produk yang telah dikonsumsi penuh condong ke DECLINE atau GRANT_PRORATED. LEGAL condong ke GRANT_FULL.

Berapa sebenarnya biaya refund bagi Anda

Kolom alasan penting karena refund jarang sekadar penjualan yang lepas dari buku besar Anda. Untuk consumable yang sudah habis dijalankan, Anda telah membayar untuk memenuhinya. Paket kredit yang memanggil API inferensi berbayar, sekumpulan gambar yang dihasilkan yang membakar waktu GPU, ekspor tersimpan yang membebani tagihan penyimpanan Anda, pembayaran kreator yang sudah Anda kirim: biaya-biaya itu tetap terpakai ketika pembelian dibalik. Toko mengembalikan uang pelanggan. Ia tidak mengembalikan komputasi Anda.

Itulah mengapa alasan layak dibaca. Misalkan seorang pelanggan membeli 5,000 kredit yang masing-masing memicu panggilan API berbayar, menghabiskan 4,000 darinya, lalu mengajukan di bawah UNSATISFIED_WITH_PURCHASE. deliveryStatus Anda DELIVERED, consumptionPercentage Anda 80,000 milliunits, dan preferensi DECLINE atau GRANT_PRORATED adalah selisih antara menanggung tagihan API dan memulihkan sebagian besarnya. Kini balik alasannya menjadi FULFILLMENT_ISSUE dengan log yang menunjukkan kredit tidak pernah masuk, dan langkah yang jujur serta lebih murah adalah GRANT_FULL sebelum pelanggan meningkatkan masalah ke banknya.

Membaca alasan tanpa bereaksi berlebihan

Jebakannya adalah memperlakukan alasan sebagai bukti. UNINTENDED_PURCHASE bukan pengakuan bahwa produk tidak digunakan, dan LEGAL tidak selalu klaim hukum yang tulen. Alasan mempersempit situasi. Log pengiriman dan catatan konsumsi Anda yang menyelesaikannya. Ketika keduanya sepakat dengan pelanggan, kabulkan lebih awal dan murah. Ketika keduanya bertentangan dengan pelanggan, kontradiksi itu, yang dinyatakan sebagai deliveryStatus dan consumptionPercentage, adalah hal terkuat yang dapat Anda kirim. RefundHalt membaca consumptionRequestReason pada setiap CONSUMPTION_REQUEST dan memasangkannya dengan data penggunaan nyata Anda secara otomatis, sehingga setiap alasan mendapat respons yang pantas di dalam jendela 12 jam.

Perubahan ini kecil dan mudah terlewat, tetapi ia menggeser percakapan refund ke pihak Anda. Apple kini memberitahu Anda alasannya, sebelum Anda menjawab. Gunakan itu.

Pertanyaan yang sering diajukan

Apa itu consumptionRequestReason?
consumptionRequestReason adalah kolom string yang Apple sertakan pada setiap notifikasi CONSUMPTION_REQUEST, ditambahkan di App Store Server Notifications versi 2.11 pada WWDC24. Ia menyatakan alasan pelanggan sendiri untuk meminta refund, memberi Anda konteks sebelum merespons dengan data konsumsi di dalam jendela 12 jam.
Apa saja kemungkinan nilai consumptionRequestReason?
Ada lima: UNINTENDED_PURCHASE, FULFILLMENT_ISSUE, UNSATISFIED_WITH_PURCHASE, LEGAL, dan OTHER. Apple mengirim tepat satu untuk tiap permintaan refund. Masing-masing menunjuk situasi yang berbeda, dari ketukan tak sengaja hingga alasan hukum yang dinyatakan, dan masing-masing seharusnya membentuk refundPreference dan data konsumsi yang Anda kirim kembali.
Apakah alasan refund menentukan apakah saya menyimpan uangnya?
Tidak. consumptionRequestReason adalah konteks, bukan vonis. Apple tetap memutuskan refund, menimbang refundPreference Anda, deliveryStatus dan consumptionPercentage Anda, serta riwayat pelanggan. Alasan memberitahu Anda kasus mana yang harus disusun. Data pengiriman dan penggunaan Anda yang menyusunnya.
Berapa lama saya harus merespons CONSUMPTION_REQUEST?
Anda punya 12 jam sejak menerima notifikasi CONSUMPTION_REQUEST untuk memanggil Send Consumption Information. Panggilan itu harus menyetel customerConsented ke true, atau Apple menolaknya. Lewatkan jendela dan refund diputuskan tanpa data apa pun dari Anda.
Apakah consumptionRequestReason muncul untuk refund langganan?
Ya. Pembaruan WWDC24 yang sama yang menambahkan consumptionRequestReason juga mulai mengirim CONSUMPTION_REQUEST untuk langganan yang diperbarui otomatis, bukan hanya consumable. Bagi sebagian besar aplikasi, itu berarti kolom alasan kini menjangkau refund yang paling penting secara finansial.

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.