Google bietet eine Belegvalidierung über die Google Play Developer-API . Innerhalb der API befinden sich zwei Endpunkte, an denen Sie am meisten interessiert sind: Purchases.products: get und Purchases.subscriptions: get .
Purchases.products: get
kann verwendet werden, um einen Produktkauf ohne automatische Verlängerung zu überprüfen, wobei Purchases.subscriptions: get
die Abonnements für Produkte mit automatischer Verlängerung überprüft und erneut überprüft werden.
Um entweder Endpunkt verwenden Sie das wissen müssen packageName
, productId
, purchaseToken
all diese Faktoren können in der Nutzlast finden Sie beim Kauf erhalten haben . Sie benötigen außerdem ein access_token
Konto, das Sie durch Erstellen eines Google API-Dienstkontos erhalten können.
Um mit einem Dienstkonto zu beginnen, rufen Sie zunächst die Seite mit den API-Zugriffseinstellungen für die Google Play Developer Console-Konsole auf und klicken Sie auf die Schaltfläche Neues Projekt erstellen:
Sie sollten nun ein neues verknüpftes Projekt und einige neue Abschnitte sehen. Klicken Sie im Abschnitt Dienstkonto auf die Schaltfläche Dienstkonto erstellen.
Sie erhalten eine Infobox mit Anweisungen zum Erstellen Ihres Dienstkontos. Klicken Sie auf den Link zur Google Developers Console. Ein neuer Tab wird angezeigt.
Klicken Sie nun auf Neue Client-ID erstellen, wählen Sie in den Optionen Dienstkonto aus und klicken Sie auf Client-ID erstellen.
Eine JSON-Datei wird heruntergeladen. Dies ist Ihr JSON-Web-Token, mit dem Sie eine JSON-Datei austauschen access_token
.
Wechseln Sie anschließend wieder zur Google Play Developer-Konsole und klicken Sie im Infobox auf Fertig. Sie sollten Ihr neues Dienstkonto in der Liste sehen. Klicken Sie neben der E-Mail-Adresse des Dienstkontos auf Zugriff gewähren.
Wählen Sie als Nächstes unter Wählen Sie eine Rolle für diesen Benutzer aus die Option Finanzen aus und klicken Sie auf Benutzer hinzufügen.
Sie haben jetzt Ihr Dienstkonto eingerichtet und es verfügt über den erforderlichen Zugriff, um Quittungsüberprüfungen durchzuführen. Als nächstes tauschen Sie Ihre JWT gegen ein access_token aus.
Das access_token
läuft nach einer Stunde Austausch ab. Sie benötigen also Servercode, um dies zu handhaben, und Google hat mehrere Bibliotheken in vielen Sprachen bereitgestellt, um dies zu handhaben (Liste nicht vollständig):
Ich werde nicht ins Detail gehen, da es reichlich Dokumentation zur Verwendung dieser Bibliotheken gibt, aber ich werde erwähnen, dass Sie den https://www.googleapis.com/auth/androidpublisher
als OAuth2-Bereich, den client_email
vom JWT als den issuer
und den öffentlichen Schlüssel verwenden möchten, den Sie vom private_key
und erhalten können Die Passphrase notasecret
wird für die verwendet signing_key
.
Sobald Sie das haben, können access_token
Sie loslegen (zumindest für die nächste Stunde, an der Sie nach dem gleichen Verfahren wie im obigen Absatz eine neue anfordern möchten).
Um den Status eines Verbrauchsmaterialkaufs (nicht automatisch erneuernd) zu überprüfen, senden Sie eine http- get
Anfrage an:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Wenn Sie einen 200-http-Antwortcode erhalten, verlief alles wie geplant und Ihr Kauf war gültig. Ein 404 bedeutet, dass Ihr Token ungültig ist, sodass der Kauf höchstwahrscheinlich ein Betrugsversuch war. Ein 401 bedeutet, dass Ihr Zugriffstoken ungültig ist, und ein 403 bedeutet, dass Ihr Dienstkonto keinen ausreichenden Zugriff hat. Überprüfen Sie, ob Sie Finanzen aktiviert haben für das Zugriffskonto in der Google Play Developer-Konsole .
Die Antwort von einem 200 sieht ungefähr so aus:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Eine Erläuterung der einzelnen Eigenschaften finden Sie unter https://developers.google.com/android-publisher/api-ref/purchases/products .
Abonnements sind ähnlich, aber der Endpunkt sieht folgendermaßen aus:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
Die Antwort sollte folgende Eigenschaften enthalten:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Informationen zu den Eigenschaften finden Sie unter https://developers.google.com/android-publisher/api-ref/purchases/subscriptions. Beachten Sie, dass startTimeMillis
undexpiryTimeMillis
unterliegen wird in Abhängigkeit von der Dauer des Abonnements ändern.
Viel Spaß beim Validieren!