【问题标题】:IAB Error You already owned this itemIAB 错误 您已拥有此项目
【发布时间】:2013-05-11 09:03:23
【问题描述】:

我现在正在使用 Google 的应用内结算服务开发一个小游戏。

我参考了 Google 示例项目的 Trivial Drive。 让我询问您有关从 Google Play 购买商品期间连接中断的问题。

通过正常的互联网连接启动购买流程是可以的。

我是这样测试的。 启动购买流程后,立即断开互联网连接(通过拔下路由器的 LAN)。 大约 2-3 分钟后,它显示连接超时。 在商家帐户中,汇款已完成。 但是当我查询所有拥有的物品时,没有这个ID的拥有物品(最近购买的)。 当我再次尝试购买此商品时,它显示“错误您已拥有此商品”。

我该如何解决这个问题? 有人遇到过这样的问题吗?

请帮忙。感谢所有 cmets 和帮助。谢谢。

【问题讨论】:

  • 我认为 Google 商家和 Play 帐户在 Google 方面不会完全不同步;如果是这样的话,它就会广为人知。但是,确实发生的是GP IAB V3 Service uses local caching,因此您的应用程序需要在这方面稳健。 -- 不幸的是,你所描述的本身并不是问题,所以除非你描述你在这方面遇到的具体问题,否则唯一可能的建议是让你的应用在这方面变得健壮。
  • 抱歉我的提问方式不当。感谢您的建议。
  • 我遇到了同样的问题。我遇到了导致超时错误的 wifi 连接问题,现在出现“您已经拥有此项目”错误。这现在导致应用程序在启动时崩溃。我在哪里可以从我的 Google 帐户中清除令牌(哈哈)? (这似乎应该在某个地方有一个仪表板,因为根据 StackOverflow 0.o 它经常发生)

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


【解决方案1】:

Google IAP 流程要求您在购买后调用consumePurchase() API。

您需要做的是调用getPurchases() API,这将返回购买列表以及purchaseToken。然后,您需要遍历它们并为已购买的、未使用的产品调用 consumePurchase() API。

如需更多参考,请查看 API reference

【讨论】:

  • 感谢您的回答,Vinay S Shenoy。我没有表示不支持消费项目。它们只是仅供玩的游戏包。当我调用这个方法时 skuList.addAll(inv.getAllOwnedSkus(itemType));它总是返回我拥有的产品 ID。但在上述情况下,它不包含最近购买的 ID。我想知道为什么 Google 不将已购买的 ID(资金已转移)返回到拥有的项目列表中。
  • Hmm.. 我使用 IAP API 的次数不多.. 如果您调用 getPurchases(),它会在 API 中返回吗?
  • 为澄清起见:Google IAB“要求”您在购买后致电consumePurchase() 根本不正确。首先,某些项目不会被消费,其次,尽管谷歌提供了描述,但何时应该发出消费信号的问题取决于具体情况。
  • @ClassStacker,没错,但在这种情况下,似乎购买的都是消耗品。
  • 我终于知道为什么我无法在 inv.getAllOwnedSkus() 中获取购买的 ID。它从 Google Play 应用程序的本地缓存中获取 ownSkus。我需要清除这些缓存以获取更新的ownedIDList。但我不知道如何从 google Play 获取更新数据。它可能是 queryInventoryAsync()。但不确定.....感谢您的所有帮助...
猜你喜欢
  • 1970-01-01
  • 2021-09-16
  • 2021-02-17
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 2012-04-28
相关资源
最近更新 更多