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

问题描述 投票:0回答:5

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

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

我总是得到

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);

该应用程序目前处于草稿阶段。

操作结果码为0。

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

mHelper = new IabHelper(this,Config.getBase64publicKey());

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

我在主线程或异步任务中尝试了

.getSkuDetails()

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

android android-asynctask google-play in-app-purchase in-app-billing
5个回答
9
投票

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

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

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


5
投票

就我个人而言,我错误地设置了 SkuType。例如,当我的应用程序是基于订阅的应用程序时,我使用

params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
而不是
params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);


3
投票

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

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


1
投票

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

来源官方文档


0
投票

应该是以下一些先决条件不满足。阅读这篇文章了解更多信息。

  1. 将应用上传至Closing Test,此阶段无需发布。 (内部测试可能就足够了,但未经验证)。
  2. 创建SKU,注意ID要与申请请求的ID一致。
  3. 添加测试者邮箱,即登录设备测试应用SKU的Google账号。
  4. Switch License 响应LICENSED(路径:游戏控制台首页->设置->许可证测试)。
  5. 上传关闭测试的Application ID需要与本地调试的Application ID一致。
© www.soinside.com 2019 - 2024. All rights reserved.