我希望我的应用可以恢复以前制作或使用其他设备(但使用同一帐户)的应用内购买。因此,如果getPurchases()不是最新的,那么最迟当用户再次尝试购买时,该项目应该会在应用程序中自动再次可用。
有两种情况可以返回BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED
:
直接来自getBuyIntent()。当本地Play商店(缓存)已经知道该商品已经购买时,会发生这种情况。在这种情况下,getPurchases()也会报告已购买的商品。
在handleActivityResult()中。当使用第二个设备进行购买且第一个设备仍然不知道时,会发生这种情况。在这种情况下,会联系Google Play服务器,服务器会报告该项目已经购买。
(2.)的问题是没有返回purchseData且没有dataSignature,因此无法验证信息。
我有两种可能性:
我对这两种可能性都不满意。有好办法吗?
答案 0 :(得分:1)
我建议重新申请所有状态的产品并验证它们。这是我在收到ALREADY_OWNED
回复后在我的应用中执行的操作。
作为一个想法,您甚至可以接受ALREADY_OWNED
响应(无需验证)并为用户启用扩展功能。如果这是欺诈响应,您仍然可以在新的应用程序启动时再次验证它。如果您检测到该项目不属于您,则将禁用扩展功能。