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

Rom*_*meo 6 android in-app-purchase android-asynctask in-app-billing google-play

我正在我的应用程序中构建“inapp”计费系统。在我执行之后

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

我总是responseList.size()等于 0,即使我在开发者控制台的“应用内产品”中设置了 2 个项目,并且我将它们传递给:

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

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

运算结果码为0。

我仔细检查了传递给的 base64 密钥:

mHelper = new IabHelper(this,Config.getBase64publicKey());
Run Code Online (Sandbox Code Playgroud)

我从服务和 API 菜单中得到的。

.getSkuDetails()在主线程或异步任务中都尝试过。

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

Amo*_*ale 7

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

  1. 您需要将它们移动到 alpha 或 beta 通道或
  2. 添加静态响应。

https://developer.android.com/google/play/billing/billing_testing.html#draft_apps

  • 它有效,谢谢,我不得不等待 10 个小时左右才能使更改生效。无论如何,我没有在文档中找到我必须切换到 alpha 来进行测试... (3认同)

mec*_*don 5

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