In App Purchase Android : 购买已购买的产品时 Google Play 没有响应

Posted

技术标签:

【中文标题】In App Purchase Android : 购买已购买的产品时 Google Play 没有响应【英文标题】:In App Purchase Android : No Response from Google Play while purchasing an already purchased product 【发布时间】:2012-09-10 17:00:09 【问题描述】:

我正在 android 上测试应用内计费。我能够购买托管产品并从服务器获得预期的响应。但是,当我尝试从同一设备重新购买托管产品时,我没有从 google play 获得任何响应。 重新购买时,我确实收到标题为“已购买商品”的弹出消息,但没有任何回应。但令人惊奇的是,我更早得到了回应。即使我试图从同一设备重新购买相同的产品。谁能帮我解决这个问题? 还有什么方法可以检查产品是否已经购买? 代码:

@Override
 public void onPurchaseStateChange(PurchaseState purchaseState,
                               String itemId, int quantity, long purchaseTime,
                               String developerPayload) 

我尝试重新购买时未调用 onPurchaseStateChange() 函数。 仅从 google play 获得对 onRequestPurchaseResponse() 的 RESULT_ERROR 响应。但我能够第一次购买产品并获得 PurchaseState.PURCHASED 状态。在重新购买的情况下,不会返回任何状态。这是因为与 Google Play 相关的服务器错误吗?

【问题讨论】:

【参考方案1】:

您不应该重新购买托管项目。如果您想多次销售某件商品,请使用非托管商品。

RESULT_ERROR 试图重新购买您已经拥有的东西似乎是合理的。如果没有发生购买,您将不会请求购买状态已更改消息。

您确定您没有将您正在使用的项目从非托管更改为托管吗?或者,也许您正在使用测试产品,而现在您正在使用实际产品? (你可以一遍又一遍地购买android.test.purchased)

您的应用应该跟踪已进行的购买,以便您可以将托管项目标记为已购买,以防止用户尝试重新购买它们(这样他们就知道他们已经购买了它们)。

您需要检查用户是否已经拥有您的任何托管项目的唯一时间是他们是否重新安装了您的应用。在这种情况下,您调用恢复交易并更新已购买的应用程序本地记录。

【讨论】:

以上是关于In App Purchase Android : 购买已购买的产品时 Google Play 没有响应的主要内容,如果未能解决你的问题,请参考以下文章

Android In-App Purchase 离线检查买家

加载产品详细信息时,Cordova iOS In App Purchase 崩溃

Flutter In-App-Purchase,每次重启应用如何查看是不是已购买?

无法实际托管 In-App-Purchase 托管内容

如何停止在 iOS 上跟踪 in_app_purchase Firebase 事件?

In App Purchase沙盒问题