Play In-app Billing v3 - 我应该保存购买令牌吗?
Play In-app Billing v3 - Should I save purchase tokens?
所以我正在编写一个具有特殊应用内货币的 android 应用。您可以通过应用程序内结算以 1、5、10 等包的形式购买这种货币。以下是我的实现方式:
使用托管产品(当应用程序启动时,我使用 IabHelper 查询已购买的产品)
购买完成后立即消费
- 消费完成后,向服务器发送购买令牌
- 服务器通过游戏检查API,然后为账户提供货币
我的问题是,如果第 3 步失败怎么办?如果连接被切断或其他原因,购买令牌将永远不会到达我的服务器。在那种情况下,用户将支付货币,但他们的帐户不会得到它。当我的应用再次启动并运行 1a 时,它不会找到购买的商品,也不会重新使用它。
这个推理正确吗?如果是这样,我是否需要在 android 端存储购买令牌?然后,如果出现问题,我会不断重试直到成功?看起来有点乱……我也在考虑做一个"My purchases page",在那里你可以看到你所有的购买,然后如果第 3 步由于某种原因失败了,点击它们来兑换它。
您应该在后端保留 purchaseToken
。这样做有两个原因:
- 阻止重复购买
- 跟踪已消费的商品
消费购买的场景应如下所示:
- 将购买发送到您的后端
- 保存
purchaseToken
- 增加用户余额(虚拟货币)
- 发回操作成功的信息
从后端收到成功响应后,您应该在 Android 端消费该项目。如果您已经在后端添加了虚拟货币(未消耗该物品),您还应该 return 成功响应,以便在不增加用户余额的情况下消耗该物品。
请记住,重复相同的购买非常容易,即使它已经被消费过,所以purchaseToken
必须 每次都在您的后端进行验证。如果它已经存在于您的数据库中,请不要增加虚拟货币。
所以我正在编写一个具有特殊应用内货币的 android 应用。您可以通过应用程序内结算以 1、5、10 等包的形式购买这种货币。以下是我的实现方式:
使用托管产品(当应用程序启动时,我使用 IabHelper 查询已购买的产品)
购买完成后立即消费
- 消费完成后,向服务器发送购买令牌
- 服务器通过游戏检查API,然后为账户提供货币
我的问题是,如果第 3 步失败怎么办?如果连接被切断或其他原因,购买令牌将永远不会到达我的服务器。在那种情况下,用户将支付货币,但他们的帐户不会得到它。当我的应用再次启动并运行 1a 时,它不会找到购买的商品,也不会重新使用它。
这个推理正确吗?如果是这样,我是否需要在 android 端存储购买令牌?然后,如果出现问题,我会不断重试直到成功?看起来有点乱……我也在考虑做一个"My purchases page",在那里你可以看到你所有的购买,然后如果第 3 步由于某种原因失败了,点击它们来兑换它。
您应该在后端保留 purchaseToken
。这样做有两个原因:
- 阻止重复购买
- 跟踪已消费的商品
消费购买的场景应如下所示:
- 将购买发送到您的后端
- 保存
purchaseToken
- 增加用户余额(虚拟货币)
- 发回操作成功的信息
从后端收到成功响应后,您应该在 Android 端消费该项目。如果您已经在后端添加了虚拟货币(未消耗该物品),您还应该 return 成功响应,以便在不增加用户余额的情况下消耗该物品。
请记住,重复相同的购买非常容易,即使它已经被消费过,所以purchaseToken
必须 每次都在您的后端进行验证。如果它已经存在于您的数据库中,请不要增加虚拟货币。