Android: InApp kaufen Quittungsvalidierung google spielen

Ich benutze Google Brieftasche für meine Zahlung Gateway, nach dem Kauf des Produkts google geben mir eine unten Antwort, die

{ "orderId":"12999763169054705758.1371079406387615", "packageName":"com.example.app", "productId":"exampleSku", "purchaseTime":1345678900000, "purchaseState":0, "developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ", "purchaseToken":"rojeslcdyyiapnqcynkjyyjh" } 

Ich versuche, die Quittungsvalidierung zu nutzen, die das Google-Spiel neu eingeführt hat. In der Google Developer-Konsole habe ich den Zertifikatschlüssel nach dem Service Account in der Berechtigung erstellt. Aber ich bin verwirrt, wie ich die Quittungsvalidierung nach dem Kauf eines Produkts aus dem Google Play Store verwende.

  • Android: relatives Layout zwei Tasten besetzen alle verfügbaren horizontalen Raum
  • Android.content.res.Resources $ NotFoundException: String Ressource ID # 0x0
  • Wie kann ich den Fehler "ADB Server nicht ACK" lösen?
  • Orientierungsänderung mit viewPager innerhalb FragmentActivity
  • Android Embedded HTML5 Video
  • Android: Kopiere Datenbank aus dem Asset-Ordner, bekomme aber nur eine leere Datei
  • So kann mir bitte jemand helfen, wie man die InApp des InApp Kaufs durchführt.

  • Android: fehlgeschlagen zu konvertieren @ Ziehbar / Bild in eine ziehbare
  • Android erhalten Datum vor 7 Tagen (eine Woche)
  • Android: Kopieren Sie in die Zwischenablage ausgewählten Text aus einem TextView
  • Wie man Schlüsselpressen in edittext kennt
  • Android: Wie benutzt man benutzerdefinierte Farben?
  • Kamera auf Android Beispiel
  • 2 Solutions collect form web for “Android: InApp kaufen Quittungsvalidierung google spielen”

    Google stellt die Quittierung der Quittung über die Google Play Developer API zur Verfügung , innerhalb der API sind zwei Endpunkte, an denen Sie sich am meisten interessieren: Purchases.products: get and Purchases.subscriptions: get .

    Purchases.products: get kann verwendet werden, um einen nicht-auto-erneuernden Produkt-Kauf zu überprüfen, wo Purchases.subscriptions: get ist für die Überprüfung und Neuverifizierung von Auto-Erneuerung Produkt-Abonnements.

    Um entweder Endpunkt zu verwenden, musst du den packageName , packageName , productId , purchaseToken alle in der Payload gefunden werden können, die du beim Kauf erhalten hast. Sie benötigen auch einen access_token den Sie erhalten können, indem Sie ein Google API Service Account erstellen.

    Um mit einem Service-Account zu beginnen, gehen Sie zuerst zur Google Play Developer Console API Access Settings Seite und klicken Sie auf die Schaltfläche Create new project:

    Erstellen Sie ein neues Google API-Projekt

    Sie sollten nun ein neues verknüpftes Projekt und einige neue Abschnitte sehen, im Bereich Service Account klicken Sie auf die Schaltfläche Dienstkonto erstellen.

    Erstellen Sie ein neues Service-Konto

    Sie erhalten eine Info-Box mit Anleitungen zur Erstellung Ihres Service-Kontos. Klicken Sie auf den Link zur Google Developers Console und eine neue Registerkarte wird angezeigt.

    Öffnen Sie die Google Developers Console

    Klicken Sie nun auf Neue Client-ID erstellen, wählen Sie Dienstkonto aus den Optionen aus und klicken Sie auf Client-ID erstellen.

    Erstellen Sie eine neue Client-ID

    Eine JSON-Datei wird heruntergeladen, das ist dein JSON-Web-Token, das du verwenden wirst, um für einen access_token auszutauschen.

    Als nächstes schalten Sie die Registerkarten wieder in die Google Play Developer-Konsole und klicken Sie im Info-Feld auf Fertig. Sie sollten Ihr neues Dienstkonto in der Liste sehen. Klicken Sie auf Zugriffsberechtigung neben der E-Mail des Dienstkontos.

    Zugriff gewähren

    Weiter unter "Wählen Sie eine Rolle für diesen Benutzer, wählen Sie" Finanzen "und klicken Sie auf" Benutzer hinzufügen ".

    Setzen Sie die Rolle auf Finanzen

    Sie haben jetzt Ihr Service-Konto eingerichtet und es hat alle notwendigen Zugriff auf Empfangsbestätigungen durchführen. Als nächstes tauscht Ihr JWT für einen access_token aus.

    Der access_token erlischt nach einer einstündigen austausch, also brauchst du einen access_token , um damit zu handeln und Google hat in vielen sprachen mehrere bibliotheken zur Verfügung gestellt (liste nicht erschöpfend):

    Ich werde nicht ins Detail gehen, denn es gibt viele Unterlagen darüber, wie man diese Bibliotheken benutzt, aber ich möchte erwähnen, dass du den https://www.googleapis.com/auth/androidpublisher als den OAuth2-Bereich verwenden client_email Der JWT als issuer und der öffentliche Schlüssel, den du von der private_key bekommen private_key und die Passphrase notasecret wird für die signing_key .

    Sobald Sie die access_token Sie gut zu gehen (zumindest für die nächste Stunde an welchem ​​Punkt möchten Sie eine neue nach dem gleichen Prozess im obigen Absatz anfordern).

    Zur Überprüfung der Status eines Verbrauchs (nicht-auto-erneuern) Kauf machen 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, ging alles wie geplant und Ihr Kauf war gültig. Ein 404 bedeutet, dass dein Token ungültig ist, so dass der Kauf höchstwahrscheinlich ein Betrugsversuch war. Ein 401 bedeutet, dass Ihr Zugriffstoken ungültig ist und ein 403 bedeutet, dass Ihr Dienstkonto nicht genügend Zugriff hat, überprüfen Sie, ob Sie die Finanzierung des Zugriffskontos in der Google Play Developer-Konsole aktiviert haben.

    Die Antwort von 200 wird ähnlich aussehen:

     { "kind": "androidpublisher#productPurchase", "purchaseTimeMillis": long, "purchaseState": integer, "consumptionState": integer, "developerPayload": string } 

    Zur Erläuterung der einzelnen Eigenschaften siehe https://developers.google.com/android-publisher/api-ref/purchases/products .

    Abonnements sind ähnlich, aber der Endpunkt sieht so aus:

    https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token

    Und die Antwort sollte diese Eigenschaften enthalten:

     { "kind": "androidpublisher#subscriptionPurchase", "startTimeMillis": long, "expiryTimeMillis": long, "autoRenewing": boolean } 

    startTimeMillis expiryTimeMillis finden Sie unter https://developers.google.com/android-publisher/api-ref/purchases/subscriptions für die Eigenschaftenbeschreibungen und beachten Sie, dass startTimeMillis und expiryTimeMillis je nach Dauer des Abonnements expiryTimeMillis werden können.

    Glückliche Validierung!

    Marc's Antwort ist ausgezeichnet. Ich werde nur hinzufügen, dass die Google Play Developer API Client Library für Java es bei der Verbindung von Ihrem Server zu den Google Play Servern viel einfacher macht. Die Bibliothek verarbeitet automatisch das Auth-Token und bietet auch eine typenspezifische API, so dass Sie nicht mit URLs herumfliegen müssen.

    Hier ist, wie Sie das Publisher Singleton:

     httpTransport = GoogleNetHttpTransport.newTrustedTransport(); jsonFactory = JacksonFactory.getDefaultInstance(); credential = GoogleCredential.fromStream(getClass().getResourceAsStream("/path/to/your/key.json")).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER)); publisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential).setApplicationName(APP_NAME).build(); 

    Der folgende Code fragt einen Produktkauf ab:

     ProductPurchase product = publisher.purchases().products().get(PACKAGE_NAME, sku, token).execute(); Integer purchaseState = product.getPurchaseState(); product.getPurchaseTimeMillis(); product.getConsumptionState(); product.getDeveloperPayload(); 

    Sie können auch für Abonnements abfragen:

     SubscriptionPurchase sub = publisher.purchases().subscriptions().get(PACKAGE_NAME, sku, token).execute(); sub.getAutoRenewing(); sub.getCancelReason(); ... 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.