应用内结算-当queryPurchases()返回空列表时,Google Play会显示“您已拥有此商品”消息

Gen*_*337 5 in-app-purchase in-app-billing google-play

我刚刚购买了一项商品,但由于Wi-Fi失效而失败,但是由于某种原因,Google Play却给我一条消息,指示订单未完成或有其他东西,我应该在某些链接上进行检查(我忘记了写下来)。

当我尝试再次进行相同的测试购买时,Google Play提示我“您已经拥有此商品”错误。所说的购买不在Google Play信息中心的我的订单历史记录中。

发生了什么事,我该如何解决?

编辑:清除Google Play商店缓存,清除Google Services Framework缓存并重新安装该应用程序不起作用。


编辑2:

我设法通过强制停止Google Play商店应用,清除其数据然后重新启动来解决此问题。目前,我只能得出结论,当Wi-Fi断开连接时进行的购买是在Play商店应用的数据中,而不是在缓存中。

因此,我的问题变成了:开发人员是否有责任处理这种特殊情况(当解决方案不在应用程序内部时),以及如何处理?

goo*_*ool 4

我遇到了完全相同的问题,我收到错误消息,表明我已经拥有该商品,但 getPurchases 调用返回了一个空列表。最终对我有用的是获取购买历史记录(如果此列表为空),并获取该特定产品 ID 的最后一次购买的购买令牌并将其用于消费:

mService.getPurchaseHistory(version, packageName, "inapp", null, new Bundle());
Run Code Online (Sandbox Code Playgroud)

请记住,历史记录包含该用户上次购买每种产品类型的信息,因此请确保将产品 ID 与相关产品 ID 进行比较。