所以我正在编写一个带有特殊应用内货币的Android应用。您可以通过应用内结算以1,5,10等的数据包购买此货币。以下是我实施它的方法:
使用托管产品(当应用启动时,我使用IabHelper查询购买的产品)
购买完成后,立即进行购买
我的问题是,如果第3步失败怎么办?如果连接中断或其他什么,购买令牌永远不会到达我的服务器。在这种情况下,用户将支付货币,但他们的帐户将无法获得。当我的应用程序再次启动,并且1a运行时,它将无法找到购买,也不会重新使用它。
这种推理是否正确?如果是这样,我是否需要在android端存储购买代币?然后,如果出现故障,我会继续重试直到它有效吗?这看起来有点混乱......我还在考虑制作一个“我的购买页面”,你可以看到你所有的购买,然后点击它们来兑换它,如果第3步由于某种原因失败了。
答案 0 :(得分:10)
您应该在后端保留purchaseToken
。这样做有两个原因:
消费购买的方案应如下所示:
purchaseToken
从后端收到成功回复后,您应该在Android端使用该项目。如果您已经在后端添加了虚拟货币(不使用该项目),您还应该返回成功的响应,以便在不增加用户余额的情况下使用该项目。
请注意,即使已经使用了相同的购买也很容易,因此每次在后端验证purchaseToken
必须。如果它已存在于您的数据库中,则不要增加虚拟货币。