2016-06-20 3 views
3

Ich versuche, einen Kauf über die Google Play-API zu validieren. Ich erhalte eine purchaseId und versuche mit einem Aufruf von Purchases.products den Status zu erhalten.Einen Google Play-Kauf über den Java-Server prüfen

Ich habe die Schritte zu dieser Frage befolgt (Android : inApp purchase receipt validation google play) und während es wirklich toll ist, eine Idee von dem zu bekommen, was ich brauche, kann ich kein einfaches Beispiel für die Arbeit mit Java-Code bekommen.

Jetzt habe ich ein JWT-Token, und ich weiß, dass ich es verwenden muss, um ein Access-Token zu erstellen (vielleicht ein Credentials-Objekt erstellen?), Um die API aufzurufen, aber ich konnte nicht abschließen es.

Kann mir jemand ein Codebeispiel geben, um zu wissen, wie es geht?

+0

Wie wäre es mit dieser Antwort?: Http: //stackoverflow.com/questions/11115381/unable-to-get-the-subscription-information-from-google-play-android-developer-ap/29728826#29728826 – Tomcat

Antwort

2

Ich konnte endlich meine Einkäufe mit Google Play überprüfen. Wenn ich etwas von meiner mobilen App kaufe, sende mir Google Play eine Quittung. Dann habe ich diesen Eingang zu meinem Server senden, und ich hatte nur zwei Dinge Server-Seite zu tun:

-Mit das zuvor erzeugten Dienstkontos Json zu meinen Google-Anmeldeinformationen

-Use der Google-Anmeldeinformationen und die Quittung um die Kaufinformationen von Google Play zu erhalten.

Und ich habe diese beiden Funktionen sie ausführen:

private static GoogleCredential getGoogleCredential() throws IOException { 
    List<String> scopes = new ArrayList<String>(); 
    scopes.add(AndroidPublisherScopes.ANDROIDPUBLISHER); 

    ClassLoader classLoader = MY_CLASS.class.getClassLoader(); 
    GoogleCredential credential = GoogleCredential.fromStream(classLoader.getResourceAsStream(GOOGLE_KEY_FILE_PATH)) 
      .createScoped(scopes); 
    return credential; 
} 

private static ProductPurchase getPurchase(GoogleReceipt receipt, GoogleCredential credential) 
     throws GeneralSecurityException, IOException { 
    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 
    AndroidPublisher publisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential) 
      .setApplicationName(YOUR_APPLICATION_NAME).build(); 
    AndroidPublisher.Purchases purchases = publisher.purchases(); 

    final Get request = purchases.products().get(receipt.getPackageName(), receipt.getProductId(), 
      receipt.getPurchaseToken()); 
    final ProductPurchase purchase = request.execute(); 
    return purchase; 
} 

Mit dem Kauf Objekt konnte ich den Kauf in nur einer Minute validieren.

Bearbeiten: Oh, nicht auf GoogleReceipt-Klasse für die API-Pakete suchen. Es ist nur eine grundlegende Klasse, die ich erstellt habe, um die Quittungsinformationen zu analysieren.

+0

Wenn Ich implementiere deine Lösung, der Server (google appengine) löst die folgende Ausnahme aus. Weißt du, warum? Handlerversendung fehlgeschlagen; Die verschachtelte Ausnahme ist java.lang.NoSuchMethodError: com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient $ Builder.setBatchPath (Ljava/lang/String;) Lcom/google/api/client/googleapis/services/AbstractGoogleClient $ Erbauer; – tolgatanriverdi

+0

Welche Codezeile wirft die Ausnahme auf? – Robles

Verwandte Themen