İçeriğe geç
App Store Refund Management

Apple CONSUMPTION_REQUEST Açıklaması: Uygulama Geliştiricilerinin Bilmesi Gerekenler

Apple'ın CONSUMPTION_REQUEST bildiriminin nasıl çalıştığını, geliştiricilerin neleri göndermesi gerektiğini, 12 saatlik yanıt süresini, onay gereksinimlerini ve iade iş akışlarını nasıl otomatikleştireceğinizi öğrenin.

5 min read
Apple CONSUMPTION_REQUEST Açıklaması: Uygulama Geliştiricilerinin Bilmesi Gerekenler

Bir müşteri Apple'dan iade talep eder. On iki saat sonra sunucunuzda bir pencere kapanır ve çoğu ekip bu pencerenin açıldığını hiç fark etmez.

Bu pencere Apple CONSUMPTION_REQUEST'e aittir — App Store'un bir iade talebini değerlendirirken sizden bilgi istediğinde gönderdiği bildirim. Bu bir iade değildir. Bir karar da değildir. Nihai iade kararını her durumda Apple verir. Bildirimin size sağladığı şey, satın alma işleminde gerçekte ne olduğunu anlatmak için sınırlı bir fırsattır.

Bunu doğru yönetmek bir destek sorunu değil, bir backend sorunudur. Bildirimin ulaşması, işlemin tanımlanabilir olması, onay durumunun bilinmesi ve yanıtın zamanında gönderilmesi gerekir.

Bu makale bildirimin ne anlama geldiğini, Apple'ın şu an neler istediğini (alan listesi eskisinden çok daha kısa) ve etrafında nasıl bir iş akışı kuracağınızı ele alıyor. Daha geniş süreç için App Store iade yönetimi rehberimiz bağlamı oluşturuyor.

Öne Çıkan Noktalar

• CONSUMPTION_REQUEST, Apple'ın bir iade değerlendirmesi sırasında bilgi istemesidir. Bir iade bildirimi değildir.

• Nihai iade kararını Apple verir. Yanıtınız birçok girdiden yalnızca biridir.

• Güncel endpoint beş alan alır, bunların üçü zorunludur — eski sürümdeki on iki alandan çok daha az.

• Onay zorunludur. Apple, customerConsented değeri true olmayan istekleri reddeder.

• Apple, bildirimden itibaren 12 saat içinde yanıt ister.

• Süre kısa olduğu ve bildirimler günün her saati geldiği için bu adım, insan eliyle yürütülen bir süreçten çok otomasyona uygundur.

Apple CONSUMPTION_REQUEST Nedir?

CONSUMPTION_REQUEST, bir müşterinin Apple'dan iade talep ettiğini ve App Store'un sizi bu satın alma hakkında tüketim bilgisi göndermeye davet ettiğini bildiren bir App Store Server Notification'dır.

Geliştiricilere yönelik Apple tüketim isteği, bir bilgi boşluğu nedeniyle var. Apple işlemi, hesabı ve satın alma geçmişini görür. Uygulamanızın içinde ne olduğunu göremez: içerik teslim edildi mi, çalıştı mı, müşteri gerçekte ne kadar kullandı. Siz görebilirsiniz.

Olmadığı bir şey var: veto. Bir yanıt iadeyi engellemez ve Apple bir dizi faktörü birlikte tarttığını açıkça belirtir.

Apple CONSUMPTION_REQUEST Nasıl Çalışır?

Sıralama şöyle işler:

Müşteri iade talep eder

Apple talebi değerlendirmeye başlar

CONSUMPTION_REQUEST bildirim endpoint'inize ulaşır

Bildirimi doğrular ve işlemi tanımlarsınız

Onayı kontrol eder ve gerçek kullanım verilerini toplarsınız

Gereksinimler karşılanıyorsa tüketim bilgisini gönderirsiniz

Apple iade kararını verir

REFUND veya REFUND_DECLINED gelir; durumu güncellersiniz

Dikkat edilmesi gereken bir nokta: Apple'ın güncel endpoint'inde herhangi bir ürün türü için yapılan iade talebi bunu tetikleyebilir — tüketilebilir, tüketilemez, yenilenmeyen abonelik veya otomatik yenilenen abonelik. Eski dokümantasyon ve üçüncü taraf yazıların çoğu bunu hâlâ yalnızca tüketilebilir ürünler ve otomatik yenilenen abonelikler için geçerliymiş gibi anlatıyor. Handler'ınız buna dayanarak ürün türüne göre filtreleme yapıyorsa, istekleri düşürüyor demektir.

Apple Geliştiricilerden Hangi Bilgileri İstiyor?

Eskisinden daha azını. Mevcut rehberlerin çoğunun yanlış aktardığı kısım burası, bu yüzden net olmakta fayda var. Apple'ın güncel Send Consumption Information endpoint'i beş alan alıyor — üçü zorunlu, ikisi isteğe bağlı.

Alan

Zorunlu

Sizin için anlamı

customerConsented

Evet

true olmalıdır. Aksi halde Apple isteği reddeder.

deliveryStatus

Evet

Uygulamanızın çalışan bir satın almayı başarıyla teslim edip etmediği.

sampleContentProvided

Evet

Müşterinin satın almadan önce örnek içerik alıp almadığı.

consumptionPercentage

Hayır

Satın almanın ne kadarının tüketildiği, milliunit cinsinden.

refundPreference

Hayır

Tercih ettiğiniz sonuç: tam iade, ret veya orantılı iade.

İki kısıt insanları yanıltıyor. deliveryStatus değeri delivered dışında bir şeyse consumptionPercentage sıfır olmalıdır, aksi halde istek başarısız olur. Ve milliunit yüzde değildir — yarısı tüketilmişse değer 50 değil, 50000'dir.

İsteğe bağlı iade tercihi daha yeni bir alan ve anlamaya değer. İadenin tamamen verilmesini, reddedilmesini ya da orantılı yapılmasını tercih ettiğinizi belirtebilirsiniz. Bu bir tercihtir, talimat değil — Apple bunu diğer her şeyle birlikte tartar ve sonuç istediğinizden farklı olabilir.

Apple orantılı bir iadeyi onaylarsa, geri alınan kısım işlem payload'ında geri döner; bu yüzden entitlement mantığınızın her iadeyi ya hep ya hiç olarak ele almak yerine kısmi geri almayı işleyebilmesi gerekebilir.

Apple Neden Tüketim Bilgisine İhtiyaç Duyar?

Çünkü Apple, yalnızca kısmen görebildiği bir konuda karar veriyor.

Apple neyin, ne zaman, hangi hesapla satın alındığını ve o hesabın geçmişinin nasıl göründüğünü bilir. Sunucunuzun coin'leri teslim edip etmediğini, kilidi açılan özelliğin çalışıp çalışmadığını ya da müşterinin parasını geri istemeden önce ürünü yoğun biçimde kullanıp kullanmadığını bilmez. Bu bağlam sizin sistemlerinizde yaşar.

CONSUMPTION_REQUEST Apple iade akışı, Apple'ın karar vermeden önce bu bağlamı çekme yöntemidir. Doğruluğun savunuculuktan daha önemli olmasının nedeni de bu. Veri, ne olduğunu anlatır. Bu, savunduğunuz bir dava değildir ve öyle ele almak, güvenilir bir getirisi olmadan gerçek risk taşır.

Geliştiriciler CONSUMPTION_REQUEST'e Nasıl Yanıt Verir?

Sekiz adım. İşin çoğu herhangi bir istek gelmeden önce yapılır.

1. Bildirimi alın

App Store CONSUMPTION_REQUEST bildirimleri, App Store Server Notifications V2 için yapılandırdığınız sunucu URL'sine gelir. Bu endpoint eksikse, doğrulanmamışsa ya da sessizce hata veriyorsa istek size hiç ulaşmaz. Apple'ın App Store Server Notifications dokümantasyonu kurulumu ve payload formatını kapsar.

2. Bildirimi doğrulayın

Bildirimler imzalı JWS payload'ları olarak gelir. İçindeki herhangi bir şeye göre işlem yapmadan önce imzayı Apple'ın sertifika zincirine karşı doğrulayın ve bundle ID'nin uygulamanızla eşleştiğini kontrol edin. Gönderilen her şeyi kabul eden doğrulanmamış bir endpoint, başkalarının iade mantığınızı yönlendirmesine kapı açar.

3. İşlemi tanımlayın

Çözümlenen payload, işlem tanımlayıcılarını taşır. Bunları eşleştirebileceğiniz kayıtlı bir satın alma kaydına ihtiyacınız var. Kayıt yoksa arama da yok — ve tüketim hakkında işe yarar bir şey söylemenin de yolu yok.

4. İşlemi doğru kullanıcıyla eşleştirin

Hangi müşteri olduğunu bilmeden bir müşterinin kullanımını anlatamazsınız. Bu eşleme tam olarak appAccountToken'ın var olma nedenidir: uygulamanızın satın alma anında eklediği ve bildirim payload'ında geri dönen bir UUID. Bu olmadan ekipler zamanlamaya ve tahminlere dayalı eşleştirme yapmak zorunda kalır; bu da tam hızın önemli olduğu anda yavaş ve güvenilmezdir.

5. Geçerli onay gereksinimlerini kontrol edin

Apple burada net: bir müşterinin verisini paylaşmadan önce geçerli onay almalısınız ve bunu almak Apple'ın değil, sizin sorumluluğunuzdur. Bildirim onay bayrağı taşımaz, dolayısıyla bunu kendi kayıtlarınızdan bilmeniz gerekir.

Müşteri onay vermediyse Apple'ın yönlendirmesi hiç yanıt vermemeniz yönündedir. İsteği onay değeri false olarak göndermek işe yaramaz — App Store bunu reddeder. Apple ayrıca App Tracking Transparency isteminin bunun mekanizması olmadığını açıkça belirtir; bu, uygulamanızda toplanan ayrı bir onaydır.

6. Gerçek kullanım bilgisini toplayın

Teslimat durumunu ve tüketimi gerçek kayıtlarınızdan çekin. Sunucunuz tüketilebilir bir bakiye izliyorsa ne kadar harcandığını zaten biliyorsunuz. Bir özellik kilidi açılamadıysa loglarınız bunu da biliyor. Tahmin yürütmeyin — uydurulmuş bir tüketim rakamı, doğru veri için aldığınız bir onay kapsamında Apple'a gönderilen yanlış veridir.

7. Uygun bilgiyi gönderin

Bildirimdeki orijinal işlem tanımlayıcısını kullanarak tüketim endpoint'ine bir PUT ile yanıt verin. Gönderip unutmak yerine hata yanıtlarını işleyin: doğrulama hataları belirli hata türleriyle HTTP 400 döndürür ve kimse kontrol etmiyorsa sessizce başarısız olan bir çağrı, başarılı olandan farksız görünür.

8. Sonucu kaydedin

İsteği, işlemi, ne gönderdiğinizi, ne zaman gönderdiğinizi ve Apple'ın sonunda ne karar verdiğini loglayın. Bu kayıt, haftalar sonra bir destek sorusunu yanıtlamanızı, iadeler arasındaki örüntüleri fark etmenizi ve entitlement durumunuzun doğru olduğunu teyit etmenizi sağlar. Bir iade gerçekleştiğinde iade sonrasında erişimi geri alın — ve Apple kararı sonradan tersine çevirirse erişimi geri vermeye hazır olun.

Geliştiriciler CONSUMPTION_REQUEST'i Kaçırırsa Ne Olur?

Dramatik hiçbir şey; sorunun bir parçası da bu.

Yanıtı kaçırmak, Apple'ın bu iş akışı sırasında göndermenize izin verdiği ek bilgiyi sağlamamanız demektir. Apple yine karar verir. İade, Apple'ın zaten elinde olan bilgiye göre yine onaylanabilir ya da reddedilebilir. Hata yok, uyarı yok ve bir şeyin atlandığına dair belirgin bir sinyal yok.

Kaçırılma biçimleri sıradan. Bildirim gece 2'de gelir. Handler'dan sorumlu mühendis izindedir. Tanımlayıcı bir sistemde, kullanım verisi başka bir sistemde olduğu için işlem araması uzar. Biri bunu pazartesi görür; pencere kapandıktan çok sonra.

Manuel CONSUMPTION_REQUEST Yönetimi Neden Zor?

Bu iş akışındaki her kısıt, manuel yönetimin aleyhine işaret ediyor.

Bildirimler günün her saati gelir. Süre 12 saattir. Her istek bir işlem araması, bir kullanıcı eşleştirmesi, bir onay kontrolü, bir kullanım hesaplaması, imzalı bir API çağrısı ve loglanmış bir sonuç gerektirir — yedi adım, hiçbiri ilginç değil, hepsi süreye bağlı.

Haftada bir istekte bu bir can sıkıntısıdır. Günde otuz istekte birinin işi haline gelir — iyi yapıldığında hiçbir şey üretmeyen, geç yapıldığında sessiz kayıplar doğuran bir iş.

Otomasyon İade İş Akışını Nasıl Değiştirir?

Otomasyon size Apple üzerinde etki vermez. Bunu tekrarlamakta fayda var, çünkü pek çok pazarlama içeriği aksini ima ediyor. Apple'ın kararı Apple'ın kararı olarak kalır.

Otomasyonun yaptığı, sizin tarafınızı tutarlı hale getirmektir. Bildirimler izlenir ve doğrulanır. İlgili istekler akışın geri kalanından ayrılır. İşlemler hesaplarla eşleştirilir. Yanıt verileri gerçek kayıtlardan derlenir, son tarihler takip edilir, yanıtlar gönderilir ve loglanır, sonuçlar entitlement güncellemelerine aktarılır.

Bu adımların hiçbiri muhakeme gerektirmez. Hepsi doğru anda dikkat gerektirir; yazılım bunu insanlardan daha iyi yapar.

App Store İade Yönetimi Yazılımı Neleri Kapsamalı?

App Store iade yönetimi yazılımı değerlendiriyorsanız, sorulması gereken asıl soru yukarıdaki belirli boşlukları kapatıp kapatmadığıdır.

App Store Server Notifications'ı izlemeli ve doğrulamalı ki olaylar hata veren bir endpoint'te kaybolmasın. CONSUMPTION_REQUEST olaylarını ayrı takip etmeli, çünkü bunlar iade sonuçlarından farklı bir işleme ihtiyaç duyar. İşlemleri hesaplarla eşleştirmeli, çünkü manuel zaman oraya gidiyor. Yanıt sürelerini takip etmeli, çünkü insanların kaçırdığı son tarih bu.

Bunun ötesinde: onay durumuna saygı gösteren tüketim verisi iş akışları, aranabilir iade geçmişi, sonuç takibi, kısmi geri alma dahil entitlement senkronizasyonu ve örüntüleri gösterecek kadar net raporlama. Önemli olan özellik listesinin uzunluğu değil, iş akışının kapsanmasıdır.

Bu Kurallar Nerede Belgelenmiş?

Üç Apple kaynağı yukarıdakilerin tamamını kapsıyor. Bunları doğrudan okuyun — bu alan yakın zamanda değişti ve ikincil içeriklerin çoğu API'nin eski bir sürümünü anlatıyor.

Send Consumption Information — güncel endpoint. Onay gereksinimini, 12 saatlik süreyi, beş alanlı istek gövdesini ve tüketim bilgisinin tüm ürün türleri için geçerli olduğunu kapsar. Standart In-App Purchase'lar için üzerine inşa edilecek endpoint budur.

App Store Server Notifications — bildirimlerin backend'inize nasıl ulaştığı, imzalı payload formatı ve CONSUMPTION_REQUEST, REFUND ve REFUND_DECLINED dahil bildirim türleri.

Send Consumption Information V1 — bazı ekiplerin hâlâ bağlı olduğu on iki alanlı istek gövdesine sahip eski endpoint. Apple'ın o sayfadaki kendi notu, standart In-App Purchase'ları güncel endpoint'e yönlendirir ve V1'i Advanced Commerce API kullanan satın almalarla sınırlar. Entegrasyonunuzun hangisinde olduğunu belirlemek için yararlıdır, üzerine inşa edilecek bir hedef olarak değil.

Son Söz

CONSUMPTION_REQUEST, Apple'ın iade kararı değildir. Apple'a sizin sistemlerinizin bildiği, Apple'ınkilerin bilmediği şeyleri anlatmak için kısa, süreye bağlı bir fırsattır.

Bunu güvenilir biçimde yöneten bir iş akışı için doğrulanmış bir bildirim endpoint'i, tanımlayabildiğiniz işlemler, eşleyebildiğiniz müşteriler, gerçekten topladığınız onay, gerçek kullanım verisi, süre içinde bir yanıt ve sonrasında entitlement'ları güncelleyecek kadar iyi kaydedilmiş sonuçlar gerekir.

Bunu okuduktan sonra tek bir şey yapacaksanız, entegrasyonunuzun hangi endpoint'i çağırdığını kontrol edin. Standart In-App Purchase'lar için hâlâ V1 yoluna on iki alan gönderiyorsa, önce kapatılması gereken boşluk budur.

İade hacmi manuel yönetimi aştıysa

İade etkinliği, bildirimleri elle izlemenin gerçekçi olmaktan çıkacağı kadar sıklaştığında, özel bir sistem olayları izleyebilir, yanıtları süre içinde hazırlayıp gönderebilir, sonuçları takip edebilir ve entitlement'ları güncel tutabilir. RefundSensor bu iş akışının geliştirici tarafını otomatikleştirir — Apple'ın kararını değil, yalnızca sizin sorumlu olduğunuz kısmı.


Sık sorulan sorular

Bir müşterinin iade talep ettiğini ve Apple'ın tüketim bilgisi isteyebileceğini sunucunuza bildiren bir App Store Server Notification'dır. Bir iade kararı değildir.

Apple bunu, bir müşteri iade talep ettikten sonra talebi incelerken gönderir. Farklı App Store ürün türleri için geçerli olabilir.

Sunucunuz bildirimi alır ve doğrular, işlemi ve müşteriyi tanımlar, onayı kontrol eder ve gerekli tüketim bilgisini yanıt süresi içinde Apple'a gönderir.

Bildirimi doğrulayın, müşteri onayını kontrol edin, doğru kullanım ve teslimat verilerini sağlayın, Apple'a gönderin ve yanıtın ile nihai sonucun kaydını tutun.

Apple'ın güncel dokümantasyonu 12 saatlik bir yanıt süresi belirtir. Geliştiriciler uygulamaya geçmeden önce Apple'ın en güncel gereksinimlerini kontrol etmelidir.

Müşterinin satın almayı nasıl kullandığına ilişkin bilgidir. Güncel endpoint'e bağlı olarak onay, teslimat durumu, örnek içerik, tüketim verisi ve tercih edilen iade sonucunu içerebilir.

Hayır. Nihai kararı Apple verir. Geliştiriciler tüketim bilgisi sağlayabilir ve bir iade tercihi belirtebilir, ancak nihai belirlemeyi Apple yapar.

Evet. Geliştiriciler bildirim doğrulamayı, işlem eşleştirmeyi, onay kontrollerini, veri hazırlamayı, son tarih takibini ve yanıt loglamayı otomatikleştirebilir.

#Apple CONSUMPTION_REQUEST#App Store Server Notifications#Apple refunds#In-App Purchases#Consumption Information#App Store refund automation
Refund SensorRefund Sensor TeamRefund defense for App Store and Google Play developers