getSkuDetails()返回0项返回空数组DETAILS_LIST

时间:2017-10-23 11:03:58

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

我正在构建" inapp"我的申请中的结算系统。 我执行后

skuDetails = mService.getSkuDetails(3, "my_app_package_name", "inapp", bundle);
ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST");

我总是让responseList.size()等于0,即使我在&#34;应用内商品中设置了2个商品&#34;在开发者控制台中,我将它们传递给:

ArrayList<String> skuList = new ArrayList<String> ();
skuList.add("first_id");
skuList.add("second_id");
Bundle bundle = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", bundle);

该应用目前处于草稿状态。

操作结果代码为0。

我仔细检查了传递给:

的base64密钥
mHelper = new IabHelper(this,Config.getBase64publicKey());

我从服务和API菜单中获得。

我在主线程或asynctask中尝试了.getSkuDetails()

有人可以帮助我或建议其他事情要检查吗?

4 个答案:

答案 0 :(得分:1)

草稿应用测试不再支持测试应用内购买。因此,你得到一个空洞的回应。

  1. 您需要将它们移至alpha或beta频道 或
  2. 添加静态响应。
  3. https://developer.android.com/google/play/billing/billing_testing.html#draft_apps

答案 1 :(得分:0)

以前,您可以通过上传未发布的“草稿”版本来测试应用。不再支持此功能。但是,您甚至可以在将应用程序上载到Google Play商店之前对其进行静态响应测试。有关更多信息,请参阅使用静态响应进行测试。

来源official documentation

答案 2 :(得分:0)

我在使用 BillingCient 4.0 时遇到了同样的问题。我的问题是我测试的开发版本使用了与生产版本不同的包名。

使用正确的包名称解决了该问题 - 您可以在开发版本中从计费客户端获取非零 sku 详细信息。

答案 3 :(得分:0)

就我个人而言,我错误地设置了 SkuType。例如,当我的应用是基于订阅的应用时,我使用了 params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP); 而不是 params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);