Google应用内结算:无法查询订阅详情

时间:2016-05-10 16:32:09

标签: android in-app-purchase

Google In-app billing API存在一个非常奇怪的问题。

我想获取可用订阅的详细信息,以在UI上显示其本地化价格。我正在使用IabHelper来查询我指定的SKU的详细信息,但结果不包含任何产品,但在我购买订阅后,它正在运行,即使我取消订阅然后重新安装应用程序。

这是我的代码:

    List<String> additionalSkus = new ArrayList<>();

    for (Subscription subscription : subscriptions) {
        additionalSkus.add(subscription.getSku());
    }

    iabHelper.queryInventoryAsync(true, additionalSkus, new IabHelper.QueryInventoryFinishedListener() {
        @Override
        public void onQueryInventoryFinished(IabResult result, Inventory inv) {
            if (iabHelper == null || result.isFailure()) {
                Log.i("subs", result.getMessage());
            }

            for (Subscription subscription : subscriptions) {
                SkuDetails skuDetails = inv.getSkuDetails(subscription.getSku());

                if (skuDetails != null) {
                    subscription.setLocalizedPrice(skuDetails.getPrice());
                    Log.i("subs", subscription.getLocalizedPrice());
                }

            }
        }
    });

我已准备好关于应用内结算流程的所有内容。我的产品很活跃,我有一个已发布的测试版APK,我甚至可以获取我的托管产品的详细信息,并购买托管产品和订阅,但这不起作用。

1 个答案:

答案 0 :(得分:4)

如果您使用的是最新版本的IabHelper类,则应注意与查询的其他skus相关的函数参数将拆分为moreItemSkusPRODUCT skus)和moreSubsSkusSUBSCRIPTIONS skus)。

public void queryInventoryAsync(final boolean querySkuDetails, final List<String> moreItemSkus,
        final List<String> moreSubsSkus, final QueryInventoryFinishedListener listener)

在您的情况下,您的电话应该是

iabHelper.queryInventoryAsync(true, null, additionalSkus, new IabHelper.QueryInventoryFinishedListener() ...