Android : inApp 购买收据验证(第 2 部分)

Android : inApp purchase receipt validation (Part 2)

我在我的应用程序中实施 inApp 购买并将产品添加为“管理产品”。购买后我想做 收据验证 。为此我在开发者控制台中配置

步骤是

  1. 开发者控制台 -> 设置 -> API 访问
  2. 创建服务器帐户
  3. Google Developer console -> 在 Service account 中添加凭证并将其设置为 JSON

  4. 添加后我从开发者控制台得到了一个文件,它包含

    {
      "type": "service_account",
      "project_id": "api-xxxxx-xxx",
      "private_key_id": "xxxxxxxxxxxxxxxxxxxxxx",
      "private_key": "-----BEGIN PRIVATE KEY-----\ixxxxxxxxxxxxxxxx=\n-----END PRIVATE KEY-----\n",
       "client_email": "test-in-app-receipt-validation@api-xxxxxxx.iam.gserviceaccount.com",
       "client_id": "xxxxxxxxxxxxxxx",
       "auth_uri": "https://accounts.google.com/o/oauth2/auth",
       "token_uri": "https://accounts.google.com/o/oauth2/token",
       "auth_provider_x509_cert_url":   "https://www.googleapis.com/oauth2/v1/certs",
       "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test-in-app-receipt-validation%40api-9129873511008807687-564452.iam.gserviceaccount.com"
       }
    

但我不知道下一步该怎么做。 如何使用此文件收据验证

购买后收到的回复为

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

任何人都可以帮助我如何处理收据验证的下一步以使用包含 JSON 值

的下载文件

正在跟进您的 now that I know you're using Java for your server side code, you will want to use the Google API Client Library for Java。我自己对 Java 不太满意,但文档很容易理解。

首先,您需要进行身份验证,请查看example code Google 提供的内容。您目前有一个 JWT(JSON Web 令牌),但您可以通过从 Google API 仪表板上的相同位置下载 p12 证书文件来继续示例。

您的验证码应如下所示:

HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance()

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
  .setJsonFactory(jsonFactory)
  .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
  .setServiceAccountScopes(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER))
  .setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
  .build();

另外不要忘记设置 SERVICE_ACCOUNT_EMAIL 并将 key.p12 文件存储在服务器可访问的某个位置。

如果您有兴趣,这是 docs AndroidPublisherScopes

正如我提到的,我对 Java 的了解有限,所以请无视我所犯的任何错误。

Google 提供了一些 code samples 的下载和指向 GitHub 存储库的链接。我建议检查一下。

从这里您可以使用 AndroidPublisher.Purchases.Products.Get 方法来检索购买的详细信息。文档列出签名如下:

AndroidPublisher.Purchases.Products.Get(java.lang.String packageName, java.lang.String productId, java.lang.String token)

订阅使用 AndroidPublisher.Purchases.Subscriptions.Get

如果您需要更多帮助,请考虑使用 javagoogle-api-java-client 标签提问。