Müşterinin makbuzundaki App Store order ID, ne satın aldığını ve Apple'ın parayı çoktan iade edip etmediğini söyler
Apple'ın Look Up Order ID endpoint'i, müşterinin App Store makbuzundaki order ID'yi iade tarihleri ve nedenleri dahil signed transactions'a dönüştürür. İade e-postalarında nasıl kullanılacağı, neyi yapamadığı ve Google Play'in order ID'siyle farkı burada.

Önemli noktalar
- Apple, müşteri her uygulama içi satın alma yaptığında order ID içeren bir makbuz e-postası gönderir ve müşteriler order ID'lerini App Store satın alma geçmişlerinde de bulabilir.
- Apple'ın App Store Server API endpoint'i Look Up Order ID (GET /inApps/v1/lookup/{orderId}), geçerli bir order ID için bir veya daha fazla signed transaction döndürür, böylece destek ekibi tahmin yürütmeden productId ve purchaseDate değerlerini görür.
- Çözümlenmiş bir App Store transaction'ı revocationDate ve revocationReason taşır, bu yüzden order ID sorgusu Apple'ın satın almayı çoktan iade edip etmediğini gösterir. Neden 1, Apple'ın uygulamadaki gerçek veya algılanan bir sorun nedeniyle iade ettiği anlamına gelir.
- Order ID uygulamanız için geçerli değilse Look Up Order ID, OrderLookupStatus 1 döndürür ve signedTransactions dizisi içermez. Bu, yanlış bir makbuza ya da başka bir uygulamadan yapılmış bir satın almaya işaret eder.
- Look Up Order ID, Apple'ın sandbox ortamında kullanılamaz ve production'daki hız sınırı uygulama başına saniyede 10 istektir, saatlik olarak uygulanır.
- Geliştiriciler App Store iadesi yapamaz. Apple iadelere reportaproblem.apple.com üzerinden karar verir ve geliştiricinin tek kanıt adımı CONSUMPTION_REQUEST'e 12 saat içinde yanıt vermektir.
- Google Play her tek seferlik satın alma ve her abonelik yenilemesi için bir order ID e-postası gönderir ve geliştirici bu order ID'yi Play Console'da arayıp doğrudan iade edebilir. Play Console, bir iadenin geri alınamayacağını söyler.
Bir iPhone müşterisinin iade e-postasını yanıtlamadan önce Apple makbuzundaki App Store order ID'yi isteyin. Apple'ın Look Up Order ID endpoint'inden geçirilen bu tek dize, hangi ürünü aldıklarını, ne zaman aldıklarını ve Apple'ın çoktan iade edip etmediğini söyler. O olmadan bir ekran görüntüsünü ve bir e-posta adresini veritabanınızla eşleştirip umut edersiniz. Onunla, ödeme yapmış bir müşteriyle mi, Apple'ın parasını çoktan geri verdiği bir müşteriyle mi, yoksa başka bir uygulamanın makbuzunu tutan biriyle mi konuştuğunuzu saniyeler içinde bilirsiniz.
App Store order ID nereden gelir
Apple'ın belgeleri net. Müşteriler uygulamanızda bir veya daha fazla uygulama içi satın alma yaptığında App Store onlara bir makbuz e-postası gönderir ve bu makbuz bir order ID içerir. Müşteriler order ID'lerini App Store'daki satın alma geçmişlerinde de bulabilir. Apple'ın satın alma geçmişi sayfası reportaproblem.apple.com adresinde ve App Store uygulamasında Apps & Purchase History altında yer alır, varsayılan olarak son 90 günü gösterir ve daha eski satın almalar için filtreler sunar.
Yani anahtar zaten müşterinin elinde. Destek formunuzun sadece onu istemesi gerekiyor.
Neden bir e-posta adresi yetmez
Apple, müşterinin Apple Account e-postasını sizinle paylaşmaz. Destek kutunuza yazan adresin ödeme yapan hesapla hiçbir ilgisi olmayabilir. Satın alma sırasında bir appAccountToken ayarladıysanız transaction'ı kendi kullanıcı kimliğinize bağlayabilirsiniz, ama yalnızca kendi tarafınızdan. Order ID ise müşterinin tarafından, tek dokunuşla iletebilecekleri bir makbuzdan çalışır.
Look Up Order ID ne döndürür
Look Up Order ID, App Store Server API'nin bir parçasıdır ve 1.1.0 sürümünden beri kullanılabilir. İmzalı JWT'nizle GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId} çağrısını yaparsınız. Apple, yanıtın müşterinin uygulama içi satın alma geçmişine dayandığını, müşterinin uygulamayı yüklemiş, kaldırmış ya da yeniden yüklemiş olmasından bağımsız olduğunu söyler.
| Alan veya davranış | Apple'ın belgeleri ne diyor | Destek bununla ne yapar |
|---|---|---|
| OrderLookupStatus 0 | Geçerli order ID. Yanıt bir veya daha fazla signed transaction içeren bir dizi barındırır | Her birini çözümleyin ve satın almayı okuyun |
| OrderLookupStatus 1 | Yanıt signedTransactions dizisi içermez | Order ID'yi uygulamanız için geçersiz sayın. Doğru makbuzu isteyin |
| productId ve purchaseDate | Apple bunları müşteri desteği için kullanılacak alanlar olarak belirtir | Neyin ne zaman satın alındığını doğrulayın |
| revocationDate | App Store'un transaction'ı iade ettiği veya Family Sharing'den geri aldığı zaman | Varsa Apple müşteriye parasını çoktan geri vermiştir |
| revocationReason | 0: yanlışlıkla satın alma gibi başka nedenlerle iade. 1: uygulamanızdaki gerçek veya algılanan bir sorun nedeniyle iade | 1 bir ürün sinyalidir, sadece bir destek talebi değil |
| appAccountToken | Satın alma sırasında ayarladıysanız sizin belirlediğiniz UUID | Siparişi kendi kullanıcı kaydınızla eşleştirin |
| price ve currency | Apple bunların gelir mutabakatı için kullanılmamasını söyler | Para için App Store Connect raporlarını kullanın |
| Sandbox | Endpoint sandbox ortamında kullanılamaz | Yalnızca production order ID'leriyle test edin |
| Hız sınırı | Uygulama başına saniyede 10 istek, saatlik uygulanır. Aşım, Retry-After başlığıyla HTTP 429 döndürür | Bir destek masası için bol, toplu taramalar için değil |
Bu, uygulamam için geçerli bir makbuz mu?
OrderLookupStatus önce bu soruyu yanıtlar. 1, order ID'nin uygulamanızdaki satın almalarla eşleşmediği anlamına gelir. Yaygın durumlar bir yazım hatası, başka bir uygulamanın makbuzu ya da hiç App Store'dan gelmeyen bir makbuzdur. 1 aldığınızda hiçbir şeyi iade etmeyin, kredi vermeyin ya da geri yüklemeyin. Müşteriden makbuzu tekrar kontrol etmesini isteyin.
Apple bu satın almayı çoktan iade etti mi?
Çözümlenmiş her transaction'da revocationDate'i kontrol edin. Ayarlıysa Apple o satın almayı çoktan iade etmiş ya da Family Sharing'den geri almıştır ve müşteri parasını almıştır. App Store Server Notifications'ınız aynı transaction için bir REFUND göndermiş olmalı, bu yüzden bu aynı zamanda sunucunuzun erişimi gerçekten kaldırdığını doğrulamanın ucuz bir yoludur.

Order ID App Store'da neyi yapamaz
İade yapamaz. Geliştiricilerin App Store iade düğmesi yoktur. İadelere Apple karar verir ve destek makalesi müşterileri reportaproblem.apple.com adresine yönlendirir. Orada "I'd like to", ardından "Request a refund" seçer, bir neden belirler ve öğeyi seçerler. Apple ayrıca bekleyen bir ücretin, müşteri e-posta makbuzunu alana kadar iade edilemeyeceğini söyler.
Söz hakkınız olan tek yer Apple'ın CONSUMPTION_REQUEST'idir. Bir müşteri Apple'dan iade istediğinde Apple bu bildirimi gönderebilir ve Send Consumption Information ile yanıt vermek için 12 saatiniz olur. Order ID sorgusu bir destek aracıdır. O pencereyi açmaz ve uzatmaz.
Sorguyu atladığınızda bir iade e-postası size neye mal olur
Order ID olmadan yapılan destek, paranın sessizce sızdığı yerdir. Üç örüntü tekrar tekrar görülür.
- İadenin üstüne jest. Apple satın almayı iade eder, müşteri size de yazar ve destek ücretsiz kredi ya da fazladan bir ay verir. Verdiğiniz her kredi, parasını sizin ödediğiniz compute, API calls ve storage üzerinde çalışır, hem de parası çoktan geri ödenmiş bir hesapta.
- Hiç kaldırılmamış erişim. REFUND işlemeniz başarısız olduysa iade alan müşteri kullanım üretmeye devam eder. Veritabanınız hâlâ aktif derken revocationDate gösteren bir sorgu, üzerinde fiyat etiketi olan bir hata raporudur.
- Yanlış hesap, yanlış çözüm. Order ID başka birine aitken iletilmiş bir e-postanın arkasındaki hesabı geri yüklemek ya da ona kredi vermek, ücretli hizmeti hiç satın almamış birine verir.
Bunların hiçbirinin zarar vermesi için bir itiraza ya da süre sınırına gerek yok. Bunlar sadece gerçeklere dayanmadan verilmiş destek yanıtlarıdır. Talep başına bir API çağrısı tahmini ortadan kaldırır.
revocationReason 1 bir hata yaptığım anlamına mı gelir?
Şart değil. Apple, neden 1'in satın almayı uygulamanızdaki gerçek veya algılanan bir sorun nedeniyle iade ettiği anlamına geldiğini söyler. Buradaki algılanan kelimesi çok iş görüyor. Ama tek bir sürümden sonra tek bir üründe toplanan neden 1 iadeleri, Apple'ın size verdiği en net ürün geri bildirimidir. Onları sayın.
Google Play'in order ID'si nasıl farklı
Google Play tam tersi çalışır. Google'ın faturalandırma belgeleri, kullanıcıların her tek seferlik ürün satın alımı, ilk abonelik satın alımı ve her yinelenen yenileme için benzersiz bir order ID içeren bir e-posta aldığını ve order ID'yi Play Console'da iadeleri yönetmek için kullanabileceğinizi söyler. Order management'ta order ID ya da kullanıcının tam e-posta adresiyle arama yapar, ardından iadeyi kendiniz yaparsınız.
| Soru | App Store order ID | Google Play order ID |
|---|---|---|
| Müşteri onu nerede bulur | E-posta makbuzu ve App Store satın alma geçmişi | Her satın alma ve her yenileme için e-posta makbuzu |
| Onu nasıl sorgularsınız | App Store Server API'deki Look Up Order ID | Play Console'da Order management araması |
| Onunla iade yapabilir misiniz | Hayır. Apple karar verir | Evet. Tam iadeler ve uygulama içi satın almalar ile aboneliklerde kısmi iadeler |
| İade için kanıt penceresi | CONSUMPTION_REQUEST, 12 saat, Apple karar verir | orders.reviewrefund üzerinden chargeback incelemesi, 24 saat |
| Bir iade geri alınabilir mi | Sizin tarafınızdan değil | Hayır. Play Console bir iadenin geri alınamayacağını söyler |
Google Play'de order ID daha da önemlidir, çünkü düğmeye basan sizsiniz. Play Console, en son abonelik siparişini iade etmenin aboneliği hemen kaldırdığını ve gelecekteki yenilemeleri iptal ettiğini, daha eski bir siparişi iade etmenin ise yalnızca iade olduğunu ve aboneliği aktif bıraktığını söyler. Kısmi iadeler yalnızca Mart 2018'den sonra verilen siparişler için desteklenir ve ücretli bir uygulamayı kısmen iade edemezsiniz.
Order ID'yi iade destek akışınızın en başına koyun
- Destek formunuzda order ID'yi tek satırlık bir ipucuyla isteyin: Apple veya Google Play makbuz e-postasında yer alır.
- iOS'ta Look Up Order ID'yi çağırın, her transaction'ı çözümleyin ve destek ekibine productId, purchaseDate, revocationDate ve revocationReason değerlerini tek ekranda gösterin.
- OrderLookupStatus 1 ise durun ve doğru makbuzu isteyin. Hiçbir şey vermeyin.
- revocationDate ayarlıysa erişimin sunucunuzda zaten kaldırıldığını doğrulayın, ardından talebi kapatın. Üstüne jest yok.
- Ayarlı değilse ve müşteri parasını geri istiyorsa onu reportaproblem.apple.com adresine yönlendirin ve 12 saatlik pencere için CONSUMPTION_REQUEST işleyicinizi hazır tutun. RefundHalt bu talebi Apple'ın istediği tüketim verileriyle yanıtlar.
- Android'de iade yapmadan önce Play Console'da tam siparişi bulun ve yalnızca iade ile iade ve erişimi kaldırma arasında bilinçli olarak seçim yapın.
Sık sorulan sorular
- Bir geliştirici olarak App Store order ID'yi nasıl sorgularım?
- App Store Server API endpoint'i Look Up Order ID'yi, GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId}, imzalı JWT'nizle çağırın. Geçerli bir order ID, OrderLookupStatus 0 ve productId, purchaseDate ile varsa iade ayrıntılarını okumak için çözümlediğiniz bir veya daha fazla signed transaction döndürür. Endpoint sandbox'ta kullanılamaz.
- Müşteri App Store order ID'sini nerede bulur?
- Apple'ın her uygulama içi satın almada gönderdiği e-posta makbuzunda ve reportaproblem.apple.com adresindeki ya da App Store uygulamasındaki Apps & Purchase History altındaki App Store satın alma geçmişinde. Satın alma geçmişi varsayılan olarak son 90 günü gösterir ve daha eski satın almalar için filtreler sunar.
- Order ID ile bir App Store satın almasını iade edebilir miyim?
- Hayır. Geliştiriciler App Store iadesi yapamaz. Müşteri reportaproblem.apple.com üzerinden talep ettiğinde Apple karar verir. Sizin katkınız, Apple'ın CONSUMPTION_REQUEST'ine Send Consumption Information ile 12 saat içinde yanıt vermektir.
- Apple'ın bir satın almayı çoktan iade ettiğini nasıl anlarım?
- Order ID'yi sorgulayın ve çözümlenmiş her transaction'da revocationDate'i kontrol edin. Ayarlıysa Apple satın almayı iade etmiş ya da Family Sharing'den geri almıştır. revocationReason 0 yanlışlıkla satın alma gibi başka nedenler, 1 ise uygulamanızdaki gerçek veya algılanan bir sorun anlamına gelir.
- OrderLookupStatus 1 ne anlama gelir?
- Order ID'nin uygulamanız için geçerli olmadığı ve yanıtta signedTransactions dizisi bulunmadığı anlamına gelir. Genellikle müşteri başka bir uygulamanın makbuzunu göndermiş, kimliği yanlış yazmış ya da App Store'dan olmayan bir makbuz göndermiştir. Herhangi bir şey vermeden önce doğru makbuzu isteyin.
Kaynaklar ve ek okumalar
- 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
App Store ve Google Play için geri ödeme otomatik pilotu
Okumaya devam edin
iOS web ödeme iadeleri artık Apple'a değil size geliyor, banka itirazları da öyle
ABD'deki iPhone uygulamaları artık alıcıları bir web ödeme sayfasına yönlendirebiliyor. Apple bu satışlardaki iadelere yardımcı olamayacağını söylüyor, bu yüzden iade masası, ters ibrazlar ve $15'lık itiraz ücretleri size geçiyor. Neyin değiştiğini, bunun neye mal olduğunu ve itirazları nasıl azaltacağınızı anlatıyoruz.
Ücretli uygulama iadesi sunucunuza hiç ulaşmaz, bu yüzden iadeyi uygulamanın kendisi fark etmeli
Peşin ücretli uygulamaların iadeleri, sunucunuzun dinlediği tüm bildirimleri atlar. Google alıcılara iki saatlik iade hakkı tanır ve uygulamayı kaldırır, Apple sözleşmeniz kapsamında 90 gün içinde iade yapabilir ve ikisi de kanıt istemez. Her mağazanın size ne söylediğini, bunun maliyetini ve uygulama içinde nasıl kontrol edeceğinizi burada bulabilirsiniz.