Order ID App Store di struk pelanggan memberi tahu apa yang mereka beli dan apakah Apple sudah me-refund-nya
Endpoint Look Up Order ID milik Apple mengubah order ID dari struk App Store pelanggan menjadi transaksi bertanda tangan, termasuk tanggal dan alasan refund. Berikut cara memakainya untuk email refund, apa yang tidak bisa dilakukannya, dan bagaimana order ID Google Play dibandingkan.

Poin utama
- Apple mengirim email struk berisi order ID setiap kali pelanggan melakukan pembelian dalam aplikasi, dan pelanggan juga bisa menemukan order ID mereka di riwayat pembelian App Store.
- Endpoint App Store Server API milik Apple, Look Up Order ID (GET /inApps/v1/lookup/{orderId}), mengembalikan satu atau lebih transaksi bertanda tangan untuk order ID yang valid, sehingga tim dukungan bisa melihat productId dan purchaseDate tanpa menebak.
- Transaksi App Store yang sudah didekode memuat revocationDate dan revocationReason, sehingga pencarian order ID menunjukkan apakah Apple sudah me-refund pembelian itu. Alasan 1 berarti Apple me-refund karena masalah nyata atau yang dirasakan di dalam aplikasi.
- Look Up Order ID mengembalikan OrderLookupStatus 1 tanpa array signedTransactions jika order ID tidak valid untuk aplikasi Anda, tanda struk yang salah atau pembelian dari aplikasi lain.
- Look Up Order ID tidak tersedia di lingkungan sandbox Apple, dan batas lajunya di produksi adalah 10 permintaan per detik per aplikasi, diberlakukan per jam.
- Developer tidak bisa mengeluarkan refund App Store. Apple yang memutuskannya di reportaproblem.apple.com, dan satu-satunya langkah bukti bagi developer adalah menjawab CONSUMPTION_REQUEST dalam 12 jam.
- Google Play mengirim email order ID untuk setiap pembelian sekali bayar dan setiap perpanjangan langganan, dan developer bisa mencari order ID itu di Play Console lalu me-refund-nya langsung. Play Console menyatakan refund tidak bisa dibatalkan.
Sebelum membalas email refund dari pelanggan iPhone, minta order ID App Store yang tertera di struk Apple mereka. Satu string itu, jika dijalankan lewat endpoint Look Up Order ID milik Apple, memberi tahu produk apa yang mereka beli, kapan, dan apakah Apple sudah me-refund-nya. Tanpa itu, Anda mencocokkan tangkapan layar dan alamat email dengan database sambil berharap. Dengan itu, dalam hitungan detik Anda tahu apakah lawan bicara Anda pelanggan yang membayar, pelanggan yang uangnya sudah dikembalikan Apple, atau seseorang yang memegang struk dari aplikasi lain.
Dari mana order ID App Store berasal
Dokumentasi Apple cukup jelas. Saat pelanggan melakukan satu atau lebih pembelian dalam aplikasi Anda, App Store mengirim struk lewat email, dan struk itu berisi order ID. Pelanggan juga bisa menemukan order ID di riwayat pembelian App Store mereka. Halaman riwayat pembelian Apple ada di reportaproblem.apple.com dan di aplikasi App Store pada menu Apps & Purchase History, dan secara default menampilkan 90 hari terakhir, dengan filter untuk pembelian yang lebih lama.
Jadi pelanggan sudah memegang kuncinya. Formulir dukungan Anda tinggal memintanya.
Kenapa alamat email saja tidak cukup
Apple tidak membagikan email Apple Account pelanggan kepada Anda. Alamat yang menulis ke kotak masuk dukungan Anda bisa saja tidak ada hubungannya dengan akun yang membayar. Jika Anda mengisi appAccountToken saat pembelian, Anda bisa mengaitkan transaksi dengan ID pengguna Anda sendiri, tetapi hanya dari sisi Anda. Order ID bekerja dari sisi pelanggan, dari struk yang bisa mereka teruskan dengan satu ketukan.
Apa yang dikembalikan Look Up Order ID
Look Up Order ID adalah bagian dari App Store Server API, tersedia sejak versi 1.1.0. Anda memanggil GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId} dengan JWT bertanda tangan milik Anda. Apple menyatakan respons didasarkan pada riwayat pembelian dalam aplikasi pelanggan, terlepas dari apakah mereka memasang, menghapus, atau memasang ulang aplikasi.
| Field atau perilaku | Kata dokumentasi Apple | Yang dilakukan tim dukungan |
|---|---|---|
| OrderLookupStatus 0 | Order ID valid. Respons berisi array satu atau lebih transaksi bertanda tangan | Dekode masing-masing dan baca pembeliannya |
| OrderLookupStatus 1 | Respons tidak berisi array signedTransactions | Anggap order ID tidak valid untuk aplikasi Anda. Minta struk yang benar |
| productId dan purchaseDate | Apple menyebut field ini untuk dipakai dalam dukungan pelanggan | Pastikan apa yang dibeli dan kapan |
| revocationDate | Waktu App Store me-refund transaksi atau mencabutnya dari Family Sharing | Jika ada, Apple sudah mengembalikan uang pelanggan |
| revocationReason | 0: di-refund karena alasan lain, misalnya pembelian tidak sengaja. 1: di-refund karena masalah nyata atau yang dirasakan di dalam aplikasi Anda | Nilai 1 adalah sinyal produk, bukan sekadar tiket dukungan |
| appAccountToken | UUID yang Anda isi saat pembelian, jika Anda mengisinya | Cocokkan pesanan dengan data pengguna Anda sendiri |
| price dan currency | Apple menyatakan jangan dipakai untuk rekonsiliasi pendapatan | Pakai laporan App Store Connect untuk urusan uang |
| Sandbox | Endpoint tidak tersedia di lingkungan sandbox | Uji hanya dengan order ID produksi |
| Batas laju | 10 permintaan per detik per aplikasi, diberlakukan per jam. Kelebihannya mendapat HTTP 429 dengan header Retry-After | Lebih dari cukup untuk tim dukungan, tidak untuk pemindaian massal |
Apakah struk ini valid untuk aplikasi saya?
Itulah pertanyaan pertama yang dijawab OrderLookupStatus. Nilai 1 berarti order ID tidak mengarah ke pembelian di aplikasi Anda. Penyebab umumnya salah ketik, struk dari aplikasi lain, atau struk yang sama sekali bukan dari App Store. Jangan me-refund, memberi kredit, atau memulihkan apa pun saat nilainya 1. Minta pelanggan memeriksa struknya lagi.
Apakah Apple sudah me-refund pembelian ini?
Periksa revocationDate di setiap transaksi yang sudah didekode. Jika terisi, Apple sudah me-refund pembelian itu atau mencabutnya dari Family Sharing, dan uang pelanggan sudah kembali. App Store Server Notifications Anda seharusnya sudah mengirim REFUND untuk transaksi yang sama, jadi ini juga cara murah untuk memastikan server Anda benar-benar mencabut akses.

Apa yang tidak bisa dilakukan order ID di App Store
Order ID tidak bisa mengeluarkan refund. Developer tidak punya tombol refund App Store. Apple yang memutuskan refund, dan artikel dukungannya mengarahkan pelanggan ke reportaproblem.apple.com, tempat mereka memilih "I'd like to", lalu "Request a refund", memilih alasan, dan memilih item. Apple juga menyatakan tagihan yang masih tertunda tidak bisa di-refund sampai pelanggan menerima struk email.
Satu-satunya tempat Anda punya suara adalah CONSUMPTION_REQUEST dari Apple. Saat pelanggan meminta refund ke Apple, Apple bisa mengirim notifikasi itu, dan Anda punya 12 jam untuk menjawab dengan Send Consumption Information. Pencarian order ID adalah alat dukungan. Ia tidak membuka jendela itu dan tidak memperpanjangnya.
Berapa biaya email refund jika Anda melewatkan pencarian
Dukungan tanpa order ID adalah tempat uang bocor diam-diam. Tiga pola muncul berulang kali.
- Kompensasi di atas refund. Apple me-refund pembelian, pelanggan juga menulis kepada Anda, dan tim dukungan memberi kredit gratis atau tambahan satu bulan. Setiap kredit yang Anda berikan berjalan di atas komputasi, panggilan API, dan penyimpanan yang Anda bayar, untuk akun yang uangnya sudah dikembalikan.
- Akses yang tidak pernah dicabut. Jika penanganan REFUND Anda gagal, pelanggan yang sudah di-refund tetap menghasilkan pemakaian. Pencarian yang menunjukkan revocationDate sementara database Anda masih menulis aktif adalah laporan bug dengan label harga.
- Akun yang salah, perbaikan yang salah. Memulihkan atau memberi kredit pada akun di balik email yang diteruskan, padahal order ID-nya milik orang lain, berarti memberi layanan berbayar kepada orang yang tidak pernah membelinya.
Tidak satu pun dari ini butuh sengketa atau tenggat untuk merugikan. Semuanya hanya balasan dukungan yang dibuat tanpa fakta. Satu panggilan API per tiket menghilangkan tebak-tebakan.
Apakah revocationReason 1 berarti saya melakukan kesalahan?
Belum tentu. Apple menyatakan alasan 1 berarti pembelian di-refund karena masalah nyata atau yang dirasakan di dalam aplikasi Anda. Kata "dirasakan" punya bobot besar di sini. Namun sekumpulan refund dengan alasan 1 pada satu produk, setelah satu rilis, adalah masukan produk paling jelas yang diberikan Apple. Hitunglah.
Bagaimana order ID Google Play dibandingkan
Google Play bekerja sebaliknya. Dokumentasi penagihan Google menyatakan pengguna menerima email dengan order ID unik untuk setiap pembelian produk sekali bayar, untuk pembelian langganan pertama, dan untuk setiap perpanjangan berulang, dan Anda bisa memakai order ID itu untuk mengelola refund di Play Console. Anda mencari di Order management berdasarkan order ID atau alamat email lengkap pengguna, lalu me-refund-nya sendiri.
| Pertanyaan | Order ID App Store | Order ID Google Play |
|---|---|---|
| Tempat pelanggan menemukannya | Struk email dan riwayat pembelian App Store | Struk email untuk setiap pembelian dan setiap perpanjangan |
| Cara Anda mencarinya | Look Up Order ID di App Store Server API | Cari di Order management di Play Console |
| Bisakah Anda me-refund dari situ | Tidak. Apple yang memutuskan | Ya. Refund penuh, dan refund sebagian untuk pembelian dalam aplikasi dan langganan |
| Jendela bukti untuk refund | CONSUMPTION_REQUEST, 12 jam, Apple yang memutuskan | Peninjauan chargeback lewat orders.reviewrefund, 24 jam |
| Bisakah refund dibatalkan | Tidak oleh Anda | Tidak. Play Console menyatakan refund tidak bisa dibatalkan |
Di Google Play, order ID lebih penting karena Anda yang menekan tombolnya. Play Console menyatakan me-refund pesanan langganan terbaru langsung menghapus langganan dan membatalkan perpanjangan berikutnya, sedangkan me-refund pesanan lama hanya berupa refund dan langganan tetap aktif. Refund sebagian hanya didukung untuk pesanan yang dibuat setelah Maret 2018, dan Anda tidak bisa me-refund sebagian aplikasi berbayar.
Letakkan order ID di depan alur dukungan refund Anda
- Minta order ID di formulir dukungan Anda, dengan petunjuk satu baris: ada di email struk Apple atau Google Play.
- Di iOS, panggil Look Up Order ID, dekode setiap transaksi, dan tampilkan productId, purchaseDate, revocationDate, dan revocationReason dalam satu layar untuk tim dukungan.
- Jika OrderLookupStatus bernilai 1, berhenti dan minta struk yang benar. Jangan berikan apa pun.
- Jika revocationDate terisi, pastikan akses sudah dicabut di server Anda, lalu tutup tiketnya. Tanpa kompensasi tambahan.
- Jika tidak terisi dan pelanggan ingin uangnya kembali, arahkan mereka ke reportaproblem.apple.com dan siapkan penangan CONSUMPTION_REQUEST Anda untuk jendela 12 jam. RefundHalt menjawab permintaan itu dengan data konsumsi yang diminta Apple.
- Di Android, temukan pesanan yang tepat di Play Console sebelum me-refund, dan pilih antara refund saja atau refund dan cabut akses dengan sengaja.
Pertanyaan yang sering diajukan
- Bagaimana cara developer mencari order ID App Store?
- Panggil endpoint App Store Server API Look Up Order ID, GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId}, dengan JWT bertanda tangan Anda. Order ID yang valid mengembalikan OrderLookupStatus 0 dan satu atau lebih transaksi bertanda tangan yang Anda dekode untuk membaca productId, purchaseDate, dan detail refund apa pun. Endpoint ini tidak tersedia di sandbox.
- Di mana pelanggan menemukan order ID App Store mereka?
- Di struk email yang dikirim Apple setiap kali mereka melakukan pembelian dalam aplikasi, dan di riwayat pembelian App Store mereka di reportaproblem.apple.com atau di menu Apps & Purchase History pada aplikasi App Store. Riwayat pembelian menampilkan 90 hari terakhir secara default, dengan filter untuk pembelian yang lebih lama.
- Bisakah saya me-refund pembelian App Store dengan order ID?
- Tidak. Developer tidak bisa mengeluarkan refund App Store. Apple yang memutuskannya saat pelanggan memintanya di reportaproblem.apple.com. Masukan Anda adalah menjawab CONSUMPTION_REQUEST dari Apple dalam 12 jam dengan Send Consumption Information.
- Bagaimana saya tahu apakah Apple sudah me-refund sebuah pembelian?
- Cari order ID-nya dan periksa revocationDate di setiap transaksi yang sudah didekode. Jika terisi, Apple sudah me-refund pembelian itu atau mencabutnya dari Family Sharing. revocationReason 0 berarti alasan lain seperti pembelian tidak sengaja, dan 1 berarti masalah nyata atau yang dirasakan di dalam aplikasi Anda.
- Apa arti OrderLookupStatus 1?
- Artinya order ID tidak valid untuk aplikasi Anda, dan respons tidak berisi array signedTransactions. Biasanya pelanggan mengirim struk dari aplikasi lain, salah mengetik ID, atau mengirim struk yang bukan dari App Store. Minta struk yang benar sebelum memberikan apa pun.
Sumber dan bacaan lanjutan
- Apple Developer Documentation: Look Up Order ID
- Apple Developer Documentation: orderId
- Apple Developer Documentation: revocationReason
- Apple Developer Documentation: Identifying rate limits
- Apple Support: See your purchase history for the App Store, iTunes Store, and more
- Apple Support: Request a refund for apps or content that you bought from Apple
- Play Console Help: Refund orders and subscriptions
- Android Developers: Integrate the Google Play Billing Library into your app
RefundHalt
Autopilot refund untuk App Store dan Google Play
Baca selanjutnya
Refund web checkout iOS kini datang ke Anda, bukan ke Apple, begitu juga sengketa bank
Aplikasi iPhone di AS kini boleh mengarahkan pembeli ke web checkout. Apple menyatakan tidak dapat membantu refund atas penjualan tersebut, sehingga urusan refund, chargeback, dan biaya sengketa $15 berpindah ke Anda. Inilah yang berubah, berapa biayanya, dan cara menekan jumlah sengketa.
Refund aplikasi berbayar tidak pernah sampai ke server Anda, jadi aplikasi itu sendiri yang harus mendeteksinya
Refund untuk aplikasi berbayar di muka melewati semua notifikasi yang didengarkan server Anda. Google memberi pembeli waktu dua jam untuk mengembalikan aplikasi dan menghapusnya dari perangkat, Apple dapat memberi refund dalam 90 hari berdasarkan perjanjian Anda, dan keduanya tidak meminta bukti. Berikut yang disampaikan setiap store, biayanya, dan cara memeriksanya di dalam aplikasi.