2016-04-13 14 views
6

Ho un'app per Android con abbonamenti mensili rinnovabili. In questa app voglio segnalare all'utente alcune informazioni quando la sua iscrizione continua nel mese prossimo.Android - Come verificare se l'abbonamento è rinnovato?

Come posso vedere i rinnovi nel merchant center (orderId termina con ad esempio .0, ..1), ma quando si esegue la query l'inventario il mio orderId di acquisto è lo stesso di befor eq.

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

Ciò che mi dà fastidio è che anche PurchaseTime non cambia.

Quindi la mia domanda è: se c'è un modo per rilevare in app che si è verificato il rinnovo?

Edit:

Sto utilizzando Google Play per gli sviluppatori API per ottenere informazioni di sottoscrizione e quindi calcolare il numero di rinnovi me stesso.

risposta

2

ID ordine per tutte le recidive vengono restituiti nel orderId campo del campo JSON INAPP_PURCHASE_DATA (in V3) con ogni transazione periodico assegnata da un numero intero.

Subscription order numbers

Per aiutare a monitorare le transazioni relative a un dato di sottoscrizione, pagamenti Google fornisce un certo numero di base Merchant dell'ordine per tutti i ricorrenze della sottoscrizione e denota ogni transazione ricorrenti aggiungendo un intero come segue :

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) ... 

Ma a causa di local caching non si potrebbe ottenere le ultime informazioni. Quindi prova a svuotare la cache dal gestore applicazioni per vedere se ricevi le informazioni di acquisto corrette.

Dal interrogazione acquisto in questo modo non è affidabile, ha più senso chiamare sviluppatori Google Play Purchases.subscriptions: get API da un back-end per ottenere Purchases.subscriptions resource che restituirà expiryTimeMillis di abbonamento in corso.

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

Quello che hai fornito è un modo per interrogare l'API per sviluppatori di Google Play per la sottoscrizione, questo può essere fatto dal lato server. Ma la domanda afferma interrogando l'inventario sul lato del dispositivo. –

+0

Se non può essere controllato in modo affidabile sul lato dispositivo, non è meglio provare altre opzioni che aiutano a raggiungere lo scopo che è quello di verificare se l'abbonamento è rinnovato? – random

+0

Abbastanza giusto.Ma solo perché tu sappia che nella documentazione hanno dichiarato chiaramente che i dettagli dell'acquisto non verranno restituiti quando invii l'inventario se l'abbonamento è scaduto o non è più valido. Ho pubblicato il link nella mia risposta. –

4

I dati di acquisto per gli abbonamenti vengono restituiti solo quando l'abbonamento è attivo. Se l'abbonamento scade, non otterrai questi dati di acquisto quando esegui una query sull'inventario.

Estratto dal link

Se un pagamento ricorrente non riesce (ad esempio, perché carta di credito del cliente è diventato non valido), la sottoscrizione non rinnova. Il metodo getPurchases() non restituisce abbonamenti non riusciti o scaduti.

Problemi correlati