我们试图验证从服务器端的移动应用程序生成的收据。它最初是有效的,但我们直接向代码提供收据详细信息。现在我们正在从移动应用程序 API 函数尝试它,我们收到错误代码 503。
{
"error": {
"code": 503,
"message": "An internal error occurred.",
"errors": [
{
"message": "An internal error occurred.",
"domain": "androidpublisher",
"reason": "subscriptionInternal"
}
]
}
}
我正在做的是使用谷歌API验证我的收据。为此,我在谷歌播放控制台中创建了一个服务帐户,并授予了相同的权限。并在开发者控制台中创建了 OAuth 2.0 客户端 ID。
通过使用client_id,客户端机密和重定向 URI 正在验证接收。
例如,如果我在 Google API 中提供了无效数据,我输入的包名称不正确,那么它将显示正确的响应,例如
{
"error": {
"code": 400,
"message": "The purchase token does not match the package name.",
"errors": [
{
"message": "The purchase token does not match the package name.",
"domain": "androidpublisher",
"reason": "purchaseTokenDoesNotMatchPackageName",
"location": "token",
"locationType": "parameter"
}
]
}
}
当我在代码中正确提供所有数据时,就会出现问题。
我已经在另一个项目中做了同样的事情,我也得到了正确的回应。但我不知道为什么这里的响应总是 503。
下面是一个示例 URL,我使用它在服务器端进行收据验证
"https://www.googleapis.com/androidpublisher/v3/applications/appId/purchases/subscriptions/subscriptionId/tokens/myPrchaseToken?access_token=myAccesstoken">
我们也遇到了同样的问题。谷歌支持很安静,所以根本没有帮助。 为了暂时解决此问题,我们所做的是在 v2 反复失败并出现 503 错误时调用 API 的 v1。
因此,我们首先尝试 https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.subscriptionsv2/get 中所述的终结点
对于某些购买令牌,这仅返回 503,因此我们调用 中所述的 v1 终结点 https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.subscriptions/get
请注意,v1 响应与 v2 响应不同,但你可以从那里获取除产品 ID 之外的大部分信息。因此,需要确保应用向后端提供此产品 ID。
我们尚未看到 v1 和 v2 终结点都返回错误的任何实例。