Geçersiz kılınmış satın alma bildirimi, bir iade geldiği anda Google Play sunucunuzun erişimi iptal etmesini sağlar
Google Play, bir satın alma iade edildiği, ters ibraza uğradığı ya da geçersiz kılındığı anda sunucunuza bir geçersiz kılınmış satın alma bildirimi gönderebilir. purchaseToken, orderId, productType ve refundType taşır ve tek bir şey ifade eder, erişimi iptal et. İşte onu okuma ve bağlama yöntemi.

Önemli noktalar
- Geçersiz kılınmış satın alma bildirimi, bir satın alma iade edildiği, ters ibraza uğradığı ya da başka bir şekilde geçersiz kılındığı anda Google Play'in Cloud Pub/Sub konunuza gönderdiği bir Real-time Developer Notification'dır. Bu bir push sinyalidir, sizin sorgulamanız gereken bir şey değil.
- Bildirim tam olarak dört alan taşır: `purchaseToken`, `orderId`, `productType` ve `refundType`. Bu, veritabanınızda tam olarak ilgili satın almayı bulmaya ve ona bağlı yetkiyi iptal etmeye yeter.
- `productType`, geçersiz kılınmış bir abonelik için `1`, geçersiz kılınmış bir tek seferlik satın alma için `2`'dir. `refundType`, tam iade için `1`, yalnızca çok adetli tek seferlik satın almalara uygulanan adet bazlı kısmi iade için `2`'dir.
- Bir geçersiz kılınmış satın alma bildirimi, müşterinin parasını çoktan geri aldığı anlamına gelir. Google'ın kendi yönergesi, alıcının artık yetkiyi elinde tutmaması gerektiği için ilişkili içeriğe erişimi iptal etmektir.
- Geçersiz kılınmış satın alma bildirimleri, siz açana kadar kapalıdır. Play Console'da Monetization setup altında ya abonelikler artı tüm geçersiz kılınmış satın almaları, ya da buna ek olarak tek seferlik ürün olaylarını seçersiniz. Her iki seçenek de geçersiz kılınmış satın almaları içerir.
- Bir geçersiz kılınmış satın alma bildirimi, sizden kanıt isteyen iki iade akışından biri değildir. Bu, olay sonrası bir bildirimdir. Sizin girdinizi alan tek akışlar, 12 saatlik bir süreye sahip Apple'ın CONSUMPTION_REQUEST'i ve 24 saatlik bir süreye sahip `orders.reviewrefund` üzerinden Google Play'in ters ibraz incelemesidir.
- 3 Ağustos 2026'dan itibaren Google, bir ters ibrazın satın alma bedelini artı banka ücretini geliştiriciye aktarır. Bir geçersiz kılınmış satın alma bildirimi çoğu zaman sunucunuzun bir ters ibraz geçersizliğinin geldiğini ilk öğrenme yoludur, bu yüzden onu bağlamak, artık karşılığını almadığınız bir müşteriye hizmet vermeyi durdurmanızı sağlar.
Google Play'de bir iade, sonradan bir raporda keşfettiğiniz bir şey olmak zorunda değildir. Google Play, bir satın alma geçersiz kılındığı anda sunucunuza bir geçersiz kılınmış satın alma bildirimi gönderebilir; ister alıcı self servis bir iade almış olsun, ister bir destek temsilcisi iade tanımış olsun, ister bir banka ters ibraz dayatmış olsun, ister siz iptal bayrağı açık olarak siparişi kendiniz iade etmiş olun. Mesaj çok küçüktür, tam olarak ilgili satın almayı adıyla belirtir ve tek bir talimat taşır, yetkiyi geri ver, çünkü para çoktan gitti.
Bir geçersiz kılınmış satın alma bildirimi gerçekte nedir
Bir geçersiz kılınmış satın alma bildirimi, Google Play'in Real-time Developer Notifications, yani RTDN türlerinden biridir. RTDN bir push kanalıdır. Google, sahip olduğunuz bir Cloud Pub/Sub konusuna bir mesaj yayımlar ve arka ucunuz, bir sonraki planlı sorgulamada öğrenmek yerine, olaydan hemen sonra onu alır. Eski çekme yoluna kıyasla geçersiz kılınmış satın alma bildiriminin bütün amacı budur: iadeyi saatler sonra değil, gerçekleştiği anda öğrenirsiniz.
Çekme yolu hâlâ vardır ve hâlâ önemlidir. Voided Purchases API, sunucunuzun kendi programınıza göre, bir zaman aralığında geçersiz kılınan satın almaların listesini sormasına olanak tanır. İkisi birbirini tamamlar. Bildirim size bir satın almanın döndüğü anı söyler; API ise toplu olarak mutabakat sağlamanıza ve kaçırılan bir mesajın geride bıraktığı her şeyi tamamlamanıza olanak tanır.
Bir Real-time Developer Notification'ın içinde gelir
Geçersiz kılınmış satın alma bildirimi asla tek başına gelmez. Bir DeveloperNotification sarmalayıcısının içinde oturur ve o sarmalayıcı, Pub/Sub mesajının data alanında tek bir base64 kodlu dize olarak teslim edilir. İşleyiciniz, herhangi bir şey okuyabilmek için önce o dizeyi JSON'a çözer. Sarmalayıcı her zaman uygulamayı ve olay zamanını adıyla belirtir ve Google'ın tanımladığı beş bildirim nesnesinden tam olarak birini içerir. Bunlar birbirini dışlar, dolayısıyla bir voidedPurchaseNotification taşıyan bir mesaj, aynı zamanda bir abonelik ya da tek seferlik olay taşımaz.
| Sarmalayıcı alanı | Neyi tutar |
|---|---|
version | Bildirim şeması sürümü, örneğin 1.0 |
packageName | Olayın ait olduğu uygulama, örneğin com.acme.app |
eventTimeMillis | Olayın ne zaman gerçekleştiği, epoch'tan bu yana milisaniye cinsinden |
| Beş bildirim nesnesinden biri | oneTimeProductNotification, subscriptionNotification, voidedPurchaseNotification, pendingRefundReviewNotification ya da testNotification. Mesaj başına yalnızca biri bulunur |
Taşıdığı dört alan
Sarmalayıcıyı soyun, geçersiz kılınmış satın alma bildiriminin kendisi dört alandır. Bu, bilinçli olarak sadedir. Google'ın tutumu şudur: tek ihtiyacınız doğru satın almayı bulup yetkiyi ayarlamaksa, bu dört alan yeter ve harekete geçmek için herhangi bir API'yi geri çağırmanıza gerek yoktur.
| Alan | Nedir | Nasıl kullanırsınız |
|---|---|---|
purchaseToken | Ürün satın alındığında cihaza verilen belirteç | Birincil anahtarınız. Verme anında sakladığınız satın alma kaydıyla eşleştirin |
orderId | Alıcıya gösterilen sipariş kimliği, örneğin GS.0000-0000-0000 | Destek ve mutabakat için insan tarafından okunabilir ikinci bir anahtar |
productType | Geçersiz kılınan öğenin bir abonelik mi yoksa tek seferlik satın alma mı olduğu | Doğru iptal yoluna yönlendirin |
refundType | Geçersiz kılmanın tam iade mi yoksa adet bazlı kısmi iade mi olduğu | Her şeyi mi yoksa yalnızca iade edilen adedi mi iptal edeceğinize karar verin |
productType neyin geçersiz kılındığını söyler
productType küçük bir tam sayıdır ve iptal yollarınızdan hangisini alacağınıza karar verir. Bir abonelik geçersizliği, devam eden erişimi geri sarmak zorundadır; bir tek seferlik satın alma geçersizliği ise yalnızca tek bir yetkiyi kaldırır.
| `productType` değeri | Sabit | Anlamı |
|---|---|---|
1 | PRODUCT_TYPE_SUBSCRIPTION | Bir abonelik satın alması geçersiz kılındı |
2 | PRODUCT_TYPE_ONE_TIME | Bir tek seferlik satın alma geçersiz kılındı |
refundType ne kadarının geri geldiğini söyler
refundType, temiz bir tam geri döndürmeyi kısmi olandan ayırır. Kısmi durum dardır. Yalnızca çok adetli bir tek seferlik satın almanın adedinin bir kısmının, ancak tamamının değil, iade edildiğinde ortaya çıkar.
| `refundType` değeri | Sabit | Anlamı |
|---|---|---|
1 | REFUND_TYPE_FULL_REFUND | Satın alma tamamen geçersiz kılındı |
2 | REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND | Çok adetli bir satın almanın bir kısmı geçersiz kılındı |
Önce onu açın, yoksa asla gelmez
Geçersiz kılınmış satın alma bildirimleri varsayılan olarak akmaz. RTDN'yi Play Console'da bir kez etkinleştirir ve onu kontrol ettiğiniz bir Pub/Sub konusuna yönlendirirsiniz. Anahtar, Monetize, ardından Monetization setup altında, sayfanın üstündeki Real-time developer notifications bölümündedir. Enable real-time notifications'ı işaretleyin, ardından tam konu adınızı projects/{project_id}/topics/{topic_name} biçiminde yapıştırın ve ona güvenmeden önce boru hattının çalıştığını doğrulamak için Send Test Message'ı kullanın.
İçerik anahtarı, insanların geçersiz kılınmış satın almaları kaçırdığı yerdir. Her iki seçim de onları içerir, bu yüzden abonelikleri korurken yanlışlıkla iadelerden vazgeçemezsiniz.
- Abonelikler ve tüm geçersiz kılınmış satın almalar için bildirim al. Abonelik olaylarını ve her geçersiz kılınmış satın almayı alırsınız, ancak tek seferlik ürün satın alma olaylarını almazsınız.
- Abonelikler ve tek seferlik ürünler için tüm bildirimleri al. Yukarıdakilere ek olarak
ONE_TIME_PRODUCT_PURCHASEDveONE_TIME_PRODUCT_CANCELEDgibi tek seferlik ürün olaylarını alırsınız.

Size parasal olarak neye mal olur
Bir geçersizlik, bildirim size ulaştığında çoktan defterlere işlenmiş bir kayıptır. Satış fiyatı gitmiştir, o müşteriye hizmet vermek için harcadığınız her şey de öyle. Görüntü ürettilerse, modellerinize karşı çağrılar çalıştırdılarsa, depolama kullandılarsa ya da üçüncü bir tarafa bir ödeme tetiklediyseler, o maliyetler gerçek parayla ödendi ve iadeyle geri gelmez. Bildirim bunların hiçbirini geri alamaz. Yapabileceği şey, buradan ileriye doğru kanamayı durdurmaktır ki hızlı hareket etmenin bütün nedeni de budur.
Kanama en çok aboneliklerde ve en çok ters ibrazlarda kötüdür. İptal etmeyi başaramadığınız bir abonelik, artık ödeme yapmayan bir müşteri için ay ay hizmet maliyeti çıkarmaya devam eder. Ve bir ters ibraz, geçersizliğin en pahalı türüdür. 3 Ağustos 2026'dan itibaren Google'ın belgeleri, bir ters ibrazın satın alma fiyatını artı bankanın ücretini geliştiriciye aktardığını belirtir. Geçersiz kılınmış satın alma bildirimi çoğu zaman kendi sistemlerinizin bir ters ibrazın tamamlandığını ilk duyduğu yerdir, bu yüzden yerinde iptal eden bir işleyici, kayıp bir satışın kayıp bir satış artı haftalarca ücretsiz hizmete dönüşmesini engelleyen şeydir.
Bir geçersiz kılınmış satın alma bildirimini adım adım nasıl ele alırsınız
Mesajı doğrulayın ve yinelenenleri ayıklayın
- Pub/Sub mesajının Google'dan geldiğini ve yapılandırdığınız konuyu hedeflediğini doğrulayın, ardından
DeveloperNotificationJSON'unu almak için base64dataalanını çözün. - Yinelenenleri atmak için Pub/Sub
messageId'sini kullanın. Google, aynı bildirimin birden fazla kez teslim edilebileceği konusunda uyarır, bu yüzden yeniden teslimi normal kabul edin ve işleyicinizi idempotent yapın. - Mesajı yalnızca güvenli bir şekilde kaydettikten sonra onaylayın, böylece işleyicinin ortasında bir çökme olayı kaybetmez.
Satın almayı arayın
purchaseToken'ı, yetkiyi ilk verdiğinizde sakladığınız satın almayla eşleştirin. Destek aramaları ve manuel mutabakat içinorderId'ye başvurun.- Abonelik ya da tek seferlik iptal yolunu seçmek için
productType'ı okuyun ve tam iptal ile kısmi iptal arasında karar vermek içinrefundType'ı okuyun.
İptal edin ve kaydedin
- Yetkiyi kaldırın. Tam iade için, öğeye erişimi kesin. Adet bazlı kısmi iade için, verilen adedi iade edilen miktar kadar azaltın ve gerisini olduğu gibi bırakın.
- Ne yaptığınızı ve ne zaman yaptığınızı
purchaseTokenveorderIdanahtarıyla yazın. O kayıt, daha sonra bir destek talebini yanıtlamanızı sağlayan şeydir ve Voided Purchases API'nin kendi durumunuza karşı temiz bir şekilde mutabakat sağlamasını mümkün kılan şeydir.
Diğer iade sinyalleri arasında nerede durur
Bir geçersiz kılınmış satın alma bildirimi bir bildirimdir, bir müzakere değil. Size çoktan verilmiş bir sonucu söyler. Onu, kolayca karıştırıldığı sinyallerin yanında görmeye değer, çünkü bunların yalnızca bazıları sizin tarafınızın hikayesini sorar.
| Sinyal | Yön | Sizin girdinizi alır mı |
|---|---|---|
| Geçersiz kılınmış satın alma bildirimi (RTDN) | Google sunucunuza gönderir | Hayır. Çoktan gerçekleşmiş bir geçersizliği bildirir |
| Voided Purchases API | Sunucunuz Google'dan çeker | Hayır. Geçmiş geçersizliklerin salt okunur bir listesidir |
pendingRefundReviewNotification (RTDN) | Google sunucunuza gönderir | Evet, dolaylı olarak. 24 saat içinde orders.reviewrefund üzerinden itiraz ettiğiniz bir ters ibrazı işaretler |
| Apple CONSUMPTION_REQUEST | Apple sunucunuza sorar | Evet. 12 saat içinde Send Consumption Information ile yanıt verirsiniz |
Akılda tutulacak nokta basittir. Her iki mağaza genelinde, geliştiricinin söz sahibi olduğu tam olarak iki iade akışı vardır, Apple'ın CONSUMPTION_REQUEST'i ve Google Play'in ters ibraz incelemesi. Bir geçersiz kılınmış satın alma bildirimi bunların hiçbiri değildir. Size ulaştığında karar çoktan geride kalmıştır ve elinizde kalan tek şey ne kadar hızlı iptal ettiğinizdir.
Sık sorulan sorular
- Google Play'de bir geçersiz kılınmış satın alma bildirimi ne anlama gelir?
- Bir satın almanın iade edildiği, ters ibraza uğradığı ya da başka bir şekilde geçersiz kılındığı ve müşterinin parasını geri aldığı anlamına gelir. Google'ın yönergesi, alıcının artık yetkiyi elinde tutmaması gerektiği için ilişkili içeriğe erişimi iptal etmektir. Bildirim, `purchaseToken` ve `orderId`'si aracılığıyla tam olarak ilgili satın almayı adıyla belirtir.
- Bir Google Play geçersiz kılınmış satın alma bildirimi hangi alanları içerir?
- Dört: `purchaseToken`, `orderId`, `productType` ve `refundType`. `productType`, bir abonelik için `1` ve bir tek seferlik satın alma için `2`'dir. `refundType`, tam iade için `1` ve çok adetli bir satın almada adet bazlı kısmi iade için `2`'dir.
- Geçersiz kılınmış satın alma bildirimlerini nasıl etkinleştiririm?
- Play Console'da Monetize ardından Monetization setup'ı açın ve Real-time developer notifications bölümünde Enable real-time notifications'ı işaretleyin, ardından Cloud Pub/Sub konu adınızı girin. Her iki içerik seçeneği, abonelikler artı tüm geçersiz kılınmış satın almalar ve buna ek olarak tek seferlik ürün olayları, geçersiz kılınmış satın almaları içerir.
- Geçersiz kılınmış satın alma bildirimi ile Voided Purchases API arasındaki fark nedir?
- Bildirim, bir satın alma geçersiz kılındığı anda Cloud Pub/Sub aracılığıyla gerçek zamanlı olarak teslim edilen bir push sinyalidir. Voided Purchases API, sunucunuzun bir zaman aralığındaki geçersizlikleri listelemek için kendi programına göre sorguladığı bir çekme yoludur. Anında tepki vermek için bildirimi, mutabakat ve tamamlama için API'yi kullanın.
- Bir geçersiz kılınmış satın alma bildirimi iadeye itiraz etmemi sağlar mı?
- Hayır. Çoktan verilmiş bir kararın olay sonrası bir bildirimidir. Sizin girdinizi alan tek Google Play akışı, yanıtlamak için 24 saatinizin olduğu `orders.reviewrefund` üzerinden ters ibraz incelemesidir ve Apple'da bu, 12 saatlik bir süreye sahip CONSUMPTION_REQUEST'tir.
Kaynaklar ve ek okumalar
- Android Developers: Real-time developer notifications reference guide
- Google Play Developer API: Voided Purchases API
- Google Play Developer API: REST Resource purchases.voidedpurchases
- Android Developers: Purchase lifecycle and RTDNs
- Google Play Console Help: refund protection and chargeback cost responsibility
- Google Play Developer API: Method orders.reviewrefund
RefundHalt
App Store ve Google Play için geri ödeme otomatik pilotu
Okumaya devam edin
Bir Google Play siparişini kendiniz iade edebilirsiniz ve bunu ters ibrazdan önce yapmak banka ücretinden tasarruf ettirir
Üç yıldan eski olmayan herhangi bir Google Play siparişini, erişimi iptal ederek veya etmeden, tek bir API çağrısıyla iade edebilirsiniz. Bir anlaşmazlık ters ibraza dönüşmeden önce iadeyi kendiniz yapmak, 3 Ağustos 2026 tarihinden itibaren geliştiricilere yansıyan banka ücretinden sizi kurtarır. orders.refund şöyle çalışır.
Apple'ın Send Consumption Information özelliği artık on iki değil beş alan istiyor ve işte her biri
Bir müşteri Apple'dan para iadesi istediğinde, Send Consumption Information yükü sizin yanıtınızdır. Apple bunu on iki alandan beşe indirdi, üçü zorunlu ve ikisi isteğe bağlı. İşte her alan, her birinin kabul ettiği değerler ve onu gönderdiğiniz 12 saatlik pencere.