【问题标题】:Check a Google Play Purchase from Java Server从 Java 服务器检查 Google Play 购买
【发布时间】:2016-06-20 10:48:51
【问题描述】:

我正在尝试使用 Google Play API 验证购买。我得到了一个 purchaseId,我试图通过调用 Purchases.products 来获取它的状态。

我一直在按照这个问题 (Android : inApp purchase receipt validation google play) 的步骤进行操作,虽然了解我需要什么真的很棒,但我无法获得一个简单的 Java 代码示例。

现在我有一个 JWT 令牌,我知道我需要用它来创建一个访问令牌(可能是创建一个 Credentials 对象?)才能调用 api,但我一直无法完成它.

谁能给我一个代码示例来知道怎么做?

【问题讨论】:

标签: java android google-play-developer-api


【解决方案1】:

我终于可以在 Google Play 上查看我的购买记录了。当我通过移动应用购买商品时,Google Play 会向我发送收据。然后,我将此收据发送到我的服务器,我只需要在服务器端做两件事:

-使用之前生成的服务账号Json来获取我的google凭证

-使用 google 凭据和收据从 google play 获取购买信息。

我使用这两个函数来执行它:

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;
}

使用购买对象,我可以在一分钟内验证购买。

编辑:哦,不要在 API 包上寻找 GoogleReceipt 类。这只是我为解析收据信息而创建的一个基本类。

【讨论】:

  • 当我实施您的解决方案时,服务器(google appengine)会抛出以下异常。你知道为什么吗?处理程序调度失败;嵌套异常是 java.lang.NoSuchMethodError: com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient$Builder.setBatchPath(Ljava/lang/String;)Lcom/google/api/client/googleapis/services/AbstractGoogleClient$建设者;
猜你喜欢
  • 1970-01-01
  • 2017-10-03
  • 2013-04-10
  • 2017-01-07
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
相关资源
最近更新 更多