Tüm makaleler
Deep dive8 dk okuma

Bir Google Play satın alımını üç gün içinde onaylamazsanız Google iade eder, işte bunun size maliyeti

Google Play, sunucunuzun üç gün içinde onaylamadığı her satın alımı otomatik olarak iade eder ve geri alır. Bu bir müşteri kararı değil, bir entegrasyon hatasıdır ve tamamen önlenebilir. İşte tam kural, neden tetiklendiği ve kaybedilen her satışın gerçek maliyeti.

Bir akıllı telefonun yanında kumu tükenen bir kum saati, bir Google Play satın alımının otomatik olarak iade edilmeden önce onaylanması için geçen üç günlük pencereyi gösteriyor

Önemli noktalar

  • Uygulamanız üç gün içinde onaylamazsa Google Play, alıcıya otomatik olarak iade yapar ve satın alımı geri alır. Bu bir müşteri kararı değil, bir entegrasyon hatasıdır ve sunucu tarafında tamamen önlenebilir.
  • Üç günlük sayaç, satın alma durumu PURCHASED olduğunda başlar, ödeme başladığında değil. PENDING durumunda bekleyen bir satın alım sayacı başlatmamıştır ve henüz onaylanmamalıdır.
  • İki çağrı bu gereksinimi karşılar. Bir tüketilebilir ürünü purchases.products.consume ile tüketmek ve tüketilemeyen bir ürünü ya da aboneliği purchases.products.acknowledge veya purchases.subscriptions.acknowledge ile onaylamak, her ikisi de onay olarak sayılır.
  • Yalnızca ilk abonelik satın alımının onaya ihtiyacı vardır. Yenilemelerin ihtiyacı yoktur ve Google bunları otomatik olarak ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED olarak işaretler.
  • Bir haftadan kısa ön ödemeli planlar, plan süresinin yarısı içinde onaylanmalıdır ki bu standart üç günden daha sıkı bir süredir.
  • İade satış fiyatını geri alır, ancak ürünü teslim etmek için zaten harcadığınız hesaplama, model API çağrıları, depolama ve içerik üreticisi ödemeleri geri gelmez. Kaybettiğiniz para, o satır kaleminden daha büyüktür.
  • Apple'ın bir eşdeğeri yoktur. Tamamlanmamış bir StoreKit işlemi siz onu bitirene kadar yeniden teslim edilir, ancak Apple onu asla otomatik olarak iade etmez. Bu hata türü yalnızca Google Play'e özgüdür.

Bir müşteri ürününüzü satın alır, ödeme geçer ve üç gün sonra Google Play sessizce iade eder ve teslim ettiğiniz şeyi geri çeker. Kimse o iadeyi istemedi. Müşteri talep etmedi ve hiçbir destek temsilcisi onaylamadı. Bu, sunucunuz Google'a satın alımın işlendiğini asla söylemediği için tetiklendi. Bir Google Play satın alımını üç gün içinde onaylamazsanız, Google her seferinde alıcıya iade yapar ve satın alımı geri alır. Bu, her iki mağazadaki, önlenmesi tamamen sizin entegrasyonunuza bağlı olan az sayıdaki iadeden biridir ve geliri sızdırmanın en sessiz yollarından biridir.

Bu bir dolandırıcılık sorunu ya da politika anlaşmazlığı değildir. Kaçırılmış bir geri çağrıdır. Düzeltme küçüktür ve onu atlamanın maliyeti gerçek paradır, bu yüzden kuralı tam olarak bilmek değerlidir, satın alımların neden onaysız kaydığını ve kaybedilen her satışın gerçekte yanında ne götürdüğünü.

Üç günlük kural aslında ne diyor

Google'ın Play Billing dokümantasyonu bu konuda açık sözlüdür. Uygulamanız yetki verdikten ve kullanıcıya satın alımın başarılı olduğunu bildirdikten sonra, satın alımın işlendiğini Google'a bildirmesi gerekir. Google'ın ifadesiyle, bu "satın alımın otomatik olarak iade edilmemesi ve yetkinin geri alınmaması için üç gün içinde yapılmalıdır." Tek seferlik ürün sayfası bunu hiç yumuşatmadan tekrarlar: "Bir satın alımı üç gün içinde onaylamazsanız, kullanıcı otomatik olarak bir iade alır ve Google Play satın alımı geri alır." Abonelikler ilk satın alım için aynı kuralı taşır.

Onay bir sinyaldir, bir formalite değil. Google'a yetkinin kullanıcıya ulaştığını söyler. Google, o sinyalin yokluğunu hiç gerçekleşmemiş bir teslimat olarak ele alır ve işlemi müşteri adına geri sarar. Alıcının tarafından bu, hiç istemediği bedava bir iade gibi görünür. Sizin tarafınızdan buharlaşmış bir satış gibi görünür.

Sayaç ödemede değil, PURCHASED'ta başlar

Üç günlük pencere kullanıcı satın al'a dokunduğunda başlamaz. Satın alma durumu PURCHASED'a geçtiğinde başlar. Bir satın alım önce PENDING durumunda bekleyebilir ki bu nakit ödemelerde, yavaş banka transferlerinde ya da bir ebeveynin çocuğunun isteğini onaylamasında olur. Google açıktır: "Üç günlük onay penceresi yalnızca satın alma durumu PENDING'den PURCHASED'a geçtiğinde başlar."

Bunun iki sonucu vardır. Yetkiyi yalnızca durum PURCHASED iken verin, asla PENDING'de değil, yoksa asla tamamlanmayabilecek bir ödeme için ürün dağıtmış olursunuz. Ve bir PENDING satın alımı da onaylamayın. BillingClient'ı oluştururken enablePendingPurchases() çağırır, geçişi bekler ve yalnızca o zaman kafanızda üç günlük onay sayacını başlatırsınız.

Onaylayın ya da tüketin, ve hangisini borçlusunuz

Gereksinimi karşılamanın iki yolu vardır ve hangisini kullanacağınız ürüne bağlıdır. İkisi de üç günlük süreyi kapatır. Fark, başka ne yaptıklarıdır.

Bir tüketilebilir ürün için onu tüketirsiniz. Güvenli bir arka uçta bu purchases.products.consume'dur ya da Play Billing Library'de istemci tarafında consumeAsync()'tir. Tüketmek hem satın alımı onaylar hem de ürünü yeniden satın alınabilir yapar, ki bu tam olarak jetonlar, krediler ya da tek seferlik bir üretim için istediğiniz şeydir. Tüketilemeyen bir ürün ya da abonelik için onu onaylarsınız: arka uçta purchases.products.acknowledge veya purchases.subscriptions.acknowledge, ya da istemci tarafında acknowledgePurchase(). Onaylamak, ürünü yeniden satın almaya açmadan süreyi kapatır.

Satın alma türüSüreyi karşılayan çağrıBaşka ne yaparSüre
Tüketilebilirpurchases.products.consume veya consumeAsync()Ürünü ayrıca yeniden satın alınabilir yaparPURCHASED'tan itibaren 3 gün
Tüketilemeyenpurchases.products.acknowledge veya acknowledgePurchase()Yetki verildi olarak işaretler, yeniden satın alma yokPURCHASED'tan itibaren 3 gün
Abonelik, ilk satın alımpurchases.subscriptions.acknowledge veya acknowledgePurchase()Yeni aboneliği onaylarPURCHASED'tan itibaren 3 gün
Abonelik yenilemesiHiçbir şey gerekmezGoogle tarafından otomatik onaylanmış olarak işaretlenirUygulanamaz
Bir haftadan kısa ön ödemeli planYukarıdaki gibi onaylayınYetkiyi onaylarPlan süresinin yarısı

Yenilemeler zaten hallolmuştur, ilk satın alımlar değil

Onayı yalnızca bir aboneliğin ilk satın alımında borçlusunuz. Google açıkça "abonelik yenilemelerini onaylamanıza gerek yok" der ve yenilemeleri kendisi ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED olarak damgalar. Yeni bir satın alım ACKNOWLEDGEMENT_STATE_PENDING olarak gelir ve siz onu kapatana kadar sizin sorumluluğunuzda kalır. Onaylamadan önce, iki kez onaylamamak için arka uçta acknowledgementState'i ya da istemci tarafında isAcknowledged()'ı kontrol edin.

Ön ödemeli planların fitili daha kısadır

Ön ödemeli abonelik planları pencereyi daraltır. Google'ın kuralı: bir hafta ya da daha uzun süren ön ödemeli planlar üç gün içinde onaylanmalıdır, ancak "bir haftadan kısa süreli ön ödemeli planlar plan süresinin yarısı içinde onaylanmalıdır." Üç günlük bir ön ödemeli plan size üç gün değil, bir buçuk gün verir. Kısa ön ödemeli yüklemeler satıyorsanız, onay yolunuz hızlı ve sunucu güdümlü olmalı, kullanıcının uygulamayı yeniden açmasına bağlı olmamalıdır.

Satın alımlar en baştan neden onaysız kalır

Kimse onayı atlamaya niyetlenmez. Onaylayan kod yanlış yerde bulunduğu için kayar. Yaygın anti-pattern, yalnızca satın alma akışı ön plana döndüğünde onaylayan bir istemcidir. Bu, satın almayı bitirip uygulamayı kullanmaya devam eden bir kullanıcı için işe yarar. Herkes için başarısız olur.

Geliştiriciler buna sürekli çarpar. Google'ın kendi geliştirici topluluğundaki başlıklar her seferinde aynı şekilde okunur, "uygulamamdan satın aldıktan üç gün sonra bir kullanıcıya otomatik olarak iade yapıldı" ve "ödemeler neden üç gün sonra otomatik olarak iade ediliyor" gibi bir varyant. Cevap neredeyse her zaman aynıdır: onay çağrısı asla tetiklenmedi çünkü uygulama onu tetikleyecek bir durumda hiç olmadı.

Ücretsiz deneme ve asla geri gelmeyen kullanıcı

En kötü hali, ücretsiz deneme ya da kullanıcının uygulamayı sonsuza dek kapatmasından hemen önceki bir satın alımdır. Onayınız bir sonraki uygulama açılışına bağlıysa ve bir sonraki uygulama açılışı yoksa, satın alım zaman aşımına uğrar. Üçüncü günde Google iade eder ve geri alır. Ücretli bir aboneliğe dönüşecek bir deneme için, asla tahsil edemediğiniz ilk faturayı, artı sessizce yok olan bir müşteri yetkisini kaybedersiniz. Bu olayların hiçbiri bir destek talebi olarak görünmez. Aramanız gereken, geçersiz kılınmış bir satın alım olarak görünür.

Onaysız bir iade gerçekte neye mal olur

İade satırı kaybı olduğundan az gösterir. Google satışı geri çevirdiğinde, fiyatı geri verirsiniz ve görünen rakam budur. Bütün fatura o değildir.

Satın alındığı anda gerçek iş tetikleyen bir tüketilebilir ürünü düşünün. Bir grup görsel üretimi, bir model sağlayıcının API'sine bir dizi çağrı, bir video dışa aktarımı, bir içerik üreticisine bir ödeme. O hesaplama, o API çağrıları, o depolama ve o ödemeler için kullanım anında ödeme yaptınız. İade satış fiyatını müşteriye geri verir. Sağlayıcının faturasını size geri vermez. Gerçek bir maliyet teslim ettiniz ve karşılığında hiçbir şey almadınız.

Abonelikler ve denemeler için kayıp, asla tahsil etmediğiniz ilk fatura ve başlamadan biten müşteri ilişkisidir. Ve 3 Ağustos 2026'dan itibaren Google Play, o tarihten sonra verilen siparişler için ters ibraz satın alma fiyatını ve banka ücretlerini geliştiricilere kaydırır ki bu, önlenebilir herhangi bir gelir sızıntısını kapatmayı sonra değil şimdi değerli kılar. Onaysız bir iade bir ters ibraz değildir, ama aynı dersi verir: zaten harcadığınız para otomatik olarak elde tuttuğunuz para değildir.

Karanlık bir masanın üzerinde geri çekilen katlanmış bir fiş ve madeni paralar, onaysız bir Google Play satın alımı iade edilip geri alındığında zaten harcanmış olan parayı gösteriyor

Bir Google Play satın alımı sunucu tarafında nasıl onaylanır

Güvenilir yaklaşım uygulamayı kritik yoldan çıkarır. Bunu arka ucunuzda, kullanıcının ekranı yeniden açmasıyla değil, bildirimlerle güdümlenerek yapın.

  • Real-time developer notifications'ı dinleyin. Bir ONE_TIME_PRODUCT satın alımı ya da bir SUBSCRIPTION_PURCHASED olayı, uygulama açık olsun ya da olmasın, Google öğrendiği anda sunucunuza bir satın alımın var olduğunu söyler.
  • Satın alma jetonunu Play Developer API'ye karşı doğrulayın ve durumun PENDING değil PURCHASED olduğunu teyit edin.
  • Kullanıcıya bağlı olarak kendi kayıtlarınızda yetki verin.
  • Hemen onaylayın ya da tüketin. Tüketilebilirleri tüketin, tüketilemeyenleri ve ilk abonelikleri onaylayın. Asla iki kez onaylamamak için önce acknowledgementState'i kontrol edin.
  • İstemcide de tamamlayın. Uygulama kapalıyken tamamlanan herhangi bir satın alımın yine de işlenmesi için onResume() içinde queryPurchasesAsync() çağırın. Bu birincil yol değil, bir güvenlik ağıdır.

Mesele şu ki, onay güvenemeyeceğiniz bir kullanıcı eyleminden değil, Google'ın size gönderdiği bir olaydan tetiklenir. Satın alıp asla geri gelmeyen bir kullanıcı tamamen kapsanır çünkü sunucunuz satın alım geldiği anda harekete geçti.

Kayanlar için bir mutabakat ağı

Temiz bir hat bile bir kontrolden fayda görür. Voided Purchases API, iade edilen, geri alınan ya da ters ibraz edilen satın alımları listeler ve nedenin, satın alımın "geliştirici tarafından hiç onaylanmamış olması ve dolayısıyla geliştiricinin kayıtlarında var olmayabileceği" olduğu durumu adlandırır. Onu yoklayın ve Google'ın zaten geri sardığı herhangi bir şey için verdiğiniz yetkiyi geri alabilirsiniz. Sınıra dikkat edin: API yalnızca son 30 günün geçersiz kılınmış satın alımlarını döndürür, bu yüzden mutabakat çeyrekte bir değil, bir programa göre çalışmalıdır.

Apple'ın bir eşdeğeri yoktur ve bu önemlidir

Bu özellikle bir Google Play sorunudur. Apple'ın StoreKit'inin de bir bitirme adımı vardır, bir işlemi bitirmek, ama başarısızlıkta bunun tersini yapar. Bir StoreKit işlemini asla bitirmezseniz, Apple onu kuyrukta tutar ve uygulamanız her başlatıldığında ya da gözlemci her bağlandığında yeniden teslim eder, böylece yetki vermek için bir şans daha alırsınız. Apple tamamlanmamış bir işlemi iade etmez. App Store'da üç günlük otomatik iade yoktur.

Bu yüzden zihinsel model platforma özgü kalmalıdır. Google Play'de, işlenmemiş bir satın alım olmayı bekleyen bir iade ve yarıştığınız bir süredir. App Store'da, işlenmemiş bir satın alım olmayı bekleyen bir yeniden teslimat ve hiç sayaç yoktur. Apple varsayımını Android'e taşımak, ekiplerin açıklayamadıkları bir onaysız iade duvarıyla baş başa kalmasının yoludur.

İşte bu yüzden RefundHalt, mağaza bildirimi geldiği anda Google Play satın alımlarını otomatik olarak onaylar ve Google'ın sonradan geri sardığı bir satın alım için verilen bir yetkinin canlı kalmaması için Voided Purchases API'ye karşı mutabakat yapar. Üç günlük kural kaybedebileceğiniz bir yarış olmaktan çıkar ve zaten gerçekleşmiş bir adım haline gelir.

Sık sorulan sorular

Google Play satın alımım neden üç gün sonra otomatik olarak iade edildi?
Çünkü uygulamanız onu zamanında onaylamadı. Google Play, PURCHASED durumuna ulaştıktan sonra üç gün içinde onaylanmayan her satın alımı alıcıya otomatik olarak iade eder ve geri alır. Bu bir müşteri talebi ya da bir Google cezası değildir, eksik bir onay çağrısıdır ve mağaza bildiriminden sunucu tarafında onaylamak bunu ortadan kaldırır.
Bir satın alımı onaylamak ile tüketmek arasındaki fark nedir?
İkisi de üç günlük gereksinimi karşılar. Bir tüketilebilir ürünü purchases.products.consume ya da consumeAsync() aracılığıyla tüketirsiniz ki bu ürünü tekrar satın alınabilir de yapar. Tüketilemeyen bir ürünü ya da bir aboneliği purchases.products.acknowledge, purchases.subscriptions.acknowledge ya da acknowledgePurchase() aracılığıyla onaylarsınız ki bu, ürünü yeniden satın almaya açmadan yetkiyi teyit eder.
Google Play abonelik yenilemelerini onaylamam gerekiyor mu?
Hayır. Yalnızca ilk abonelik satın alımının onaya ihtiyacı vardır. Google yenilemelerin onaylanmasını gerektirmez ve onları otomatik olarak ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED olarak işaretler. Yeni bir satın alım ACKNOWLEDGEMENT_STATE_PENDING olarak gelir ve siz onu kapatana kadar sizin sorumluluğunuzda kalır.
Bir satın alımı hâlâ PENDING iken onaylayabilir miyim?
Hayır. Yalnızca satın alma durumu PURCHASED olduğunda onaylamalısınız. Bir nakit ödeme ya da bir ebeveyn onayı isteği gibi bir PENDING satın alım, üç günlük sayacı henüz başlatmamıştır. Yetkiyi verin ve yalnızca durum PENDING'den PURCHASED'a geçtikten sonra onaylayın.
Apple bitirmediğim satın alımları iade eder mi?
Hayır. Apple'ın StoreKit'i tamamlanmamış bir işlemi siz bitirene kadar uygulamanız her başlatıldığında yeniden teslim eder, ama onu asla otomatik olarak iade etmez. Onaysız satın alımlar için üç günlük otomatik iade yalnızca Google Play'e özgüdür, bu yüzden iki platform farklı ele alış gerektirir.
Bir satın alım onaysız kaldığı için zaten iade edildiyse nasıl telafi ederim?
İadeyi geri alamazsınız, ama mutabakat yapabilirsiniz. Son 30 günün iade edilen ve geri alınan satın alımlarını listeleyen ve hiç onaylanmadıkları için geçersiz kılınanları işaretleyen Voided Purchases API'yi yoklayın, ardından verdiğiniz yetkiyi geri alın. İleride, bir sonrakinin kaymaması için mağaza bildiriminden onaylayın.

Kaynaklar ve ek okumalar

RefundHalt

App Store ve Google Play için geri ödeme otomatik pilotu

Okumaya devam edin

Bir sonraki geri ödeme talebi şimdiden yolda.

İtiraz edemediğiniz bir geri ödemeyle ilgili başka bir destek e-postasını okumak için gereken sürede RefundHalt'ı kurun.