Android:应用内:检查是不是已购买商品

Posted

技术标签:

【中文标题】Android:应用内:检查是不是已购买商品【英文标题】:Android: in-app: check if an item has been purchasedAndroid:应用内:检查是否已购买商品 【发布时间】:2012-08-27 17:15:50 【问题描述】:

我按照本教程在我的应用程序中实现应用内: http://blog.blundell-apps.com/simple-inapp-billing-payment/

用户现在可以通过应用内系统购买我的商品 (com.myitem)。之后,我在 Shared Preference 中设置用户已购买该商品。

问题是如果用户卸载并重新安装应用程序。 那么问题来了:如何检查用户是否已经购买了该商品?

我知道我应该在 RESTORE_TRANSACTION 上使用恢复 BillingHelper.restoreTransactionInformation(...)...但是在哪里以及如何使用?

我检查了地牢示例,但似乎很难理解。有简单的方法吗?

谢谢

【问题讨论】:

见this 答案。它为应用内购买提供了一个库。 我也试过了,没办法恢复我的交易。 呃,上面写着restoreTransactions() 【参考方案1】:

如果您使用托管购买,则使用 RESTORE_TRANSACTION 是唯一的方法。如果您使用未管理的购买,您可以将购买状态存储在您自己的服务器上,但这并不简单。 RESTORE_TRANSACTIONS 并不复杂:您只需触发命令,您就会收到交易信息的通知,该交易信息的格式与您首次购买商品时所获得的格式完全相同。您应该以完全相同的方式处理它,并且很可能您的应用程序中已经有了相应的代码。对此进行测试有些困难,因为它实际上不适用于测试帐户,并且您需要一个实时应用程序。再次查看官方文档以了解其工作原理。

【讨论】:

不幸的是,我更难理解如何使用 RESTORE_TRANSACTION:它是 sendBillingRequest developer.android.com/guide/google/play/billing/… 的参数吗? 您需要再次阅读本指南以了解大局。实施方面,如果您使用的是示例项目或克隆项目,您只需致电BillingService.restoreTransactions()。只要确保您不经常调用它,否则该帐户将被暂时阻止。见这里:code.google.com/p/marketbilling/source/browse/src/com/example/…

以上是关于Android:应用内:检查是不是已购买商品的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用内结算:退款的应用内购买未取消

Honouring应用内购买离线+删除已取消的购买

Android - 检查用户是否从其他软件包购买了InApp产品[重复]

从应用内购买中移除商品 [已清除出售 = 否] 仍会出现在应用中

Android In-App Purchase 离线检查买家

应用内购买后,viewWillAppear 会多次加载购买的商品