Apple ve Google iadeyi her seferinde tek bir mağazada yapar, bu yüzden platformlar arası aboneliğiniz erişimi diğer her yerde kendisi sonlandırmalıdır
Apple veya Google platformlar arası bir aboneliği iade ettiğinde, Android uygulamanız, iPhone uygulamanız ve web siteniz bunu kendiliğinden öğrenmez. Her mağaza satın alımını tek bir hesaba nasıl bağlayacağınızı, doğru yetkiyi nasıl iptal edeceğinizi ve iade almış kullanıcılara hizmet vermek için para ödemeyi nasıl bırakacağınızı anlatıyoruz.

Önemli noktalar
- Apple'ın App Review Guideline 3.1.3(b) kuralı, birden fazla platformda çalışan uygulamaların, kullanıcılara diğer platformlarda veya geliştiricinin web sitesinde edindikleri içerik ve aboneliklere erişim vermesine izin verir. Şart, bu öğelerin uygulamada uygulama içi satın alma olarak da sunulmasıdır.
- Apple ve Google yalnızca kendi mağazalarında yapılan satın alımları iade eder, bu nedenle platformlar arası bir abonelikte Apple iadesi müşterinin Google Play veya web faturalandırmasına ulaşmaz. Geliştiricinin sunucusu, her platformda verdiği erişimi kendisi kaldırmalıdır.
- Apple, bir consumable, non-consumable, non-renewing abonelik veya auto-renewable abonelik iade ettiğinde App Store Server Notifications V2 üzerinden bir REFUND bildirimi gönderir ve iade edilen her işlemi saklamanın, izlemenin ve gereğini yapmanın geliştiricinin sorumluluğunda olduğunu belirtir.
- Apple'ın appAccountToken değeri, geliştiricinin bir uygulama içi satın almaya eklediği bir UUID'dir. App Store Server API'nin Set App Account Token uç noktası, kullanılan bir teklif kodu gibi uygulama dışında yapılan satın alımlara bu değeri sonradan ekleyebilir.
- Google Play'in setObfuscatedAccountId alanı bir satın alımı geliştiricinin uygulamasındaki bir hesaba bağlar, 64 karakterle sınırlıdır ve e-posta gibi açık metin kişisel veri içerirse satın alımlar engellenir.
- Google Play'in Voided Purchases API'si iade edilen ve ters ibraz (chargeback) yapılan satın alımları bir orderId ve voidedSource değeriyle bildirir. voidedSource 0 ise User, 1 ise Developer, 2 ise Google anlamına gelir.
- 3 Ağustos 2026'dan sonra verilen Google Play siparişlerinde ters ibraz kabul edildiğinde geliştirici, Play hizmet bedeli düşülmüş satın alma fiyatını ve bankanın ters ibraz ücretlerini öder.
Aboneniz Apple'a ödeme yaptı, aynı öğleden sonra Android uygulamanızı açtı ve şimdi iş yerinde web sitenizi kullanıyor. Sonra Apple ona iade yapıyor. Google Play'in haberi olmuyor. Web faturalandırmanızın da haberi olmuyor. Kendi sunucunuz erişimi sonlandırmadıkça, iade edilmiş platformlar arası bir abonelik, hesap veritabanınızı okuyan her ekranda çalışmaya devam eder. Mağazalar iadeyi her seferinde tek bir vitrin için yapar ve aboneliğin bütünü yalnızca sizin hesap sisteminizde bulunur. Bu yüzden onu sonlandırabilecek tek yer de orasıdır.
Tek bir mağazanın iadesi platformlar arası aboneliği neden sonlandırmaz
Apple bu düzene açıkça izin verir. App Review Guideline 3.1.3(b), Multiplatform Services, birden fazla platformda çalışan uygulamaların, kullanıcıların diğer platformlarda uygulamanızda veya web sitenizde edindikleri içerik, abonelik ya da özelliklere erişmesine izin verebileceğini söyler. Şart, bu öğelerin uygulamada uygulama içi satın alma olarak da sunulmasıdır.
Apple'ın tek bir aboneliği birden fazla uygulamada sunmaya ilişkin rehberi bunun pratikte nasıl işlediğini anlatır. Erişimi sunucunuz, birleşik bir hesap veritabanı kullanarak verir ve her uygulama oradan okur. Aynı rehber, bir satın alım diğer uygulamalara aktarılmazsa kullanıcının aynı hizmet için birden fazla kez ödeme yapabileceği konusunda uyarır.
Bu tasarımın gözden kaçan bir sonucu vardır. Yetki sizin veritabanınızda yaşar, ama her mağaza yalnızca kendi makbuzlarını bilir. Apple iPhone satın alımını iade edip sunucunuza haber verebilir. Android uygulamanıza veya web sitenize hiçbir şey söyleyemez. İade işleyiciniz yalnızca iOS istemcisini güncelliyorsa, müşteri parasını geri alır ve aboneliği diğer her yerde elinde tutar.
| Ödemeyi nerede yaptı | İadeye kim karar verir | Sunucunuz bunu nasıl öğrenir | Yenilemeleri kim durdurabilir |
|---|---|---|---|
| App Store | Apple | App Store Server Notifications V2 içindeki REFUND bildirimi | Müşteri, App Store abonelik ayarlarından veya uygulamanızın açtığı bir yönetim ekranından |
| Google Play | İlk 48 saatte Google, sonrasında siz veya Google | Voided Purchases API ve gerçek zamanlı geliştirici bildirimleri | Müşteri ya da purchases.subscriptionsv2.cancel aracılığıyla siz |
| Web siteniz | Siz | Ödeme işlemcinizin webhook'ları | Siz |
İadeden sonra her platformda erişim nasıl iptal edilir
Her mağaza satın alımını tek bir hesaba bağlayın
Bir iadeyi doğru kişiyle eşleştirmek işin zor kısmıdır, çünkü her mağaza alıcıyı kendi yöntemiyle tanımlar. İkisi de size kendi hesap kimliğiniz için bir alan sunar. Bunu her satın alımda kullanın.
- Apple'da, satın alım başlarken sizin ürettiğiniz bir UUID olan appAccountToken değerini ayarlayın. App Store aynı UUID'yi işlem ve yenileme bilgilerinde geri döndürür. Apple, aynı müşteriye ait her işlem için tek bir değeri yeniden kullanabileceğinizi söyler.
- Müşteri satın alımı uygulamanızın dışında yaptıysa, örneğin App Store'da bir teklif kodu kullanarak, işlemde token bulunmaz. Set App Account Token uç noktası bir token ekler. auto-renewable bir abonelikte bu, geçmiş işlemlere değil mevcut ve sonraki yenilemelere uygulanır ve Family Sharing ile paylaşılan satın alımlarda çalışmaz.
- Google Play'de, faturalandırma akışını başlatırken setObfuscatedAccountId ile gizlenmiş bir hesap kimliği iletin. 64 karakterle sınırlıdır. Google, e-posta gibi açık metin kişisel verilerin satın alımların engellenmesine yol açtığını söyler ve şifreleme ya da tek yönlü bir hash önerir.
İki mağazayı da dinleyin, sonra tek bir yetki yazın
Apple, auto-renewable abonelikler dahil herhangi bir ürün türünü iade ettiğinde REFUND gönderir. Müşterinin başlattığı bir itiraz nedeniyle daha önce verdiği bir iadeyi geri aldığında REFUND_REVERSED gönderir. Google Play'de Voided Purchases API, iade edilen ve ters ibraz yapılan satın alımları listeler ve her birinde tam olarak hangi satın alım veya yenileme olduğunu belirten bir orderId bulunur. Web ödeme işlemciniz kendi iade olayını gönderir. Üçü de aynı işleyiciye düşmeli ve aynı kaydı değiştirmelidir.
Hesabı değil, yetkiyi iptal edin
İade bir satın alımı iptal eder, bir kişiyi değil. İade edilen satın alımdan gelen erişimi kaldırın, ardından hesabın hâlâ neye sahip olduğunu yeniden hesaplayın. Müşterinin başka bir mağazadan aktif bir aboneliği de varsa, erişimini onun üzerinden korur. Yoksa, her istemci sunucunuzu bir sonraki kontrol edişinde premium özellikleri kaybeder.
Aynı kişi iki mağazada abone olduğunda
Çift abonelikler sorunun diğer yarısıdır. Biri Android'de abone olur, yeni bir iPhone alır, oturum açmaz ve yeniden abone olur. Artık tek bir hizmet için iki kez ödüyor ve bu ödemelerden biri genellikle bir iade talebine dönüşür. Apple'ın ticaret ekibi, Apple Developer Forums'ta bir geliştiriciye verdiği yanıtta bunu sade bir şekilde ifade etti: bir uygulamanın hesap sistemi, başka bir platformda yinelenen satın alımı önleyecek mantık içermelidir.
Ödeme duvarını göstermeden önce her mağazayı kontrol edin
Kullanıcının ödeme duvarından önce oturum açmasını sağlayın, sunucunuzda tüm aktif satın alımlarını sorgulayın ve herhangi biri bu platformu kapsıyorsa teklifi atlayın. Bu tek kontrol, yinelenen ödemelerin çoğunu daha gerçekleşmeden önler.
Zaten gerçekleşmişse hangi satın alımı iade etmeliyim?
Kontrolünüzde olanı iade edin. Google Play'de iadeyi Play Console'da kendiniz yapabilirsiniz ve DEVELOPER_REQUESTED_STOP_PAYMENTS ile purchases.subscriptionsv2.cancel bir sonraki ödemeyi durdurur. Web aboneliğinizi doğrudan iade etmek sizin elinizdedir. App Store iadelerine Apple karar verir, bu yüzden yinelenen satın alım iPhone'daysa müşteri iadeyi Apple'dan talep eder ve uygulamanız bu talebi StoreKit'in iade talebi API'siyle açabilir.
Bir platformu atlayan iadenin size maliyeti
İade edilen fiyat yalnızca ilk kayıptır. Apple iadesi Android uygulamanıza veya web sitenize hiç ulaşmayan bir müşteri, çalıştırma maliyetini sizin ödediğiniz şeyleri kullanmaya devam eder. Her oturum hâlâ işlem gücü tüketir. Her yapay zeka özelliği hâlâ size faturalanan üçüncü taraf API çağrıları yapar. Dosyaları hâlâ depolama alanı kaplar ve uygulamanız içerik üreticilere görüntüleme veya kullanım başına ödeme yapıyorsa, bu ödemeler çıkmaya devam eder. Yıllık bir planda bu, artık hiçbir şey ödemeyen bir hesap için tam bir yıllık hizmet maliyeti anlamına gelebilir.
Banka yolu durumu daha da kötüleştirir. Google, 3 Ağustos 2026'dan sonra verilen Google Play siparişlerinde bir ters ibraz kabul edildiğinde geliştiricinin, Play hizmet bedeli düşülmüş satın alma fiyatından ve finans kuruluşunun aldığı ters ibraz ücretlerinden sorumlu olduğunu söyler. Ters ibraz bankada kesindir. Ters ibraz yapmış ve hâlâ erişimi olan bir müşteri size fiyatı, ücretleri ve hizmet maliyetini aynı anda kaybettirmiş olur.
| Kaçırılan bir iptalden sonra çalışmaya devam eden | Bedelini kim öder |
|---|---|
| Android veya web'deki her oturum için sunucu işlem gücü | Siz |
| Özelliklerinizin yaptığı üçüncü taraf API çağrıları | Siz |
| Kullanıcının dosyaları ve geçmişi için depolama | Siz |
| İçerik üreticilere kullanım veya görüntüleme başına ödemeler | Siz |
| 3 Ağustos 2026 sonrası bir Google Play siparişinde ters ibraz ücretleri | Siz, Play hizmet bedeli düşülmüş satın alma fiyatına ek olarak |

Platformlar arası kullanım yine de kanıttır
Platformlar arasında tek hesap, bir mağaza sizin tarafınızı sorduğunda da işe yarar. Apple'ın tüketim bilgisi, müşterinin bir consumable, non-consumable veya non-renewing aboneliğin ne kadarını tükettiğini sorar. auto-renewable aboneliklerde yüzde göndermezsiniz, çünkü Apple bunu geçen süreden hesaplar. Google Play'in ters ibraz incelemesi 1.000'e kadar tüketim kullanım olayı kabul eder ve her biri gizlenmiş hesap kimliğini taşıyabilir. Hangi cihaz üretmiş olursa olsun, tek bir hesap kimliği altında kaydedilen kullanım, gösterebileceğiniz kullanımdır.
Hangi iadeler sizin tarafınızı hiç sormaz
İadelerin çoğu siz olmadan karara bağlanır. Google Play, kendi iade akışı üzerinden 48 saat içinde bir satın alımı iade edebilir. Mağaza destek iadeleri, geçersiz kılınan satın alımlar ve Google'ın hiç onaylamadığınız satın alımları yaklaşık 72 saatte otomatik olarak iade etmesi, hepsi önce gerçekleşir ve sonradan bildirilir. Bunlar için yukarıdaki iptal mantığı işin tamamıdır.
Yalnızca iki akış kanıt ister. Apple'ın CONSUMPTION_REQUEST bildirimi, tüketim bilgisini göndermeniz için size 12 saat verir. Google Play'in ters ibraz incelemesi, orders.reviewrefund üzerinden yanıt vermeniz için PendingRefundReviewNotification'dan itibaren 24 saat verir ve Google yalnızca ilk çağrınızı kaydeder. RefundHalt, zaten topladığınız ve uygulamalarınız genelinde aynı hesaba bağlı kullanım verilerini kullanarak ikisine de süre içinde yanıt verir.
Platformlar arası iadeler için kısa bir kontrol listesi
- Apple satın alımlarında appAccountToken, Google Play satın alımlarında gizlenmiş bir hesap kimliği ayarlayın.
- Teklif kodu kullanımlarında eksik Apple tokenlarını Set App Account Token ile tamamlayın.
- Apple REFUND ve REFUND_REVERSED bildirimlerini, Google Play geçersiz kılınan satın alımlarını ve web iadelerini tek bir işleyiciye yönlendirin.
- Her satın alımı kaynağıyla birlikte saklayın ve erişimi tüm aktif satın alımlardan hesaplayın.
- Herhangi bir platformda ödeme duvarını göstermeden önce her mağazanın satın alımlarını kontrol edin.
Sık sorulan sorular
- iPhone kullanıcılarının Android'de veya web sitemde satın aldıkları bir aboneliğe erişmesine izin verebilir miyim?
- Evet. Apple'ın App Review Guideline 3.1.3(b) kuralı, birden fazla platformda çalışan uygulamaların, kullanıcılara diğer platformlarda veya web sitenizde edindikleri içerik, abonelik ya da özelliklere erişim vermesine izin verir. Şart, bu öğelerin iPhone uygulamasında uygulama içi satın alma olarak da sunulmasıdır.
- Apple bir aboneye iade yaparsa Google Play veya web faturalandırmam bunu öğrenir mi?
- Hayır. Apple yalnızca sunucunuza, App Store Server Notifications V2 içindeki bir REFUND bildirimiyle haber verir, başka hiçbir yere değil. O satın alımın Android'de, web'de ve hesabın oturum açtığı diğer her yerde verdiği erişimi sunucunuz kaldırmalıdır.
- Bir App Store iadesini bir kullanıcı hesabıyla nasıl eşleştiririm?
- appAccountToken kullanın. Bu, uygulamanızın satın alıma eklediği ve App Store'un işlem bilgisinde geri döndürdüğü bir UUID'dir. Teklif kodu kullanımı gibi uygulamanızın dışında yapılan satın alımlarda Apple'ın Set App Account Token uç noktası token ekler veya değiştirir. Family Sharing işlemlerini desteklemez.
- Bir müşteri hem App Store'da hem Google Play'de abone. Hangisini iade etmeliyim?
- Kontrolünüzde olanı iade edin. Bir Google Play siparişini Play Console'da iade edebilir ve sonraki ödemesini purchases.subscriptionsv2.cancel ile durdurabilirsiniz. App Store iadelerine Apple karar verir, bu yüzden iPhone'daki yinelenen satın alım, uygulamanızın StoreKit ile açabildiği Apple iade talebi üzerinden ilerler.
- Web sitemde veya Android uygulamamdaki kullanım, iade incelemesinde kanıt sayılır mı?
- Tek bir hesap altında kaydedilen kullanım yanıtınızı destekleyebilir. Apple'ın tüketim bilgisi bir consumable, non-consumable veya non-renewing aboneliğin ne kadarının tüketildiğini sorar ve Google Play'in ters ibraz incelemesi, gizlenmiş hesap kimliğini taşıyabilen 1.000'e kadar kullanım olayı kabul eder.
Kaynaklar ve ek okumalar
- Apple: App Review Guidelines, 3.1.3(b) Multiplatform Services
- Apple Developer Documentation: Offering a subscription across multiple apps
- Apple Developer Documentation: Handling refund notifications
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: Set App Account Token
- Android Developers: BillingFlowParams.Builder, setObfuscatedAccountId
- Google Play Developer API: purchases.voidedpurchases
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
App Store ve Google Play için geri ödeme otomatik pilotu
Okumaya devam edin
Aşırı iade talepleri size iadelerin kendisinden daha pahalıya patlayabilir, çünkü iki uygulama mağazası da bunları bir kalite sinyali olarak görür
Apple'ın 5.6.4 numaralı yönergesi aşırı iade taleplerini bir uygulamanın kalite standartlarını karşılamadığının işareti olarak sayar. Google'ın Dağıtım Sözleşmesi de yeni geliştiricilerin uygulamalarını iade oranlarına göre kaldırma yetkisi verir. Her mağazanın ne dediğini, kaldırılmanın neye mal olduğunu ve riskten nasıl uzak durulacağını anlatıyoruz.
Bir iade üzerine işlem yapmadan önce App Store sunucu bildirimlerini doğrulayın, çünkü webhook URL'nize herkes istek gönderebilir
Bir iade bildirimi, imzasını kontrol edene kadar yalnızca bir HTTPS isteğidir. App Store sunucu bildirimlerini ve Google Play RTDN mesajlarını nasıl doğrulayacağınızı, her mağazanın neyi imzaladığını ve sahte ya da yanlışlıkla reddedilen bir iadenin size neye mal olduğunu anlatıyoruz.