我正在我的应用程序中构建“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()
。
有人可以帮助我或建议其他检查事项吗?
不再支持草稿应用测试来测试应用内购买。因此你会得到一个空的回应。
https://developer.android.com/google/play/billing/billing_testing.html#draft_apps
就我个人而言,我错误地设置了 SkuType。例如,当我的应用程序是基于订阅的应用程序时,我使用
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
而不是 params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);
。
我在使用 BillingCient 4.0 时也遇到了同样的问题。我的问题是我正在测试的开发版本使用了与生产版本不同的包名称。
使用正确的包名称解决了问题 - 您可以在开发版本中从计费客户端获取非零 sku 详细信息。
以前,您可以通过上传未发布的“草稿”版本来测试应用程序。不再支持此功能。但是,您甚至可以在将应用程序上传到 Google Play 商店之前使用静态响应来测试您的应用程序。有关更多信息,请参阅使用静态响应进行测试。
来源官方文档
应该是以下一些先决条件不满足。阅读这篇文章了解更多信息。