Google Play Developer API - 400无效值 - InAppPurchases

时间:2017-09-05 12:39:20

标签: java kotlin google-oauth google-api-java-client google-play-developer-api

我的问题类似于this one。但是,我正在使用API Java Client Library和服务帐户,从我的服务器调用API。

我的代码遵循this指南,这非常简单。但是,我似乎无法为我的请求获得适当的错误。这就是我构建AndroidPublisher

的方式
val credential = GoogleCredential.fromStream(FileInputStream(
        "/path/to/json"
)).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER))

androidPublisher = AndroidPublisher.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(packageName)
        .build()

从开发者控制台在服务帐户下生成JSON的位置。这就是我提出要求的方式:

androidPublisher.purchases().subscriptions().get(packageName, "valid-sku", "invalid-token").execute()

我的订阅ID有效但我的令牌无效。我期待一个错误,例如"无效令牌"在回应中。但是,我得到的是:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid Value",
    "reason" : "invalid"
  } ],
  "message" : "Invalid Value"
}

由于令牌无效或是认证问题,这是一般性错误吗?如果是身份验证问题,我该如何解决?如果这是一个无效的令牌问题,我该怎么知道?

更多信息:

  • 我在尝试从API资源管理器进行调用时遇到同样的错误(这次是使用客户端ID和API密钥而不是服务帐户)。
  • 我有委派的域范围内的服务帐户访问权限。我出于某种原因需要吗?
  • 我可以成功地对API进行其他调用,例如inappproducts.list

5 个答案:

答案 0 :(得分:3)

所以,发生这种情况的原因只是因为我使用的purchaseToken是错误的。

我没想到这是因为我认为在无效令牌的情况下,我会收到“令牌无效”错误(或类似的东西)。事实证明,Google提供的回复非常不一致(也可以为无效令牌提供404)。

答案 1 :(得分:2)

挠了几个小时,我所有的参数都是正确的,然后好吧..我意识到我在吠错树(端点)

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}

不是这个

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}

/purchases/subscriptions/.. vs /purchases/products/..

答案 2 :(得分:1)

在我的情况下,问题是我在打电话:

purchases.products.get

代替:

purchases.subscriptions.get

答案 3 :(得分:0)

根据我的经验,如果您在HTTP 400上遇到Invalid Value错误,则该购买或订阅的价格为 FRAUD

您可以查看这些购买的订单ID部分。可能是XXXXXXXXXXXX.XXXXXXXXXXXX的格式,这是错误的,应该为GPA.XXXX.XXXXX.XXXXX.XXX

  • 我真的不算X字符数。我只是为了说明逻辑。

答案 4 :(得分:-1)

对于所有遇到此问题的人,99% 的人都需要为内部测试人员发布应用程序。

遵循本指南:https://support.google.com/googleplay/android-developer/answer/6062777?hl=en

enter image description here