You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter InAppPurchase queryProductDetails始终返回0个订阅商品求助

内购订阅商品无法获取的排查方案

以下是针对你遇到的问题的具体排查步骤:

  • 严格校验商品ID一致性
    确认代码中使用的invest.physical和general.physician与Play Console中创建的订阅商品ID完全一致,包括大小写、标点符号,不能有任何拼写错误或多余空格——Google Play的商品ID是区分大小写的。

  • 确认内部测试版本的发布状态

    • 必须将包含内购逻辑的APK/App Bundle上传至Play Console的内部测试轨道,并完成发布流程(状态显示为“已发布”,而非草稿或待审核)。
    • 测试设备必须通过Play Console提供的内部测试Opt-in链接安装应用,不能直接运行本地debug包——未经过Play签名的本地包无法与Google Play Billing服务交互获取真实商品信息。
  • 验证许可证测试员配置

    • 确保你的测试邮箱已添加至Play Console的许可证测试员列表,且你已通过邮件邀请完成Opt-in操作(必须接受邀请)。
    • 测试设备必须登录该测试邮箱对应的Google账号,不能使用其他非测试账号。
  • 明确指定商品类型
    你创建的是订阅商品,部分插件版本需要明确指定商品类型才能正确获取,可修改代码如下:

    final ProductDetailsParams params = ProductDetailsParams(
      productIds: {"invest.physical", "general.physician"},
      productType: ProductType.subscription,
    );
    ProductDetailsResponse result = await InAppPurchase.instance.queryProductDetails(params);
    
  • 检查BillingClient与插件兼容性
    你在清单中配置的com.google.android.play.billingclient.version为5.0.0,而in_app_purchase: ^3.0.8可能存在版本兼容问题。建议升级in_app_purchase到最新稳定版,或确认插件官方文档中推荐的BillingClient版本,保持两者版本匹配。

  • 验证应用签名一致性
    若使用了Google Play应用签名,需确保测试设备上安装的应用签名与Play Console中配置的签名一致:可通过Play Console下载签名后的测试包,或使用上传密钥签名本地测试包后再安装测试。

  • 检查商品地区限制
    确认Play Console中的订阅商品未设置地区限制,或你的测试设备所在地区在商品的可用地区范围内。

内容的提问来源于stack exchange,提问作者Siddharth Mehra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:01:26