Google Play Billing 5.1版queryProductDetailsAsync返回空列表求助
Google Play Billing 5.1 查询商品列表为空的排查方案
以下是针对你遇到的queryProductDetailsAsync返回空List<ProductDetails>问题的常见排查点:
商品后台配置校验
- 确认Google Play控制台中商品的Product ID和代码中
"test_billing"完全一致,注意大小写、特殊字符的匹配 - 检查商品类型:代码中设置的是
BillingClient.ProductType.INAPP(一次性商品),控制台中该商品需对应设置为“应用内商品”,而非“订阅” - 确保商品已发布:处于草稿或未发布状态的商品无法被查询到,需在控制台中完成发布流程(即使是测试环境也需发布)
- 确认Google Play控制台中商品的Product ID和代码中
测试环境配置问题
- 确认测试设备使用的Google账号已添加到Google Play控制台的许可测试列表中(路径:应用 -> 测试 -> 许可测试)
- 测试用的APK需与控制台中配置的签名一致:如果是debug测试,需将debug签名的SHA-1添加到控制台的应用签名配置中;如果是release包,需使用控制台中对应的签名密钥
BillingClient状态检查
- 确保调用
queryProductDetailsAsync前,BillingClient已处于READY状态,可通过BillingClientStateListener的onBillingSetupFinished回调确认连接成功后再执行查询
- 确保调用
错误信息排查
- 完善代码中的else分支,打印
billingResult的具体错误码和描述,比如:
常见错误码如} else { Log.e("BillingError", "Response code: " + billingResult.getResponseCode() + ", message: " + billingResult.getDebugMessage()); }ITEM_NOT_FOUND(商品不存在或配置错误)、SERVICE_DISCONNECTED(服务未连接)等,能直接定位问题
- 完善代码中的else分支,打印
缓存清除
- 清除Google Play商店应用的缓存和数据,然后重启设备和APP,避免旧缓存导致的查询异常
代码细节校验
- 确认
ImmutableList的导入正确,且productList已正确构建并传入QueryProductDetailsParams - 检查是否在主线程调用
queryProductDetailsAsync(该方法需在主线程执行)
- 确认
内容的提问来源于stack exchange,提问作者Mohammad javad
相关产品推荐
相关产品推荐

