IabHelper queryInventory() 返回产品的基本价格

Posted

技术标签:

【中文标题】IabHelper queryInventory() 返回产品的基本价格【英文标题】:IabHelper queryInventory() returns basic prices for products 【发布时间】:2017-06-17 22:25:05 【问题描述】:

就我而言,我在 PlayStore 上有应用内产品,并为不同的国家/地区设置了不同的价格。接下来,每当我使用IabHelper.queryInventory() 获取产品时,产品的价格都是基本价格,而不是针对特定国家/地区的价格。

基本价格为 12.99 欧元,我所在国家/地区的价格为 9.99 欧元。 IabHelper.queryInventory() 返回价格为 12.99 欧元的响应。但是当我购买并看到 PlayStore 的对话框时,它显示实际价格是 9.99 欧元。

这是 IabHelper 的问题还是我做错了什么?

【问题讨论】:

【参考方案1】:

设置应用内结算不同的价格似乎只在某些国家/地区可用:https://support.google.com/googleplay/android-developer/answer/1169947?hl=en

如果您所在的位置支持merchant registration,您 可以通过 Google Play 提供多种货币的应用程序 开发者控制台。

您可以查询 Google Play 以编程方式检索与您的应用相关的应用内商品的详细信息

设置queryInventoryAsync

  mHelper.queryInventoryAsync(true, additionalSkuList, mQueryFinishedListener);

从结果集中检索商品价格

 IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() 
 public void onQueryInventoryFinished(IabResult result, Inventory inventory) 
     if (result.isFailure()) 
        // handle error
        return;
      

     String firstItemPrice= inventory.getSkuDetails(YOUR_SKU_ONE).getPrice();
     String NthItemPrice = inventory.getSkuDetails(YOUR_SKU_N).getPrice();

   // update the UI
  

查看此参考以获取更多详细信息。 https://developer.android.com/training/in-app-billing/list-iab-products.html#QueryDetails

getSkuDetails() 方法。

此方法返回产品 ID 列表的产品详细信息。在 Google Play 发送的响应 Bundle 中,查询结果存储在映射到 DETAILS_LIST 键的 String ArrayList 中。详细信息列表中的每个字符串都包含 JSON 格式的单个产品的产品详细信息。更多详情请查看this API reference

【讨论】:

是的,这就是我正在尝试的。 queryInventoryAsync 返回产品的基本价格。在这种情况下,国家和地区无关紧要,除非用户开始使用 PlayStore 购买。 getSkuDetails() 总是返回相同的价格。

以上是关于IabHelper queryInventory() 返回产品的基本价格的主要内容,如果未能解决你的问题,请参考以下文章

使用IabHelper时无法绑定InAppBillingService

计费 API v3 IabHelper NullPointerException

Android IABv3 getSkuDetails 不返回 Sku 详​​细信息

Android 应用内计费:无法启动异步操作,因为另一个异步操作(正在进行中)

具有多个帐户的应用内购买

Android IAB:“刷新库存时出错(查询商品价格)”开发人员错误