0

我正在 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 相关的服务器错误吗?

4

1 回答 1

1

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

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

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

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

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

于 2012-09-30T23:40:14.103 回答