我在Android应用程序上设置了应用内结算,以设置多个订阅。我使用的是应用内结算版本3,通过/ extras / google / play_billing / samples / TrivialDrive提供的com.example.android.trivialdrivesample.util项目提供了实用程序类。
使用以下权限设置应用:
com.android.vending.CHECK_LICENSE
com.android.vending.BILLING
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.INTERNET
我已经为应用程序创建了产品,并在google play开发者控制台中激活了它们。他们现在已经活跃了一个多星期。
应用程序以生产版本发布,最新的apk上传到开发人员控制台。在相同的时间内也是如此。
使用IABHelper类,我没有收到任何异常,但是当我查找sku详细信息时,它找不到它。
我发现当我打开IABHelper类的调试日志时,我得到以下日志:
Starting in-app billing setup.
Billing service connected.
Checking for in-app billing 3 support.
In-app billing version 3 supported for com.testbank.app.act_full
Subscriptions AVAILABLE.
In-app Billing is set up OK
Setup successful. (response: 0:OK)
Starting async operation: refresh inventory
Querying owned items, item type: inapp
Package name: com.testbank.app.act_full
Calling getPurchases with continuation token: null
Owned items response: 0
Continuation token: null
Querying SKU details.
queryPrices: nothing to do because there are no SKUs.
这似乎表明inapp计费已正确设置,但正在为该应用程序找到任何产品。
另外,我添加了自己的日志来输出正在检索的skudetails的总数,并发现它没有。
我已确认包名称,公钥和skus都与Google Play开发者控制台中的各自值相匹配。
我已将此问题提交给Google Play开发人员支持,但与此同时,我希望我可以在我的最后解决此问题。
答案 0 :(得分:0)
您需要在查询库存时发送SKU列表,如下所示。
ArrayList<String> skuList = new ArrayList<String> ();
skuList.add("premiumUpgrade");
skuList.add("gas");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList);
添加列表后点击google play商店以检索有关产品的详细信息。
Bundle skuDetails = mService.getSkuDetails(3,
getPackageName(), "inapp", querySkus);
您可以按照Android Docs中的分步流程执行第3版结算。