Ich verwende Google Wallet für mein Zahlungsgateway, nachdem ich das Produkt Google gekauft habe
{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}
Ich versuche, die von Google Play neu eingeführte Quittungsüberprüfung zu verwenden. In der Google Developer Console habe ich den Zertifikatschlüssel über das Dienstkonto in der Berechtigung erstellt. Ich bin jedoch verwirrt, wie ich die Belegvalidierung nach dem Kauf eines Produkts im Google Play-Store verwenden kann.
Kann mir bitte jemand helfen, wie ich die Quittungsvalidierung des InApp
Kaufs durchführe ?
android
in-app-purchase
android-pay
Binil Surendran
quelle
quelle
Antworten:
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, wobeiPurchases.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 einaccess_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, denclient_email
vom JWT als denissuer
und den öffentlichen Schlüssel verwenden möchten, den Sie vomprivate_key
und erhalten können Die Passphrasenotasecret
wird für die verwendetsigning_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:
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:
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!
quelle
Marc's Antwort ist ausgezeichnet. Ich möchte nur hinzufügen, dass die Google Play Developer API-Clientbibliothek für Java das Herstellen einer Verbindung von Ihrem Server zu den Google Play-Servern erheblich vereinfacht. Die Bibliothek übernimmt automatisch das Aktualisieren des Authentifizierungstokens und bietet außerdem eine typsichere API, sodass Sie nicht mit URLs herumspielen müssen.
So richten Sie den
Publisher
Singleton ein:Der folgende Code fragt einen Produktkauf ab:
Sie können auch nach Abonnements fragen:
quelle
APP_NAME = APP_PACKAGE_NAME
.getClass().getResourceAsStream(...
ich verwendetnew FileInputStream(...
.credential.refreshToken();
zwischen dem Abrufen des Berechtigungsnachweises und dem Herausgeber.@ marc-greenstock lieferte eine großartige Antwort. Es gibt jedoch eine sehr wichtige Sache bei der Belegvalidierung mit der Google Play Android Developer API.
Wenn Sie Probleme mit der Verwendung dieser API haben und Ihr In-App-Produkt hinzugefügt haben, bevor Sie die Berechtigung erteilen oder eine Verknüpfung zu Ihrem Dienstkonto herstellen, müssen Sie "In-App-Produkte" öffnen und einige Aktualisierungen durchführen. Sie können beispielsweise die Beschreibung Ihres Produkts bearbeiten und speichern. Sie sollten sofort die Erlaubnis erhalten.
Ich habe ein paar Stunden darüber nachgedacht, was ich falsch gemacht habe ...
quelle
Diese Antwort ist ausgezeichnet. Ein weiteres Problem, auf das wir gestoßen sind, als wir der Anweisung gefolgt sind, war, dass das Dienstkonto nicht in der Google Play Console angezeigt wurde. Wir haben diese Lösung gefunden, um zu helfen: Das Dienstkonto wird nach der Erstellung nicht in Google Console angezeigt
Gehen Sie in der Google API Console zu IAM und fügen Sie das neue Dienstkonto hinzu. Anschließend wird es in der Google Play Console angezeigt. Bildschirmfoto
quelle