2016-04-13 13 views
6

Ich habe eine Android-App mit erneuerbaren monatlichen Abonnements. In dieser App möchte ich dem Benutzer einige Informationen mitteilen, wenn sein Abonnement im nächsten Monat fortgesetzt wird.Android - Wie überprüft man, ob das Abonnement erneuert wird?

Wie ich sehen kann Erneuerungen in Merchant Center (OrderId endet mit zB .. 0, .. 1), aber bei der Abfrage des Inventars meine Bestellung ID ist gleich wie vor eq.

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

Was mich mehr stört ist, dass Kaufzeit auch nicht ändert.

Meine Frage ist also: Wenn es eine Möglichkeit gibt, in der App zu erkennen, dass Erneuerung stattgefunden hat?

Edit:

Ich verwende Google Developer API Play-Abonnement Informationen zu erhalten und dann Anzahl der Verlängerungen selbst zu berechnen.

Antwort

2

Auftrag-ID für alle Rezidive sind in orderId Feld der INAPP_PURCHASE_DATA JSON Feld (in V3) mit jeder wiederkehrenden Transaktion durch eine ganze Zahl angehängt zurückgegeben.

Subscription order numbers

Sie Transaktionen zu einem bestimmten Abonnement beziehen, zu helfen, zu verfolgen, bietet Google Zahlungen eine Basis Händler Bestellnummer für alle Rezidive des Abonnements und bezeichnet jede Transaktion wiederkehrende durch eine ganze Zahl anhängt wie folgt :

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

Aber wegen local caching Sie nicht bekommen könnte die neuesten Informationen. Versuchen Sie also, den Cache vom Anwendungsmanager zu löschen, um zu sehen, ob Sie korrekte Kaufinformationen erhalten.

Seit Einkauf Abfrage auf diese Weise nicht zuverlässig ist, ist es sinnvoller Google Purchases.subscriptions: get API von einem Back-End-Play Developer rufen Purchases.subscriptions resource zu erhalten, die expiryTimeMillis der aktuellen Abonnements zurück.

+0

Sie haben eine Möglichkeit, die Google Play Developer API für ein Abonnement abzufragen. Dies kann vom Server aus erfolgen. Bei den Fragen wird jedoch das Inventar auf der Geräteseite abgefragt. –

+0

Wenn es auf der Geräteseite nicht zuverlässig überprüft werden kann, ist es nicht besser, andere Optionen auszuprobieren, die helfen, den Zweck zu erfüllen, nämlich zu überprüfen, ob das Abonnement erneuert wird? – random

+0

Fair genug.Aber nur damit Sie wissen, dass in der Dokumentation eindeutig angegeben wurde, dass die Kaufdetails nicht zurückgegeben werden, wenn Sie das Inventar abfragen, wenn das Abonnement abgelaufen oder nicht mehr gültig ist. Ich habe den Link in meiner Antwort gepostet. –

4

Die Kaufdaten für Abonnements werden nur zurückgegeben, wenn das Abonnement aktiv ist. Wenn das Abonnement abläuft, erhalten Sie diese Kaufdaten nicht, wenn Sie das Inventar abfragen.

Auszug aus den link

Wenn eine wiederkehrenden Zahlung (zum Beispiel, weil der Kreditkarte des Kunden ungültig worden ist) ausfällt, das Abonnement nicht erneuert. Die Methode getPurchases() gibt keine fehlgeschlagenen oder abgelaufenen Abonnements zurück.

Verwandte Themen