Google zapewnia weryfikację paragonów przez Google Play Developer API , w ramach API znajdują się dwa punkty końcowe, którymi będziesz najbardziej zainteresowany: Purchases.products: get i Purchases.subscriptions: get .
Purchases.products: get
może służyć do weryfikacji zakupu produktu bez automatycznego odnawiania, gdzie Purchases.subscriptions: get
służy do weryfikacji i ponownej weryfikacji automatycznie odnawiających się subskrypcji produktów.
Aby użyć punktu końcowego należy znać packageName
, productId
, purchaseToken
wszystkie z nich można znaleźć w zawartości otrzymanej na zakup. Potrzebujesz również, access_token
które możesz uzyskać, tworząc konto usługi Google API.
Aby rozpocząć korzystanie z konta usługi, najpierw przejdź do strony ustawień dostępu do interfejsu API konsoli programisty Google Play i kliknij przycisk Utwórz nowy projekt:
Powinieneś teraz zobaczyć nowy połączony projekt i kilka nowych sekcji, w sekcji Konto usługi kliknij przycisk Utwórz konto usługi.
Zostanie wyświetlone okno informacyjne z instrukcjami tworzenia konta usługi. Kliknij link do Google Developers Console, a pojawi się nowa karta.
Teraz kliknij Utwórz nowy identyfikator klienta, wybierz konto usługi z opcji i kliknij Utwórz identyfikator klienta.
Plik JSON zostanie pobrany, to jest Twój token sieciowy JSON, którego użyjesz do wymiany na taki, access_token
więc zachowaj go w bezpiecznym miejscu.
Następnie przełącz karty z powrotem do konsoli programisty Google Play i kliknij Gotowe w polu informacyjnym. Na liście powinno pojawić się nowe konto usługi. Kliknij Przyznaj dostęp obok adresu e-mail konta usługi.
Następnie w obszarze Wybierz rolę dla tego użytkownika wybierz Finanse i kliknij Dodaj użytkownika.
Skonfigurowałeś już swoje konto serwisowe i masz dostęp do wszystkich niezbędnych do weryfikacji paragonów. Następnym krokiem jest wymiana JWT na access_token.
access_token
Wygasa po jednej godzinie wymiany masz tak potrzebne niektóre kod serwera obsłużyć to i Google dostarczyły kilku bibliotek w wielu językach, aby poradzić sobie z tym (lista nie jest wyczerpująca):
Nie będę wchodzić w szczegóły, ponieważ istnieje mnóstwo dokumentacji na temat korzystania z tych bibliotek, ale wspomnę, że chcesz użyć https://www.googleapis.com/auth/androidpublisher
zakresu OAuth2 jako zakresu OAuth2, client_email
z JWT jako issuer
i klucza publicznego, który można uzyskać z private_key
i hasło notasecret
będzie używane dlasigning_key
.
Gdy już masz access_token
będziesz gotowy, możesz iść (przynajmniej przez następną godzinę, w którym to momencie będziesz chciał poprosić o nowy, postępując zgodnie z tym samym procesem w powyższym akapicie).
Aby sprawdzić stan zakupu materiałów eksploatacyjnych (bez automatycznego odnawiania), przeprowadź http get
żądanie do:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Jeśli otrzymasz kod odpowiedzi 200 http, wszystko poszło zgodnie z planem, a zakup był ważny. 404 oznacza, że twój token jest nieważny, więc zakup był najprawdopodobniej próbą oszustwa. 401 będzie oznaczać, że twój token dostępu jest nieprawidłowy, a 403 będzie oznaczać, że twoje konto usługi ma niewystarczający dostęp, sprawdź, czy włączyłeś Finanse dla konta dostępu w konsoli programisty Google Play.
Odpowiedź z 200 będzie wyglądać podobnie do tego:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Wyjaśnienie każdej usługi znajdziesz na https://developers.google.com/android-publisher/api-ref/purchases/products .
Subskrypcje są podobne, ale punkt końcowy wygląda następująco:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
Odpowiedź powinna zawierać te właściwości:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Zobacz https://developers.google.com/android-publisher/api-ref/purchases/subscriptions, aby zapoznać się z opisami usług. Pamiętaj, że startTimeMillis
iexpiryTimeMillis
będzie ulegać zmianom w zależności od czasu trwania abonamentu.
Miłego sprawdzania!