İçeriğe geç
App Store Refund Management

Apple'ın 12 Saatlik İade Penceresi: Geliştiricilerin Çoğu Neden Varsayılan Olarak İadeleri Kaybediyor

Bir Apple iade talebine yanıt vermek için yaklaşık 12 saatiniz var. Bu pencere günün her saatinde açılabilir ve kimse yanıt vermezse iade genellikle varsayılan olarak onaylanır. İşte bu pencerenin size sessizce nasıl mal olduğu.

4 min read
Apple'ın 12 Saatlik İade Penceresi: Geliştiricilerin Çoğu Neden Varsayılan Olarak İadeleri Kaybediyor

Kısa cevap: Bir müşteri, uygulama içi satın alma veya abonelik için Apple'dan iade talep ettiğinde, App Store sunucunuza bir CONSUMPTION_REQUEST bildirimi gönderir ve Send Consumption Information uç noktası aracılığıyla tüketim verileriyle yanıt vermeniz için size yaklaşık 12 saat tanır. Apple bu veriyi kararında değerlendirir. Zamanında yanıt vermezseniz Apple, sizin girdiniz olmadan karar verir ve haksız iadeler genellikle varsayılan olarak onaylanır. Bu yanıtı otomatikleştirmek, her talebin her seferinde pencere içinde yanıtlanmasını sağlar.

Kısa versiyon

Ödeme altyapısının sahibi Apple'dır. Birisi uygulamanızda bir abonelik veya uygulama içi satın alma yaptığında, parayı Apple toplar, kendi payını alır ve iadeleri yönetir. Yıllarca geliştiricilerin iade kararlarında hiçbir söz hakkı olmadı.

Bu değişti. Apple artık, müşterinin satın aldığı şeyi nasıl kullandığına dair yapılandırılmış kanıtlar olan tüketim bilgilerini göndermenize izin veriyor ve bunu iade kararına dahil ediyor. İadeyi kendiniz onaylama veya reddetme hakkınız yok; nihai kararı yine Apple veriyor. Ama sessizlik, Apple'a üzerinde çalışacak hiçbir şey vermez; iyi hazırlanmış bir yanıt ise bağlam sağlar.

İşin can alıcı noktası zamanlama ve tutarlılık. İade penceresi kısa, apple iade yanıt süresi sınırlı, öngörülemeyen saatlerde açılıyor ve bunu gerçek bir hacimde manuel olarak yapmak imkansız. Otomasyonun çözdüğü sorun tam olarak bu.

Apple'ın iade akışı gerçekte nasıl işliyor

İşte uçtan uca sıralama:

  1. Müşteri iade talep eder. Bunun için reportaproblem.apple.com adresine gider, satın almayı seçer, bir neden belirler ve gönderir.

  2. Apple sunucunuzu bilgilendirir. Uygun satın almalar için App Store, App Store Server Notifications V2 aracılığıyla bir CONSUMPTION_REQUEST bildirimi gönderir. Bu veri paketi, satın almayı tanımlayan imzalı işlem verilerini içerir.

  3. Tüketim verileriyle yanıt verirsiniz. Orijinal işlem kimliği ve teslimat, kullanım, onay ile iade tercihinizi açıklayan yapılandırılmış bir ConsumptionRequest gövdesiyle Send Consumption Information'ı çağırırsınız.

  4. Apple karar verir. İade karar sistemi, verilerinizi müşterinin geçmişi ve diğer faktörlerle birlikte değerlendirir, ardından bir karar verir.

  5. Sonuç hakkında bilgilendirilirsiniz. Bir REFUND bildirimi, iadenin onaylandığı anlamına gelir; bir REFUND_DECLINED bildirimi (StoreKit API üzerinden başlatılan talepler için) ise onaylanmadığı anlamına gelir.

Bir CONSUMPTION_REQUEST neler içerir ve siz karşılığında ne gönderirsiniz

Bildirimin kendisi imzalı işlem bilgilerini ve müşterinin belirttiği nedeni (consumptionRequestReason) taşır. Asıl işin yapıldığı yer sizin yanıtınızdır. Apple, aşağıdakiler dahil alanlara sahip yapılandırılmış bir ConsumptionRequest tanımlar:

İşte görselinizden yeniden oluşturulan tablo:

Alan

Apple'a ne söylediği

customerConsented

Müşterinin bu veriyi paylaşmayı kabul edip etmediği. True olmalıdır, aksi halde Apple gönderimi reddeder.

consumptionStatus

Satın alınan içeriğin hiç tüketilmediğini, kısmen tüketildiğini veya tamamen tüketildiğini belirtir.

deliveryStatus

Uygulama içi değerin veya hizmetin gerçekten teslim edilip edilmediği.

accountTenure

Müşterinin sizde ne kadar süredir hesabı olduğu.

playTime

Müşterinin uygulamada ne kadar zaman geçirdiği.

lifetimeDollarsPurchased

Müşterinin uygulamalarınızda toplam harcadığı tutar.

lifetimeDollarsRefunded

Müşteriye daha önce iade edilen toplam tutar.

sampleContentProvided

Müşterinin satın almadan önce içeriği deneyip deneyemediği.

userStatus

Müşterinin hesabının mevcut durumu (aktif, askıya alınmış vb.).

refundPreference

Apple'a önerilen tercihiniz: undeclared, prefer grant veya prefer decline.

Apple'a önerilen tercihiniz: undeclared, prefer grant veya prefer decline.

Her alan bir sinyaldir. Boş bırakıldığında, Apple'ın asla elde edemeyeceği bir bağlamdır. Her alanı ve kabul edilen değerlerini What Is a CONSUMPTION_REQUEST Notification? A Field-by-Field Breakdown başlıklı yazımızda detaylandırıyoruz.

12 saatlik pencere

Üretim ortamında bir CONSUMPTION_REQUEST'e yanıt vermek için yaklaşık 12 saatiniz vardır. Bu consumption_request son tarihi kritiktir, çünkü bunu kaçırmak girdi sağlama şansınızdan vazgeçmeniz anlamına gelir; Apple elindeki bilgilerle karar verir.

Sorun, apple iade yanıt penceresinin uzunluğu değil, ne zaman açıldığıdır. İade talepleri mesai saatlerini beklemez. İade penceresi gece yarısı, hafta sonu veya tatil günlerinde açılabilir ve manuel bir inceleme kuyruğu, sürekli nöbetçi biri olmadan buna yetişemez. Bu, geliştiricilerin itiraz edebilecekleri iadeleri kaybetmelerinin en yaygın tek nedenidir: kötü bir yanıt değil, hiç yanıt olmaması. Bu konuyu The 12-Hour Window: Why Most Developers Lose Refunds by Default yazımızda daha derinlemesine ele alıyoruz.

Onay gerekliliği, bunu atlamayın

Bu, neredeyse herkesin takıldığı kısım ve sadece teknik değil, hukuki bir mesele.

Apple'ın CONSUMPTION_REQUEST'i, müşterinin verilerini paylaşmayı kabul edip etmediğini size söylemez. Bu bilinçli bir tasarımdır; Apple, herhangi bir tüketim verisi gönderilmeden önce onayın sunucunuz tarafından değil, uygulamanız tarafından alınıp doğrulanmasını bekler. API çağrınızda customerConsented'i true olarak ayarlamalısınız ve geliştirici olarak, geçerli bir onay almış olmaktan yalnızca siz sorumlusunuz, çünkü kullanıcıdan topladığınız verileri paylaşan sizsiniz.

Bunu yanlış yaparsanız yalnızca reddedilen bir gönderim riski değil, bir GDPR veya DPDP uyumluluk sorunu riski de alırsınız. Herhangi bir şeyi otomatikleştirmeden önce onayı uygulamanızın şartlarında ve satın alma akışında doğru şekilde ele alın. Nerede ve nasıl yapılacağını Customer Consent & the Consumption API: What Apple Actually Requires yazımızda tam olarak ele alıyoruz.

Bunu otomatikleştirmek gerçekte neyi gerektirir

Kağıt üzerinde, yanıtı otomatikleştirmek bir hafta sonu projesi gibi görünür: bildirimi yakala, alanları doldur, uç noktayı çağır. Üretimde ise bu, kalıcı bir altyapı parçasıdır ve gerçekte neyin dahil olduğunu anlamak, "bunu kuracağız" ile "bunu atlayacağız" arasındaki farktır.

Güvenilir bir kurum içi yanıtlayıcının, Apple'ın imzalı bildirimlerini alması ve doğrulaması, bir talep geldiği anda her müşteri için doğru ve güncel kullanım ve faturalandırma verilerini çekmesi, bu veriyi Apple'ın tam ConsumptionRequest değerlerine eşlemesi ve bunu ~12 saatlik apple iade yanıt penceresi içinde, günün her saatinde, kimse izlemeden göndermesi gerekir. Bunun üzerine, son tarihe duyarlı yeniden denemelere, hata yönetimine, denetlenebilir günlük kayıtlarına, bir arıza olduğunda haberdar olmanızı sağlayan izlemeye ve Apple veri paketlerini veya alanlarını her değiştirdiğinde sürekli bakıma ihtiyaç duyar. Bunların hiçbiri sizin ürününüz değildir. Hepsi, uygulamanızın yaptığı işle hiçbir ilgisi olmayan bir iş akışı için süresiz olarak sahip olacağınız altyapıdır. (Bildirim katmanını Setting Up App Store Server Notifications V2 yazımızda daha derinlemesine ele alıyoruz.)

Çoğu ekibin sonunda yaptığı hesap budur: mekanikler öğrenilebilir, ancak uyumlu, son tarihe duyarlı bir yanıtlayıcıyı inşa etmek ve sürekli göz kulak olmak, uygulamanın kendisine hiçbir katkısı olmayan kalıcı bir maliyettir. Bu, tam olarak yönetilen bir hizmetin var olma amacı olan, farklılaşmamış bir altyapı işidir.

RefundSensor'ın yaptığı tam olarak budur. Tek bir webhook URL'siyle App Store Connect kurulumunuza bağlanır; SDK, kod değişikliği veya uygulama yeniden gönderimi gerekmez, ardından Apple'ın iade penceresi içinde her CONSUMPTION_REQUEST'i otomatik olarak yanıtlar, alanları verilerinizden eşler, yeniden denemeleri ve izlemeyi yönetir, Apple'ın değişiklikleriyle güncel kalır ve her sonucu tek bir dashboard'da kaydeder. Apple iade otomasyon yazılımı arayan ekipler için bu, tüm iade yanıt altyapısını kendi başınıza inşa etme ve sürdürme ihtiyacını ortadan kaldırır.

Yanıt vermek iadeleri gerçekten azaltır mı?

Evet, ancak sonuçlar değişkendir ve nihai kararı her zaman Apple verir. Doğru tüketim verisi göndermek, Apple'ın sistemine daha fazla bağlam sağlar ve tutarlı bir şekilde yanıt veren geliştiriciler, talepleri yanıtsız bırakan geliştiricilere kıyasla genellikle daha az onaylanmış iade görür. Kanıtlarınızın gerçekten desteklediği durumlarda "prefer decline" önerisini seçmek, Apple'ın dikkate aldığı bir girdi daha sağlar.

Bu nedenle apple iade yanıt süresi içinde yanıt vermek, Apple'ın consumption_request son tarihinden önce bilginizi almasını sağlamaya yardımcı olabilir. Bu bir sonucu garanti etmez, ancak kaçırılan bir yanıtın, bilginizin dikkate alınmama nedeni olmasını önler.

Otomasyonun yapabileceği ve yapamayacağı şeyler

Sınırlar konusunda kendinize karşı dürüst olun:

  • Belirli bir iadenin reddedileceğini garanti edemez. Nihai kararı her seferinde Apple verir.

  • Hiçbir zaman bir CONSUMPTION_REQUEST oluşturmayan iadelere itiraz edemez; her iade bunu oluşturmaz.

  • Her uygun talebin apple iade yanıt penceresi içinde, tutarlı ve doğru verilerle yanıtlanmasını sağlayabilir; böylece kimse bildirimi görmediği için bir iadeyi asla kaybetmezsiniz.

  • Apple iade taleplerine 12 saat içinde nasıl yanıt verileceğini otomatikleştirerek consumption_request son tarihini kaçırma riskini azaltabilir.

Asıl önemli olan son nokta budur. Apple'ın kararını geçersiz kılmıyorsunuz, her zaman söz hakkınızı kullanmanızı garanti ediyorsunuz.

Manuel işlem bu açığı neden kapatamaz

Bunu elle halletmeye çalışan ekipler genellikle şu üç durumdan birine düşer:

  • "Sabah kontrol ederiz" yaklaşımı — bu, gece boyunca ve hafta sonu gelen tüm talepleri, yani bunların büyük bir kısmını kaçırır.

  • Nöbet rotasyonu — birinin teknik olarak günün her saatinde 12 saatlik pencereyle ilgili bir görevden sorumlu olması; bu hem sefil bir iş hem de yine de insan hatasına açık.

  • "Vazgeçtik" yaklaşımı — yetişmenin imkansız olması nedeniyle yanıt vermeyi bırakan sessiz çoğunluk.

Ortak nokta şu: son tarih makine hızında, yanıt ise insan hızında. Siz uyurken işleyen bir saati disiplinle yenemezsiniz. Her manuel yaklaşım, aslında yalnızca hangi taleplerin kaçırılacağını seçmektir.

Bu bir ürün sorunu değil, bir zamanlama sorunu

Önemli olan bakış açısı değişimi şu: bu iadeleri kaybetmek, uygulamanız hakkında hiçbir şey söylemez.

Harika bir ürününüz, mutlu kullanıcılarınız ve düşük bir gerçek iade oranınız olabilir, yine de bu pencere yüzünden gelir kaybedebilirsiniz çünkü kayıplar iadenin hak edilip edilmediğiyle değil, orada yanıt verecek birinin olup olmadığıyla ilgilidir. Bu, tuhaf bir şekilde iyi bir haber. Bir ürün sorununu düzeltmek zordur. Bir zamanlama sorununun ise net bir çözümü vardır: saatten bağımsız olarak, her zaman anında yanıt verecek bir şeyin var olmasını sağlamak.

Bunu gerçekte çözen şey

Makine hızındaki bir pencereyi kapatabilecek tek şey, makine hızında bir yanıttır. Otomasyon, her CONSUMPTION_REQUEST'i geldiği anda doğru tüketim verileri ve iade tercihinizle Apple'ın penceresi içinde yanıtlar; bir pazar günü saat 03:00'te, bir salı günü saat 15:00'teki kadar güvenilir bir şekilde.

RefundSensor'ın yaptığı tam olarak budur. Her iade talebini dinler, pencere içinde otomatik olarak yanıt verir ve sonucu takip eder; böylece kimse bildirimi görmediği için bir iadeyi bir daha asla kaybetmezsiniz. Kurulum, kod değişikliği gerektirmeden yaklaşık 30 dakika sürer ve aynı "ne zaman açılacağı belirsiz, hızlı kapanır" sorununa sahip olan Google Play'in chargeback inceleme penceresini de kapsar. (Tüm resmi görmek için How to Automate Apple Refund Requests ve Google Play Refunds & Chargebacks yazılarına bakın.)

[ÜRÜN VERİSİ YER TUTUCUSU Refund Index yayına girdiğinde buraya gerçek bir RefundSensor istatistiği ekleyin, ör. mesai saatleri dışında gelen taleplerin oranı veya korunan tutar. Bir sayı UYDURMAYIN.]

Apple'ı kandırmıyorsunuz. Sadece çoğu geliştiricinin farkında bile olmadan vazgeçtiği söz hakkını her zaman kullanmanızı sağlıyorsunuz.

Resmi kaynaklar {#official-sources}

Apple'ın zamanlaması ve süreci değişebilir, bu yüzden dokümantasyonunu nihai otorite olarak kabul edin:

Pencere, müşterileriniz ne zaman isterse o zaman açılır. Yine de orada olun. RefundSensor, her Apple iade talebini otomatik olarak, 12 saatlik pencere içinde saat 03:00, hafta sonları ve tatiller dahil yanıtlar ve her sonucu takip eder. Kurulumu yaklaşık 30 dakika sürer, kod değişikliği gerekmez. Ücretsiz başla →

Yayınlandıktan sonra eklenecek dahili bağlantılar: Apple refund automation cornerstone · CONSUMPTION_REQUEST field-by-field · Google Play refunds cornerstone.

Sık sorulan sorular

Üretim ortamında, müşterinin talebi gönderdiği andan itibaren yaklaşık 12 saat. Bu süreyi kaçırırsanız Apple, sizin girdiniz olmadan karar verir.

Apple, elindeki bilgilerle ilerler; bu da yalnızca müşterinin talebidir, sizden gelen hiçbir şey yoktur. Yanıtlanmayan talepler, haksız olanlar dahil, genellikle varsayılan olarak onaylanır.

Hayır. Bu süre Apple tarafından belirlenir. Bu süreyi her zaman yakalamanın tek güvenilir yolu, talep geldiği anda otomatik olarak yanıt vermektir.

Genellikle içerik nedeniyle değil, zamanlama nedeniyle. Talepler mesai saatleri dışında geliyor ve manuel bir süreç her birine zamanında yanıt veremiyor, bu yüzden itiraz edilebilecek iadeler varsayılan olarak kaybediliyor.

Hayır. Nihai kararı her zaman Apple verir. Otomasyon, her seferinde yanıt vermenizi garanti eder; Apple'ın kararını geçersiz kılmaz.

#apple refund 12 hour window#apple refund response time#consumption_request deadline#apple refund granted by default#refund window
Refund SensorRefund Sensor TeamRefund defense for App Store and Google Play developers