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

时间:2016-02-03 06:26:25

标签: android in-app-purchase in-app-billing in-app receipt

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

步骤

  1. 开发者控制台 - >设置 - > API访问
  2. 创建服务器帐户
  3. Google Developer console - >在服务帐户中添加凭据并将其设置为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"
       }
    
  5. 但我不知道如何进行下一步。 如何使用此文件收据验证

    购买后我得到了响应

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

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

1 个答案:

答案 0 :(得分:3)

现在跟进您的http://theunlockr.com/2015/08/23/enable-back-button-ios-8-video/,我知道您正在使用Java作为服务器端代码,您将需要使用original question。我自己对Java不满意,但文档很容易理解。

首先,您需要进行身份验证,然后查看Google提供的Google API Client Library for Java。您目前拥有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文件存储在服务器可以访问的位置。

如果您有兴趣,这是example code

正如我所提到的,我对Java的了解有限,所以请不要忘记我所犯的任何错误。

谷歌提供了一些docs AndroidPublisherScopes下载和GitHub回购链接。我建议检查一下。

从这里,您可以使用code samples方法检索购买的详细信息。文档列出了如下签名:

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

对于订阅,请使用AndroidPublisher.Purchases.Products.Get

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