我正在测试Android上的应用内结算功能。我可以购买托管产品,并从服务器获得预期的响应。但是,当我尝试从同一设备重新购买被管理产品时,我没有得到谷歌播放的任何回复。
重新购买时,我会收到标题为“已购买的商品”的弹出消息,但之后没有任何回复。但令人惊奇的是我早些时候得到了回复。即使我试图从同一设备购买同样的产品。任何人都可以帮我解决这个问题吗?
还有什么方法可以检查产品是否已经购买?
代码:
@Override
public void onPurchaseStateChange(PurchaseState purchaseState,
String itemId, int quantity, long purchaseTime,
String developerPayload) {}
当我试图重新购买时,没有调用onPurchaseStateChange()函数。
答案 0 :(得分:1)
您不应该重新购买托管商品。如果您想多次出售某件物品,请使用非托管物品。
RESULT_ERROR回应尝试重新购买你已经拥有的东西似乎是合理的。如果没有购买,您不会要求购买状态已更改消息。
您确定没有将您使用的项目从非托管更改为托管吗?或者您可能正在使用测试产品,现在您正在使用实际产品? (你可以一遍又一遍地购买android.test.purchased)
您的应用应该跟踪已经进行的购买,以便您可以将管理的商品标记为已购买,以防止用户尝试重新购买(因此他们知道他们已经购买了它们)。
您需要检查用户是否已拥有任何托管商品的唯一时间是他们是否重新安装您的应用。在这种情况下,您进行恢复交易呼叫并更新已购买内容的应用本地记录。