2016-04-13 25 views
6

Yenilenebilir aylık abonelikler ile bir android uygulamasına sahibim. Bu uygulamada onun alt yazı önümüzdeki ay devam ederken kullanıcıya bazı bilgiler bildirmek istiyorum.Android - Aboneliğin yenilenip yenilenmediğini nasıl kontrol edebilirim?

Satıcı merkezindeki yenilemeleri görebildiğim gibi (orderId, örn. .0, ..1 ile biter), ancak envanteri sorgularken, satın alma siparişim eq.

{ 
    "orderId": "GPA.XXXX-YYYY-XXXX-ZZZZZ", 
    "packageName": "my.packageName", 
    "productId": "my.sku", 
    "purchaseTime": 1456398623654, 
    "purchaseState": 0, 
    "developerPayload": "mypayload", 
    "purchaseToken": "token", 
    "autoRenewing": true 
} 

Beni daha fazla rahatsız eden şey bu satın alma zamanının da değişmemesidir.

Bu yüzden sorum şu: Uygulamada, yenilemenin gerçekleştiğini tespit etmenin herhangi bir yolu var mı?

Düzenleme: Kendimi abonelik bilgi almak ve sonra yenilemeler sayısını hesaplamak için Google Play Geliştirici API'sını kullanıyorum

.

cevap

2

al kimliği bir tamsayı, ekteki her yinelenen bir işlem ile (V3) INAPP_PURCHASE_DATA JSON alanının orderId alanında döndürülür. Belirli bir abonelik ile ilgili işlemleri izlemek yardımcı olmak için

Subscription order numbers

, Google ödemeler abonelik tüm nüks için taban Satıcı Sipariş Numarası sağlar ve aşağıdaki gibi bir tamsayı ekleyerek her yinelenen işlem belirtmektedir :

GPA.1234-5678-9012-34567 (base order number) 
GPA.1234-5678-9012-34567..0 (first recurrence orderID) 
GPA.1234-5678-9012-34567..1 (second recurrence orderID) 
GPA.1234-5678-9012-34567..2 (third recurrence orderID) ... 

Ama almayabilir dolayı local caching

son bilgiler. Bu nedenle, doğru satın alma bilgisini alıp almadığınızı görmek için uygulama yöneticisinden önbelleği temizlemeyi deneyin. Bu şekilde güvenilir değildir alım sorgu yana

, Google'ın şimdiki abonelik expiryTimeMillis dönecektir Purchases.subscriptions resource almak için bir arka uç Geliştirici Purchases.subscriptions: get API oyna aramak daha mantıklı.

{ 
    "kind": "androidpublisher#subscriptionPurchase", 
    "startTimeMillis": long, 
    "expiryTimeMillis": long, 
    "autoRenewing": boolean, 
    "priceCurrencyCode": string, 
    "priceAmountMicros": long, 
    "countryCode": string, 
    "developerPayload": string, 
    "paymentState": integer, 
    "cancelReason": integer 
} 
+0

Sağladığınız şey, Google Play Geliştirici API'sını abonelik için sorgulamanın bir yoludur; bu, sunucu tarafında yapılabilir. Ancak sorular, cihaz tarafında envanteri sorgular. –

+0

Cihaz tarafında güvenilir bir şekilde kontrol edilemiyorsa, aboneliğin yenilenip yenilenmediğini kontrol etmek için amaçlara ulaşmaya yardımcı olan diğer seçenekleri denemek daha iyi olmaz mı? – random

+0

Yeterince adil.Ancak, dokümantasyonda, abonelik süresi dolduğunda veya artık geçerli değilse, envanteri sorguladığınızda satın alma ayrıntılarının iade edilmeyeceğini açıkça belirtmişsinizdir. Bağlantıyı cevabımda yayınladım. –

4

Abonelikler için satın alma verileri yalnızca abonelik aktif olduğunda iade edilir. Abonelik süresi dolduğunda, envanteri sorguladığınızda bu satın alma verilerini almazsınız. (Müşterinin kredi kartının geçersiz hale gelmiştir, çünkü örneğin), yinelenen ödeme başarısız olursa link

den

alıntı, abonelik yenilemek etmez. getPurchases() yöntemi başarısız veya süresi dolan abonelikler döndürmez. Tüm tekrar eden