14

我一直在应用计费 v3 中设置 Android,使用IABHelper该类,并遵循Google 提供的示例代码。我在整个购买过程中大部分时间都在工作(带有签名的 apk 和真实的信用卡费用)。

然而,在今天的测试过程中,我开始QueryInventoryFinishedListenerqueryInventoryAsync()方法中得到一个新的错误:

IABResult message: "Error refreshing inventory (querying prices of items)"
IABResult response: 5:Developer Error

奇怪的事情 #1 是在onIabSetupFinished()回调返回之后发生的(使用习惯的“万岁”消息)。奇怪的 #2 是我可以随后成功处理应用内购买(使用该launchPurchaseFlow()方法)。

我在这里找到了一个补丁,可以解决我遇到的相同症状,但它对我不起作用。

我尝试过使用不同的设备,使用不同的 gmail 帐户,并从头开始构建新产品。我什至在正确运行的早期版本的应用程序上遇到错误(什么?!)。

我的问题是:IABHelper为什么在确认设置成功后,我也无法查询产品库存?什么可能导致此错误,我该如何解决?

感谢您的任何见解。

更新

通过放弃我正在测试的帐户并切换到新帐户,我能够让库存查询交易再次工作。没有代码更改。

我的初步结论是我使用的用户帐户中的某些内容已损坏(?)。在测试期间,我曾多次购买不同的应用内产品,这让我很受打击——但我仍然需要找出发生了什么,并确保我的任何用户都不会发生这种情况。

如果您对此有任何经验,请告诉我。谢谢!

4

4 回答 4

20

我们在测试模式下的一个应用程序中遇到了同样的问题。后来,我们发现,我们必须清除 Google Play Store 应用的 Cache。

所以你可以试试这个 -

  1. 转到设备的设置菜单。
  2. 转到应用程序(也可能标记为应用程序管理器)。
  3. 切换到所有应用程序。
  4. 搜索并打开 Google Play 商店应用。点击它,将显示应用程序设置
  5. 点击清除数据和清除缓存。

现在回到您的应用程序并尝试加载库存。它解决了我们的问题。

于 2014-03-08T14:13:07.090 回答
15

我通过反复试验发现,如果您一次查询超过 20 个项目,它将因此错误而失败。

我为 IabHelper.java 提交了一个补丁,它将 SKU 列表拆分为每个包含 20 个项目的数据包并执行查询。

你可以在那里抓住它:https ://code.google.com/p/marketbilling/issues/detail?id=123

于 2013-05-30T10:31:11.523 回答
0

我对这个日志有同样的问题:

"InAppBillingManager.getSkuDetails: Input Error: skusBundle array associated with key ITEM_ID_LIST cannot contain more than 20 items."

此注释已在 IInAppBillingService.aidl 文件中提及,请参阅该方法的文档getSkuDetails(..)

所以你应该每次为每20个项目做同样的过程

于 2015-06-02T09:42:11.323 回答
0

我面临同样的错误,但我的问题是日期时间更改

  • 转到设置并检查您的日期时间是否准确
于 2019-10-07T06:36:13.953 回答