在应用结算中:验证“已经拥有”结果

时间:2014-05-16 13:19:18

标签: android in-app-purchase google-play in-app-billing

我希望我的应用可以恢复以前制作或使用其他设备(但使用同一帐户)的应用内购买。因此,如果getPurchases()不是最新的,那么最迟当用户再次尝试购买时,该项目应该会在应用程序中自动再次可用。

有两种情况可以返回BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED

  1. 直接来自getBuyIntent()。当本地Play商店(缓存)已经知道该商品已经购买时,会发生这种情况。在这种情况下,getPurchases()也会报告已购买的商品。

  2. 在handleActivityResult()中。当使用第二个设备进行购买且第一个设备仍然不知道时,会发生这种情况。在这种情况下,会联系Google Play服务器,服务器会报告该项目已经购买。

  3. (2.)的问题是没有返回purchseData且没有dataSignature,因此无法验证信息。

    我有两种可能性:

    • 接受我无法验证该项目所拥有的信息。
    • 告诉用户他/她必须重启设备,以便本地Play商店刷新缓存的数据。

    我对这两种可能性都不满意。有好办法吗?

1 个答案:

答案 0 :(得分:1)

我建议重新申请所有状态的产品并验证它们。这是我在收到ALREADY_OWNED回复后在我的应用中执行的操作。

作为一个想法,您甚至可以接受ALREADY_OWNED响应(无需验证)并为用户启用扩展功能。如果这是欺诈响应,您仍然可以在新的应用程序启动时再次验证它。如果您检测到该项目不属于您,则将禁用扩展功能。