播放应用内结算v3 - 我应该保存购买代币吗?

时间:2015-01-17 21:07:04

标签: android in-app-billing

所以我正在编写一个带有特殊应用内货币的Android应用。您可以通过应用内结算以1,5,10等的数据包购买此货币。以下是我实施它的方法:

  1. 使用托管产品(当应用启动时,我使用IabHelper查询购买的产品)

  2. 购买完成后,立即进行购买

  3. 消费完成后,将购买代币发送到服务器
  4. 服务器通过Play API检查,然后使用货币
  5. 设置帐户

    我的问题是,如果第3步失败怎么办?如果连接中断或其他什么,购买令牌永远不会到达我的服务器。在这种情况下,用户将支付货币,但他们的帐户将无法获得。当我的应用程序再次启动,并且1a运行时,它将无法找到购买,也不会重新使用它。

    这种推理是否正确?如果是这样,我是否需要在android端存储购买代币?然后,如果出现故障,我会继续重试直到它有效吗?这看起来有点混乱......我还在考虑制作一个“我的购买页面”,你可以看到你所有的购买,然后点击它们来兑换它,如果第3步由于某种原因失败了。

1 个答案:

答案 0 :(得分:10)

您应该在后端保留purchaseToken。这样做有两个原因:

  • 阻止重复购买
  • 跟踪消费的购买情况

消费购买的方案应如下所示:

  1. 将购买发送到您的后端
  2. 保存purchaseToken
  3. 增加用户余额(虚拟货币)
  4. 发回有关成功操作的信息
  5. 从后端收到成功回复后,您应该在Android端使用该项目。如果您已经在后端添加了虚拟货币(不使用该项目),您还应该返回成功的响应,以便在不增加用户余额的情况下使用该项目。

    请注意,即使已经使用了相同的购买也很容易,因此每次在后端验证purchaseToken 必须。如果它已存在于您的数据库中,则不要增加虚拟货币。