Google Android发布商API以"410 purchaseTokenNoLongerValid"错误响应

ksi*_*mka 13 android subscription google-play-developer-api

获取订阅状态(https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get)后,API会响应

{
  "error": {  
    "errors": [   
      {    
        "domain": "androidpublisher",    
        "reason": "purchaseTokenNoLongerValid",    
        "message": "The purchase token is no longer valid."   
      }  
    ],  
    "code": 410,  
    "message": "The purchase token is no longer valid." 
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法在Android发布商API的上下文中找到任何提及"purchaseTokenNoLongerValid"或"购买令牌不再有效"的内容,无论是在文档中还是在Google搜索中.

我可以猜出这个错误意味着什么,但更好地确切地知道,无论如何,在此错误之后我应该如何处理订阅?

zaf*_*s.m 18

我最近收到了来自Google Play团队的此消息,因此HTTP status 410订阅已过期超过60天的默认响应.

从2018年5月21日开始,Purchases.subscriptions.get将返回HTTP状态410,对于已过期60天或更长时间的订阅,响应中没有内容.对于尚未过期或已过期少于60天的有效订阅或已取消订阅,没有任何更改.

访问Android开发者网站,了解有关如何验证购买的更多信息.

事实上,我在5月22日尝试了它并获得状态410和本机构的回复:

{
    "error": {
        "errors": [
            {
                "domain": "androidpublisher",
                "reason": "subscriptionPurchaseNoLongerAvailable",
                "message": "The subscription purchase is no longer available for query because it has been expired for too long."
            }
        ],
        "code": 410,
        "message": "The subscription purchase is no longer available for query because it has been expired for too long."
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 为了谷歌搜索命中:似乎响应原因已经改为`subscriptionPurchaseNoLongerAvailable`,并显示消息`订阅购买不再可用于查询,因为它已经过期太久了. (3认同)
  • 令人惊讶的是谷歌未记录的功能。非常感谢您的回答! (2认同)

gui*_*tgl 6

我收到了 Google Play 支持团队关于此错误的官方回复:

我查看了一下,您提供的订单 ID 与一个现已删除的帐户关联。这就是它无法通过验证的原因。这是许可系统按预期运行的一个很好的例子。

您可以随意忽略此订阅。

在我询问更多细节后又收到一封电子邮件:

从技术上讲,即使订阅未附加到帐户,订阅仍然有效 - 因此,它不会显示为已取消。我们知道,如果没有收到有关帐户状态的明确消息而只是返回错误,则令人困惑。这是我们仍在积极研究的产品领域。

您可以做的是使用 API 撤销订阅,既然您已经确认该帐户已消失,那么就可以这样做。然后它将读取为已取消,并且在进行 API 调用时将不再抛出错误。