2016-04-13 10 views
6

Mam aplikację na Androida z odnawialnymi miesięcznymi subskrypcjami. W tej aplikacji chcę powiadomić użytkownika o pewnych informacjach, gdy jego subskrypcja będzie kontynuowana w przyszłym miesiącu.Android - Jak sprawdzić, czy subskrypcja jest odnawiana?

Jak widać odnowienia w centrum handlowym (orderId kończy się np. ..0, ..1), ale podczas kwerendy w ekwipunku mój identyfikator zamówienia zamówienia jest taki sam jak przed eq.

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

Co mnie bardziej niepokoi, to że czas zakupu również się nie zmienia.

Moje pytanie brzmi: czy istnieje jakiś sposób, aby wykryć w aplikacji, że nastąpiło odnowienie?

Edit:

używam Google Play Developer API, aby uzyskać informacje o subskrypcji, a następnie obliczyć liczbę odnowień siebie.

Odpowiedz

2

ID zamówienia dla wszystkich powtórzeń są zwrócone w orderId dziedzinie JSON dziedzinie INAPP_PURCHASE_DATA (w V3) z każdego okresowego transakcji przyłączonej przez liczbę całkowitą.

Subscription order numbers

Aby pomóc śledzić transakcje odnoszące się do danego abonamentu, płatności Google udostępnia wiele Sprzedawcy podstawa aby wszystkie nawrotów abonamentu i oznacza każdą cykliczne transakcji dołączając liczbę całkowitą następująco :

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

Ale ze względu na local caching możesz nie dostać najnowsze informacje. Więc spróbuj wyczyścić pamięć podręczną z menedżera aplikacji, aby najpierw sprawdzić, czy otrzymasz prawidłowe informacje o zakupie.

Ponieważ zapytanie o kupno w ten sposób nie jest niezawodne, lepiej jest zadzwonić do programisty Google Play Developer Purchases.subscriptions: get z zaplecza, aby uzyskać Purchases.subscriptions resource, która zwróci expiryTimeMillis z obecnej subskrypcji.

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

To, co podałeś, to sposób na wysłanie zapytania do API dla programistów Google Play w celu subskrypcji. Można to zrobić po stronie serwera. Ale pytania stanowią stany sprawdzające stan zapasów po stronie urządzenia. –

+0

Jeśli nie można go wiarygodnie sprawdzić po stronie urządzenia, czy nie lepiej wypróbować inne opcje, które pomogą osiągnąć cel, jakim jest sprawdzenie, czy subskrypcja jest odnawiana? – random

+0

Wystarczająco fair.Ale tylko dlatego, że wiesz, że w dokumentacji wyraźnie stwierdzili, że szczegóły zakupu nie zostaną zwrócone podczas kwerendy o zasoby, jeśli subskrypcja wygasła lub nie jest już ważna. Opublikowałem link w mojej odpowiedzi. –

4

Dane zakupu subskrypcji są zwracane tylko wtedy, gdy subskrypcja jest aktywna. Po wygaśnięciu subskrypcji nie otrzymasz tych danych zakupu po wysłaniu zapytania do ekwipunku.

Wyciąg z link

Jeśli powracającym płatność nie powiedzie się (na przykład z powodu karty kredytowej klienta stał się nieważny), abonament nie odnowi. Metoda getPurchases() nie zwraca niedziałających lub wygasłych subskrypcji.

Powiązane problemy