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,我甚至可以获取我的托管产品的详细信息,并购买托管产品和订阅,但这不起作用。
答案 0 :(得分:4)
如果您使用的是最新版本的IabHelper
类,则应注意与查询的其他skus相关的函数参数将拆分为moreItemSkus
(PRODUCT
skus)和moreSubsSkus
(SUBSCRIPTIONS
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() ...