İadenin verilip verilmeyeceğine Apple karar verir. Politikanın size bıraktığı şey, bu kararın etrafında olup biten her şeydir ve önlenebilir kayıpların büyük kısmı da tam orada durur.
Bu hikâyenin bir versiyonunu sık sık duyuyoruz. Bir kullanıcı Mart ayında Apple'dan iade ister. Apple kabul eder. Geliştiricinin sunucusunun bundan hiç haberi olmaz. Haziran'a gelindiğinde aynı kullanıcı uygulamanın ücretli sürümünü hâlâ kullanıyordur. Finans ekibi çeyrek sonunda bir kontrol yapana kadar kimse fark etmez, o zaman bile ne olduğunu anlamak epey zaman alır. İade bir ödeme raporunda durur. Erişim kaydı uygulamanın kendi veritabanında durur. İkisi birbiriyle hiç konuşmaz.
Çoğu geliştirici App Store iade politikasını böyle öğrenir. Okuyarak değil, aylar sonra politikanın neyi hiç kapsamadığını keşfederek.
Politikanın açıkça yazmadığı kısım şu: Apple'ın ödemeyi geri alması ile uygulamanızın erişimi kaldırması iki ayrı olaydır. İlkini Apple halleder. İkincisi size düşer. Bu ikisi arasındaki boşluk, geliştiricilerin ay be ay sessizce para kaybettiği yerdir. Bu yazının büyük bölümü o boşluğu kapatmakla ilgili.
Bu yazı politikaya geliştirici tarafından bakıyor: Apple neyi kontrol eder, size ne düşer ve bir iade gerçekleştiğinde sistemlerinizin ne yapması gerekir. Politikanın kendisi yerine pratik tarafını okumayı tercih ederseniz, mobil uygulama gelirini kaybetmeden App Store iadelerini yönetme rehberimiz bu konuyu ele alıyor.
Öne Çıkanlar
● Her iade kararını Apple verir. App Store Connect'te bir iadeyi onaylamak ya da reddetmek için bir düğme yoktur, çünkü bu seçim hiçbir zaman geliştiriciye ait olmadı.
● Müşterinin yaşadığı yer sonucu değiştirebilir. Uygunluk ve süreç, Apple'ın Medya Hizmetleri Hüküm ve Koşulları uyarınca ülkeye veya bölgeye göre farklılık gösterir.
● Apple, sunucunuza iadeyle ilgili bildirimler gönderebilir ve bir talebi incelerken satın almanın nasıl kullanıldığına dair bilgi isteyebilir.
● Yanıt vermek için 12 saatiniz var, o da yalnızca müşteri bu bilginin paylaşılmasına izin verdiyse.
● Apple'ın onayladığı iade ile veritabanınızın kaydettiği iade iki ayrı olaydır. Aradaki boşluk, paranın sızdığı yerdir.
● Otomasyon, sürecin sizin tarafınızı daha hızlı ve tutarlı hale getirebilir. Apple'ın kararı üzerinde hiçbir etkisi yoktur.
App Store iade politikası nedir?
Kısaca, Apple'ın bir müşterinin iade talebini nasıl ele aldığına dair kurallar bütünü ve buna ek olarak geliştiriciye düşen teknik işlerin listesidir.
İadenin onaylanıp onaylanmayacağına Apple karar verir. Sizin söz hakkınız yok. Bir talebi onaylayamazsınız, engelleyemezsiniz de. App Store Connect'te geliştiricinin bu konuda oy kullandığı bir ekran yok. Yapabileceğiniz en fazla şey, süreç boyunca birkaç noktada Apple'a bazı bilgiler göndermek; buna birazdan geleceğiz. Müşterilerin bir talebi fiilen nasıl gönderdiğini görmek isterseniz, bu Apple'ın uygulamalar veya içerik için iade talep etme rehberinde anlatılıyor.
Ekiplere politikayı genellikle dört parçaya ayırarak anlatırız, çünkü bu dördünden yalnızca ikisi gerçekten sizin sorununuz.
İlk parça uygunluk. Talepler doğrudan Apple'a gider, size asla gelmez. Uygunluk, müşterinin ülkesine veya bölgesine göre değişebilir ve kurallar Apple Medya Hizmetleri Hüküm ve Koşulları içinde yer alır. Yani bir kullanıcı kendi iadesinin neden kabul edilip arkadaşınınkinin neden edilmediğini sorarsa, basit bir yanıt yok. Her birinin nerede yaşadığına bağlı.
İkinci parça kararın kendisi. Bu tamamen Apple'a ait. Siz ancak karar verildikten sonra öğrenirsiniz.
Üçüncü parça sizin sorumluluklarınız; bunlar hukuki değil teknik ve bu, insanları neredeyse her seferinde hazırlıksız yakalar. Bildirimleri alabilen bir sunucu çalıştırın. Apple istediğinde bilgi sağlayın. Temiz kayıt tutun. İşin tamamı bu.
Dördüncü parça karardan sonra erişim haklarına (entitlement) ne olduğu ve gerçekten paraya mal olan kısım bu. Apple'ın ödemeyi geri alması, kendi veritabanınızda tek başına hiçbir şeyi değiştirmez. İade alan ama ücretli erişimi sonsuza kadar elinde tutan bir müşteri, Apple'ın politikasının başarısızlığı değildir. Sisteminizin nasıl kurulduğundaki bir boşluktur.
Hangi parçanın bizim için en önemli olduğunu muhtemelen tahmin edebilirsiniz.
Apple App Store iade süreci geliştiriciler için nasıl işler?
Müşteri başlatır. Apple bitirir. Siz ortada bir yerde durursunuz.
Müşteri Apple üzerinden iade talep eder
↓
Apple talebi inceler
↓
Sunucunuz iadeyle ilgili bir bildirim alabilir
↓
Geçerliyse destekleyici bilgi sağlarsınız
↓
Apple kararını verir
↓
Sonucu bildirim olarak alırsınız
↓
Erişim hakkı ve erişim güncellenir
Burada dikkat edilmesi gereken iki şey var. Apple müşterilere yaklaşık 24 ila 48 saat içinde yanıt beklemelerini söyler ve bu zaman çizelgesinin sizinkiyle hiçbir ilgisi yoktur; bu yüzden bir talep beklemedeyken destek ekibinizin ne vaat ettiğine dikkat edin. Ayrıca yukarıdaki her adım, ancak sunucunuz gerçekten kurulu ve erişilebilirse çalışır. Pek çok ekip kendisininkinin öyle olmadığını sonradan öğrenir. Endpoint'iniz çalışmıyorsa iade yine de gerçekleşir. Siz sadece hiç haberdar olmazsınız.
App Store iade kuralları geliştiriciler için ne anlama geliyor?
Politika dilini bir kenara bırakın; kurallar, mühendislik ekibiniz için kısa ve pek de gösterişli olmayan bir kontrol listesine dönüşür.
● Gerçekten arayabildiğiniz işlem kayıtları. İade bildirimleri Apple'ın işlem tanımlayıcılarına atıfta bulunur. Bunları satın alma anında kaydetmediyseniz bildirim neredeyse işe yaramaz. Ayrıca her işlem ile bir kullanıcı hesabı arasında güvenilir bir bağ gerekir, çünkü Apple'ın payload'ı satın almayı tanımlar, onu yapan kişiyi değil.
● Çalışan ve imzaları kontrol eden bir bildirim endpoint'i. İade olayları App Store Server Notifications üzerinden gelir ve payload'lar imzalıdır. Bu imzaları her seferinde kontrol edin. Kendisine gönderilen her şeye güvenen bir endpoint, URL'si olan bir güvenlik riskidir.
● Önceden kurulmuş bir onay akışı. Apple tüketim bilgisi isterse, yalnızca müşterinin bu veriyi paylaşmayı önceden kabul ettiği durumlarda yanıt verebilirsiniz. Bu sorumluluk size ait. Apple'ın Send Consumption Information dokümantasyonu bu konuda nettir ve onay olmadan gönderilen her yanıt reddedilir. Talep geldikten sonra geri dönüp onay toplayamazsınız da. Ya satın alma anında onayınız vardı ya da o talebi pas geçersiniz.
● İki yönde de çalışan erişim hakkı mantığı. İadeler bazen geri alınır. Apple ayrıca satın almanın yalnızca bir kısmının geri ödendiği kısmi iadelere de izin verir. Tam, kısmi veya geri alınmış; kodunuzun üçünü de ele alması gerekir.
● Sonuçların düşeceği ve finansın gerçekten kullanabileceği bir yer. Yalnızca uygulamanın veritabanında var olan bir iade, ödeme raporuyla asla eşleşmez. Çoğu ekip bunu çeyrek kapanışında öğrenir ve bu nadiren iyi bir gündür.
Apple iade politikası geliştiricileri nasıl etkiler?
Herkes iade edilen tutara odaklanır. Oysa bu genellikle hikâyedeki en küçük sayıdır.
İade edilen bir abonelik dönemi, zaten hesaba kattığınız geliri geri alır ve çoğu durumda ilişki de orada biter. Beklediğiniz yenilemeler sessizce gelmemeye başlar. Tek seferlik satın almalar daha basittir, ama onlar da satıştan sonra gelir; bu yüzden brüt rakamlar üzerine kurulu her raporlama, iadeler düşülene kadar geliri olduğundan yüksek gösterir.
Bu yazının tamamından akılda kalması gereken ayrım şu: Apple'ın onayladığı iade ile sisteminizin fiilen kaydettiği iade iki ayrı olaydır. Apple'ın yarısı, kimse izlese de izlemese de kendi takvimine göre gerçekleşir. Sizin yarınız ise ancak bildirim işleyicisi tetiklendiyse, işlem eşleştiyse, hesap bulunduysa ve erişim güncellendiyse gerçekleşir. Bu halkalardan birini kaçırın, iş yarım kalır ve dışarıdan bakıldığında hangi yarının eksik olduğunu kimse anlayamaz.
Bu boşluğun bir adı var: iade sızıntısı. Bunlar parasını geri alan ve ödediği her şeyi elinde tutmaya devam eden müşterilerdir. Bunu bildirmezler, çünkü onlara göre yanlış giden bir şey yoktur. Aylar sonra mutabakat sırasında ortaya çıkar, o da çıkarsa.
Geri kalan her şey aynı boşluktan türer. Kontrol edecek bir iade kaydı olmadan destek taleplerini yanıtlayan destek temsilcileri. Geri alma işlemleri rakamlara hiç yansımadığı için yaşam boyu değeri olduğundan yüksek gösteren analizler. Geriye dönüp bakılacak bir iade geçmişi olmadığı için bir ürünün diğerlerinden çok daha fazla iade ürettiğini kimsenin fark etmemesi.
Apple'a iade talebi geldiğinde geliştiriciler ne yapmalı?
Yedi adım. İşin çoğu, herhangi bir talep gelmeden çok önce yapılır.
1. Bildirimi alın ve doğrulayın
İade olayları endpoint'inize imzalı JWS payload'ları olarak gelir. İmzayı Apple'ın sertifika zincirine göre kontrol edin. Bundle ID'yi doğrulayın. Ancak ondan sonra içeriğe göre hareket edin. Bu temel hijyendir ve ekipler hâlâ atlıyor. Kendisine verilen her şeyi kabul eden bir endpoint, başkasının istismar edebileceği bir endpoint'tir.
2. İşlemi ve hesabı bulun
Payload'daki işlem tanımlayıcılarını alın ve satın alma kayıtlarınızla eşleştirin. Satın alma anında kalıcı bir hesap token'ı eklediyseniz bu tek bir sorgudur. Eklemediyseniz zaman baskısı altında tahmin yürütüyorsunuz demektir.
3. Satın alma hakkında zaten bildiklerinizi kontrol edin
Kendi sistemlerinizin ne kaydettiğini bilmeden Apple'a işe yarar bir şey söyleyemezsiniz. İçerik teslim edildi mi? Beklendiği gibi çalıştı mı? Müşteri fiilen ne kadarını kullandı? Bunlara kendi kayıtlarınızdan yanıt veremiyorsanız, ilk gerçek sorununuz bu ve o sorun iade değil.
4. Apple istediğinde ve onay varsa tüketim bilgisini gönderin
Bir Apple CONSUMPTION_REQUEST bildirimi, satın almanın nasıl kullanıldığına dair bilgiyle yanıt verebileceğiniz anlamına gelir; ancak yalnızca iki koşul sağlanıyorsa: müşteri geçerli onay vermiş olmalı ve Apple'ın belirlediği 12 saatlik süre içinde olmalısınız. Apple'ın güncel dokümantasyonu bu bildirimi tüm ürün türlerindeki iade talepleriyle ilişkilendirir; bu yüzden işleyicinizi her zaman bir bildirim geleceğini varsaymadan kurun. Gönderdiğiniz her şey kaba bir tahmin değil, doğrudan kayıtlarınızdan gelmeli.
5. Nihai sonucu takip edin
Sonuç bir bildirim olarak gelir. REFUND, iadenin verildiği anlamına gelir. REFUND_DECLINED, verilmediği anlamına gelir. REFUND_REVERSED ise Apple'ın daha önce verdiği bir iadeyi geri aldığı anlamına gelir. Üç sonucu da kaydedin. Geri alma durumu ekiplerin en sık unuttuğu durumdur ve kaçırılan bir geri alma, ödeme yapan bir müşteriyi meşru olarak sahip olduğu bir şeyin dışında bırakabilir.
6. Erişim hakkını ve erişimi güncelleyin
İade verildiğinde erişimi kaldırın. İade geri alınırsa erişimi geri verin. Yalnızca bir yüzdenin geri geldiği kısmi durumu ele alın. Ve bunu sunucu taraflı olaylar üzerinden çalıştırın; böylece müşteri uygulamayı bir daha açsa da açmasa da erişimi doğru kalır.
7. Gelir ve abonelik raporlamasıyla mutabakat yapın
İadeyi doğru döneme ve doğru ürüne eşleştirin. Bu adımı atlarsanız finans ve mühendislik aynı ayın iki farklı versiyonuna bakar. O toplantıda oturmuş olan herkes bundan kaçınmaya değdiğini bilir.
Manuel App Store iade yönetimi neden zorlaşır
Bu dikkatsizlikle ilgili değil. Kısıtlar, birinin günün her saati uyanık ve dikkatli olmasına bağlı bir sürece uymuyor.
İade talepleri müşteriler ne zaman gönderirse o zaman gelir. Pazar sabahı. Gece ikide. Tatillerde. Yanıt süresi kimsenin programına göre durmaz. Her talep bir işlem sorgusu, bir hesap eşleşmesi, bir onay kontrolü, bir kullanım rakamı ve bir erişim hakkı güncellemesi gerektirir. İyi bir günde bu yaklaşık beş dakikalık iş. Ama zamana duyarlı, tekrarlayan ve doğru yapıldığında tamamen görünmez. Sabah 4'te doğru şekilde halledilen bir iade için kimseye teşekkür edilmez.
Hacim işi zorlaştırır. Birden fazla uygulama yönetmek de öyle; işlem verisi bir sistemde, hesap verisi başka bir sistemde. Sonra işleyiciyi anlayan mühendis ekip değiştirir. Takip tablosu refunds_OLD_final_v2 gibi bir isim alır ve sessizce açılmaz olur. Finans boşluğu çeyrek kapanışında bulur; yani birinin hâlâ bir şey yapabileceği noktadan yaklaşık üç ay sonra.
Geliştiriciler App Store iadelerini nasıl daha güvenilir yönetebilir?
Manuel izleme aşağı yukarı şöyle görünür: biri bir dashboard açar, bir işlemi sorgular, bir kaydı günceller ve devam eder. Düşük hacimde gayet iyi çalışır ve tuzak da tam burada, çünkü gürültülü bir patlamayla bozulmaz. Yavaşça solar. Çalışmayı bıraktığı tek bir an yoktur, bu yüzden kimse zamanında yakalayamaz.
Otomasyon mekanik adımları insanların üzerinden alır: bildirimleri alma ve doğrulama, işlemleri hesaplarla eşleştirme, yanıt verisini derleme, yanıt sürelerini takip etme, sonuçları kaydetme ve erişim haklarını senkronize tutma.
Yapamayacağı şey Apple'ın fikrini değiştirmek. Otomasyon iadeleri daha az olası kılmaz ve bazı araçlar ne ima ederse etsin bir kararı etkileyemez. Değiştirdiği tek şey, sürecin sizin tarafınızın tutarlı ve zamanında gerçekleşip gerçekleşmediğidir; bu da tek başına düzeltmeye değer bir şey.
App Store iade yönetimi, bu işin girdiği kategori ve bu alandaki bir aracın neleri kapsaması gerektiği konusunda açık olmakta fayda var: bildirim işleme, işlemleri kullanıcılarla eşleştirme, onaya ve zamanlamaya uyan yanıt iş akışları, sonradan bakabileceğiniz iade geçmişi ve tam, kısmi ve geri alınmış iadeleri ele alan erişim hakkı güncellemeleri.
RefundSensor işin bu kısmını üstlenir. App Store ve Google Play iade olaylarını otomatik bir iş akışına bağlar; böylece yanıtlar kimse bildirimleri elle izlemeden mağazanın süresi içinde gönderilir ve hacim büyüdükçe iade kayıtları doğru kalır. Apple'ın kararını değiştirmez, çünkü hiçbir şey değiştiremez. Değiştirdiği şey, her iadenin ekibinize sonrasında ne kadar iş bıraktığıdır.
Bu kurallar nerede belgeleniyor
Yukarıdakilerin tamamının arkasında üç Apple kaynağı var. Herhangi bir şey inşa etmeden önce bunları kendiniz okuyun ve ara sıra tekrar bakın, çünkü bu alan zaten birden fazla kez değişti.
Uygulamalar veya içerik için iade talep etme — müşterilerin gördüğü politika. Taleplerin nasıl gönderildiğini, 24 ila 48 saatlik güncelleme süresini ve Apple'ın bölgesel uygunluk notunu kapsar.
Send Consumption Information — geliştiriciye yönelik yanıt iş akışı. Onay gereksinimini, 12 saatlik süreyi ve istek alanlarını kapsar. Tüketim bilgisi işlemeye dokunmadan önce tamamını okumaya değer.
App Store Server Notifications — iade olaylarının backend'inize nasıl ulaştığı. İmzalı payload formatını ve CONSUMPTION_REQUEST, REFUND, REFUND_DECLINED ve REFUND_REVERSED dahil bildirim türlerini kapsar.
İade olayları hâlâ elle kontrol ediliyorsa
Manuel izleme gayet iyi çalışır, ta ki çalışmayana kadar; ve arıza genellikle sessizdir. Kimsenin görmediği bir bildirim. Gece 3'te kapanan bir süre. Bir çeyrek boyunca erişimini koruyan, iade almış bir müşteri.
Bu tanıdık geliyorsa, RefundSensor iade iş akışını manuel takipten çıkarabilir: mağaza olayları, yanıt süreleri ve sonuçların hem kayıtlarınıza hem de erişim hakkı mantığınıza ulaşmasını sağlamak.
Sık sorulan sorular
Apple'ın müşteri iade taleplerini nasıl ele aldığına dair kurallar bütünü ve bunun etrafında geliştiricilere düşen teknik işlerdir. Sonuca Apple karar verir. Geliştiriciler etrafındaki altyapıyı yönetir: bildirimleri almak, istendiğinde ve onay izin verdiğinde tüketim bilgisini göndermek ve karar geldiğinde erişimi ve kayıtları güncellemek.
Hayır, isteseler bile bunu yapmanın bir yolu yok. Her bir talepte son kararı Apple verir. Mevcut tüketim endpoint'i tercih ettiğiniz sonucu belirtmenize izin verir, ancak bu bir talimat değil, birçok girdiden yalnızca biridir. Apple yine de farklı karar verebilir.
Müşteri Apple'a bir talep gönderir. Apple talebi inceler ve tüketim bilgisi için sunucunuzla iletişime geçebilir. Onay varsa, Apple'ın belirlediği süre içinde yanıt verirsiniz. Apple karar verir, sonucu ayrı bir bildirim olarak gönderir ve sistemleriniz müşterinin erişim hakkını ve kayıtlarınızı bu karara göre günceller.
Evet, ama yalnızca tek bir dar yoldan. Bir CONSUMPTION_REQUEST bildirimi geldiğinde Apple, satın almanın nasıl kullanıldığına dair bilgi ister. Yanıtınızın geçerli müşteri onayına dayanması, doğru olması ve Apple'ın süresi içinde gönderilmesi gerekir. İncelemeye bilgi sağlar. Kararı belirlemez.
Apple bir iade talebini incelerken, sunucunuzdan bir satın alma hakkında bilgi isteyen bir App Store Server Notification'dır. İadenin kendisi değildir, bir karar da değildir. Yanıt vermek için 12 saatiniz vardır ve bu yalnızca müşterinin bu veriyi paylaşmayı kabul ettiği durumlarda geçerlidir.
İki şekilde. Doğrudan olarak, iade edilen dönem geri alınır. Dolaylı olarak, ilişki genellikle orada biter ve güvendiğiniz yenilemeler hiç gelmez. Brüt yenilemelere dayalı raporlama, iadeler düşülene kadar geliri olduğundan yüksek gösterir ve yaşam boyu değer de aynı hatayı ileriye taşır.
Üç şey, ardından dikkat edilecek iki şey. Sonucu işleme ve müşteriye karşılık kaydedin. İlgili erişim hakkını kaldırın. İadeyi doğru dönemin gelir raporlamasına yansıtın. Sonra bir işlemin yalnızca bir kısmının iade edildiği kısmi durumu ele alın ve Apple bir iadeyi daha sonra geri alabileceği için erişimi geri verme yolunu hazır tutun.
Mekanik kısımlar, evet, tamamen. Bildirimleri doğrulamak, işlemleri hesaplarla eşleştirmek, yanıt sürelerini takip etmek, erişim haklarını güncellemek, iade geçmişini tutmak. Bunların hepsi otomatikleştirilecek kadar öngörülebilir. İnsana kalması gereken şey, onay akışını tasarlamak ve iade örüntülerinizi gerçekten okumaktır, çünkü bunlar size ürün hakkında gerçek bir şey söyler.






