Tüm makaleler
Deep dive8 dk okuma

Bir Google Play satın alması iade edildiğinde veya ters ibraz edildiğinde, bunu Voided Purchases API ile öğrenirsiniz

Google Play, bir satın alma iade edildiğinde veya ters ibraz edildiğinde onu sessizce geçersiz kılar. Voided Purchases API bu siparişlerin listesidir, böylece erişimi geri alabilirsiniz. İşte her alan, 30 günlük pencere, siparişleri gizleyen geri alma seçeneği ve maliyeti.

Kağıt bir defterin, kapalı pirinç bir asma kilidin ve kayıp giden bir madeni paranın yanında bir akıllı telefon. İade edilen ve ters ibraz edilen siparişleri bildiren Google Play Voided Purchases API'yi gösteriyor.

Önemli noktalar

  • Voided Purchases API, yani purchases.voidedpurchases.list yöntemi, Google Play'in iptal ettiği, iade ettiği veya ters ibraz ettiği siparişleri döndürür, böylece müşterinin artık sahip olmadığı şeye erişimi kesen bir geri alma sistemi kurabilirsiniz.
  • Yalnızca geri alınan siparişler görünür. Geri alma seçeneği olmadan verilen bir geliştirici iadesi bu API'de görünmez, bu yüzden erişimi çekmek istiyorsanız geri alma açıkken iade etmeniz gerekir.
  • Pencere 30 gündür. startTime 30 günden daha eskiye ayarlanamaz, bu yüzden bir aydan uzun süre çalışmayan bir sunucu o geçersiz kılınan siparişleri kalıcı olarak kaybeder. Bir programa göre sorgulayın.
  • voidedSource siparişi kimin geçersiz kıldığını söyler: 0 kullanıcı, 1 geliştirici, 2 Google'dır. voidedReason nedenini söyler, 0 Other'dan 7 Chargeback ve 8 Unacknowledged_purchase'a kadar.
  • Real-time developer notifications, bir satın alma geçersiz kılındığı anda bir VoidedPurchaseNotification gönderir, ancak bunu bir sinyal olarak ele alın. Geri almadan önce yetkili liste için Voided Purchases API'yi çağırın.
  • Abonelik yenilemelerini purchaseToken ile değil orderId ile tanımlayın. Tek bir purchaseToken bir aboneliğin her yenilemesini kapsar, bu yüzden token tek başına iki yenilemeyi ayırt edemez.
  • Kotalar günde 6,000 sorgu ve herhangi bir 30 saniyelik pencerede 30 sorgudur, bu yüzden sonuçları devam belirteciyle sayfalayın ve zaman penceresine göre sorgulayın, asla sipariş başına bir çağrı yapmayın.

Google Play'de bir iade kapınızı çalmaz. Para hareket eder, müşteri uygulamayı açık tutar ve siz arayıp bakmadığınız sürece sizin tarafınızda hiçbir şey değişmez. Voided Purchases API, arayıp baktığınız yerdir. Size iptal edilen, iade edilen veya ters ibraz edilen siparişlerin bir listesini verir, böylece müşterinin artık ödemediği şeye erişimi geri alabilirsiniz. Zamanlanmış bir işi ona yöneltin, listeyi okuyun, yetkiyi kesin. Döngünün tamamı budur.

Çoğu ekibi yolundan çıkaran bir tuzak var ve o kodun içinde değil. Burada yalnızca geri alınan siparişler görünür. Play Console'da geri alma seçeneğini işaretlemeden bir satın almayı iade ederseniz, o sipariş bu API'ye asla ulaşmaz ve iade edilen bir müşteri sattığınız her şeyi elinde tutarken işiniz sorunsuz çalışır. Bu yazı API'yi alan alan, onu sınırlayan sayıları ve bunu atladığınızda paranın nereden sızdığını adım adım ele alır.

Voided Purchases API aslında neyi döndürür

API tek bir soruyu yanıtlar: bu uygulamanın hangi siparişleri son zamanlarda geçersiz kılındı. Geçersiz kılma (void), hepsi müşterinin parasını geri almasıyla biten üç sonucu kapsar. Bir iptal, bir iade veya bir ters ibraz. Tek seferlik uygulama içi ürünlere ve aboneliklere uygulanır ve kapsamı tek bir parametreyle seçersiniz. type'ı 0 yapın, yalnızca geçersiz kılınan uygulama içi ürün satın almalarını alırsınız, ki bu varsayılandır. 1 yapın, geçersiz kılınan uygulama içi satın almaları ve geçersiz kılınan abonelik satın almalarını birlikte alırsınız.

Listedeki her giriş bir voided purchase nesnesidir. Alanlar azdır ve her biri önemlidir.

Bir voided purchase üzerindeki alanlar

AlanNeyi barındırır
orderIdTek seferlik bir satın almayı, bir abonelik satın almasını veya tek bir abonelik yenilemesini benzersiz şekilde tanımlayan sipariş kimliği. Bu sizin birleştirme anahtarınızdır
purchaseTokenTek seferlik bir satın almayı veya bir aboneliği tanımlayan belirteç. Yenilemeleri ayırt etmez, bu yüzden onlar için orderId kullanın
purchaseTimeMillisSatın almanın yapıldığı zaman, epoch'tan bu yana milisaniye cinsinden
voidedTimeMillisSatın almanın iptal edildiği, iade edildiği veya ters ibraz edildiği zaman, epoch'tan bu yana milisaniye cinsinden
voidedSourceGeçersiz kılmayı kim başlattı: 0 kullanıcı, 1 geliştirici, 2 Google
voidedReasonSatın almanın neden geçersiz kılındığı, 0'dan 8'e kadar bir tam sayı
voidedQuantityMiktar tabanlı kısmi bir iadeden gelen geçersiz kılınan miktar, yalnızca includeQuantityBasedPartialRefund true olduğunda döndürülür

Harekete geçmeden önce voidedReason'ı okuyun

voidedReason, ham bir listeyi bir karara dönüştüren alandır. Bir alıcı pişmanlığı iadesi ve bir banka ters ibrazı ikisi de aynı listeye düşer, ama aynı olay değildirler ve ağustos fiyatlandırması bunlardan birini pahalı hale getirir. İşte tam liste.

voidedReasonEtiketSizin için ne anlama gelir
0OtherHiçbir kategori atanmadı. Geri alın ve devam edin
1RemorseAlıcı fikrini değiştirdi. Sıradan bir iade
2Not_receivedMüşteri ürünü hiç almadığını söylüyor. Teslimatınızı kontrol etmeye değer
3DefectiveÜrün çalışmadı. Bir kalite sinyali, kaydedin
4Accidental_purchaseİstenmeyen bir satın alma, genellikle paylaşılan bir cihaz
5FraudGoogle işlemi sahtekârlık olarak işaretledi
6Friendly_fraudMeşru kart sahibinin kendi yaptığı bir ücrete itiraz ettiği bir ters ibraz
7ChargebackMüşterinin bankası ödemeyi geri çevirdi. Bankada kesindir ve artık size fatura edilir
8Unacknowledged_purchaseGoogle, uygulamanızın hiç onaylamadığı bir satın almayı otomatik iade etti

30 günlük pencere, listenizi boşaltan tuzaktır

Voided Purchases API yalnızca son 30 gündeki geçersiz kılınan satın almaları gösterebilir. startTime parametresi varsayılan olarak şu anki zaman eksi 30 gündür ve bundan daha eskiye ayarlanamaz. endTime varsayılan olarak şimdidir. Yani uç nokta bir arşiv değil, bir aylık kayan bir penceredir.

Sonuç serttir. Sorgulama işiniz bozulur ve beş hafta boyunca kimse fark etmezse, birinci haftanın geçersiz kılmaları API'den zaman aşımına uğramış olur. Onları geri getiren hiçbir çağrı yoktur. O siparişleri geri almazsınız ve başka bir şekilde yakalamadıysanız var olduklarını bile bilmezsiniz. API, en kötü kesintinizin boyutunda bir deliği olan bir güvenlik ağıdır.

Geri alma seçeneği, bir siparişin görünüp görünmeyeceğine karar verir

Bu, bir ekibin API'yi bozuk olarak bildirmesinin en yaygın nedenidir. Yalnızca geri alınan siparişler döndürülür. Kullanıcı kaynaklı iadeler, iptaller, ters ibrazlar ve Google kaynaklı iadeler her zaman geri alınır, bu yüzden her zaman görünürler. Geliştirici kaynaklı bir iade farklıdır. Bir siparişi Play Console veya Orders API aracılığıyla kendiniz iade ettiğinizde, onu ayrıca geri alıp almayacağınızı seçersiniz. Geri almadan iade edin, sipariş müşteriyle çözülür ama Voided Purchases API'de asla ortaya çıkmaz.

Bundan çıkan kural basittir. Amacınız erişimi çekmekse, geri alma seçeneği açıkken iade edin. Aksi takdirde parayı geri vermiş ve kapıyı açık bırakmışsınızdır ve ne kadar iyi yazılmış olursa olsun geri alma işinizin üzerinde hareket edeceği hiçbir şey yoktur.

Kotayı tetiklemeden nasıl sorgulanır

Uç nokta hız sınırlıdır ve sınırlar, naif bir döngünün onlara takılacağı kadar düşüktür. Günde 6,000 sorgu (Pasifik Saati'ne göre sayılır) ve herhangi bir 30 saniyelik dönemde en fazla 30 sorgu alırsınız. Bu bütçe pencereli sorgulama için uygundur ve sipariş başına bir istek tasarımlarına düşmandır.

Sorgu pencereleri ve devam belirteci

maxResults varsayılan olarak 1,000'dir, ki bu aynı zamanda üst sınırdır. Bir pencere bir sayfadan fazla geçersiz kılma barındırdığında, yanıt bir nextPageToken içeren bir tokenPagination nesnesi taşır. Sayfalarda gezinmek için o belirteci sonraki çağrıya geri geçirin. İlgilendiğiniz pencereyi sınırlamak için startTime ve endTime ayarlayın, belirteç tükenene kadar sayfalayın, sonra pencereyi ilerletin. Bu desen sizi hem 30 saniyelik patlama sınırı hem de günlük tavan içinde tutar.

Real-time developer notifications boşluğu kapatır

Her gün sorgulamak yine de bir güne kadar körlük bırakır ve 30 günlük pencere uzun boşlukları cezalandırır. Real-time developer notifications gecikmeyi ortadan kaldırır. Google, bir satın alma geçersiz kılındığı anda sahibi olduğunuz bir Cloud Pub/Sub konusuna bir VoidedPurchaseNotification yayınlar ve arka ucunuz onu saniyeler içinde tüketir. Mesaj küçüktür.

RTDN alanıNeyi barındırır
purchaseTokenOrijinal satın almadan gelen belirteç
orderIdGeçersiz kılınan işlemin sipariş kimliği, abonelik yenilemesi başına yeni bir tane
productTypeAbonelik için 1, tek seferlik satın alma için 2
refundTypeTam iade için 1, miktar tabanlı kısmi iade için 2
Bir akıllı telefonun yanında, bir makbuz yığınının üzerine pirinç bir asma kilidi kapatan bir el. Bir Google Play satın alması geçersiz kılındıktan sonra erişimin geri alınmasını gösteriyor

Bunun size para açısından maliyeti

API bir tesisattır, ama onu bağlamanın nedeni bir faturadır. O listedeki her geçersiz kılma gerçek bir sayıya karşılık gelir ve bunlardan ikisi daha pahalı hale geliyor.

Ters ibraz faturası 3 Ağustos 2026'dan itibaren size geliyor

3 Ağustos 2026'dan itibaren Google, bir ters ibrazın maliyetini geliştiriciye kaydırıyor. Satın alma fiyatını kaybedersiniz ve üstüne bankanın ters ibraz ücretini ödersiniz. 7 olan bir voidedReason artık sadece kaybedilmiş bir satış değil, ekli bir ücreti olan bir gider kalemidir. Bir ters ibrazı geri alamazsınız, o bankada kesindir, ama sonrasındaki kanamayı durdurabilirsiniz. Geçersiz kılmayı hızlı yakalamak, yetkiyi geri almanıza ve hâlâ sunduğunuz her şey için, iade edilen ve sonra geri çevrilen bir müşteriye harcama yapmayı durdurmanıza olanak tanır.

İade edilen bir müşteriye hizmet vermek için ödemeye devam edersiniz

Bir geçersiz kılma ortaya çıktığı anda satın alma fiyatı gitmiştir. Hâlâ kontrol ettiğiniz şey, sunmaya devam etmenin maliyetidir. İade edilen bir yetki canlı kaldığı her saat, müşterinin artık finanse etmediği şeyler için ödemeye devam edersiniz: işlem gücü, model API çağrıları, depolama ve onların kullanımına bağlı herhangi bir içerik üreticisi veya ortak ödemesi. Bu API tarafından yönetilen bir geri alma sistemi, o sayacı kapatmanın yoludur. Onu atlayın, mağazanın zaten tazmin ettiği kişiler için ürünü finanse etmiş olursunuz.

friendly fraud, eğilimini takip etmeye değer bir örüntüdür

5 veya 6 olan bir voidedReason tek seferlik değildir. Fraud ve friendly fraud hesaba göre, cihaza göre ve bazen kampanyaya göre kümelenir. API size her geçersiz kılmada voidedSource ve voidedReason'ı verir, bu da her geri çevrilmeyi izole bir maliyet olarak ele almak yerine kötüye kullanımın eğilimini hesaba göre takip etmeye yeter. İki kez ters ibraz yapan bir müşteri, ilk iadenin söylemediği bir şeyi size söylüyor.

RefundHalt tarzında bağlama

Tüm parçaları elinizde tuttuğunuzda model küçüktür. Hiçbir şey tam bir gün beklemesin diye VoidedPurchaseNotification'ı gerçek zamanlı olarak dinleyin. Abonelik yenilemeleri asla karışmasın diye orderId üzerinde anahtarlayarak doğruluk kaynağı olarak Voided Purchases API'yi çağırın. Bir ters ibraz bir pişmanlık iadesinden farklı ele alınsın diye voidedSource ve voidedReason'ı okuyun. 30 günlük pencere asla ısırmayacak kadar sıkı bir programla sorgulayın ve amacınız erişimi kesmek olduğunda her zaman geri alma seçeneği açıkken iade edin.

Bu, RefundHalt'in sizin için çalıştırdığı kısımdır. Gerçek zamanlı bildirimleri tüketir, her geçersiz kılmayı API ile mutabık kılar, tüm ürün yerine tam siparişi geri alır ve pahalı olanlar gömülmek yerine işaretlensin diye bir banka ters ibrazını sıradan bir iadeden ayırır. Kendiniz bir Pub/Sub hattı ve bir sorgulama işi kurmadan, saniyeler içinde erişim geri alınır ve kimin neyi neden geçersiz kıldığının bir kaydını elde edersiniz.

Sık sorulan sorular

İade ettiğim siparişler neden Voided Purchases API'de görünmüyor?
Çünkü yalnızca geri alınan siparişler döndürülür. Kullanıcı iadeleri, iptaller, ters ibrazlar ve Google kaynaklı iadeler her zaman geri alınır ve her zaman görünür. Geliştirici kaynaklı bir iade yalnızca geri alma seçeneğini de seçtiyseniz görünür. Bir siparişi geri almadan iade ettiyseniz, sipariş çözülmüştür ama bu API'ye görünmezdir, bu yüzden erişimi çekmeyi amaçladığınızda her zaman geri alma açıkken iade edin.
Voided Purchases API ne kadar geriye gider?
Otuz gün. startTime parametresi varsayılan olarak şu anki zaman eksi 30 gündür ve bundan daha eskiye ayarlanamaz, bu yüzden uç nokta bir arşiv değil, bir aylık kayan bir penceredir. 30 günü aşarak zaman aşımına uğrayan geçersiz kılınan bir sipariş API'den gitmiştir ve onu geri almanın hiçbir yolu yoktur, bu yüzden bir programa göre sorgular ve bunu gerçek zamanlı bildirimlerle desteklersiniz.
Erişimi geri almak için Real-time developer notifications mı yoksa Voided Purchases API mi kullanmalıyım?
İkisini de kullanın. VoidedPurchaseNotification saniyeler içinde gelir ve size bakmanızı söyler, ama Google'ın kendi rehberliği onu bir doğruluk kaynağı olarak değil bir sinyal olarak ele almaktır. Mevcut durumu doğrulamak için Voided Purchases API'yi çağırın, sonra geri alın. Bildirim gecikmeyi ortadan kaldırır ve API size üzerinde hareket edilecek yetkili voidedSource ve voidedReason'ı verir.
API'de bir ters ibrazı sıradan bir iadeden nasıl ayırt ederim?
voidedReason alanını okuyun. 7 değeri bir ters ibrazdır, yani müşterinin bankası ödemeyi geri çevirmiştir ve 6 friendly fraud'dur. 1 değeri bir pişmanlık iadesidir. Bu önemlidir çünkü 3 Ağustos 2026'dan itibaren Google ters ibraz satın alma fiyatını ve banka ücretini geliştiriciye geçirir, bu yüzden 7 olan bir voidedReason size sıradan bir iadeden daha pahalıya mal olur.
Voided Purchases API abonelikleri kapsar mı?
Evet. Hem geçersiz kılınan uygulama içi satın almaları hem de geçersiz kılınan abonelik satın almalarını almak için type parametresini 1 yapın. Varsayılan olan type 0 yalnızca uygulama içi ürün satın almalarını döndürür. Abonelikler için, tam geçersiz kılınan dönemi orderId ile tanımlayın, çünkü tek bir purchaseToken her yenilemeyi kapsar ve her yenileme işlemi için yeni bir orderId üretilir.

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.