应用内结算v3:未找到SKU

时间:2014-11-22 20:55:47

标签: android google-play in-app-billing

我在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开发人员支持,但与此同时,我希望我可以在我的最后解决此问题。

1 个答案:

答案 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);
  1. 确保您是否正确添加了公钥。
  2. 您是否使用签名的APK。
  3. 您正在测试的APK版本应该是上传到商店的版本。
  4. 上传后,需要3-5小时才能在Google服务器上进行更新。可能是您可以在上传几个小时后尝试。
  5. 您可以按照Android Docs中的分步流程执行第3版结算。