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

Google Billing Client连接失败及订阅配置关联疑问

Google Play订阅集成问题解答

1. 最初客户端连接失败的原因

  • BillingClient的startConnection()是异步操作,不会立刻完成连接。你在按钮点击事件里用while循环重试连接,相当于第一次连接请求还在处理时,又反复发起新的连接请求,而BillingClient不允许同时存在多个连接流程,因此触发了"Client is already in the process of connecting to billing service"错误。
  • 另外,每次点击按钮都重新创建BillingClient实例并发起连接,会导致多个实例同时尝试连接服务,进一步加剧冲突。

2. 客户端获取订阅详情的方法

不需要手动在代码里关联Google Play Console的订阅配置,只要你在Console里创建订阅时设置了唯一的SKU,直接通过SKU查询即可,步骤如下:

  • 步骤1:准备订阅SKU列表
    把你在Google Play Console创建订阅时设置的SKU(比如monthly_sub、yearly_sub)整理成列表。
  • 步骤2:连接成功后发起查询
    在BillingClient的onBillingSetupFinished回调(连接成功的回调)里,调用querySkuDetailsAsync方法:
    // Kotlin示例
    val skuList = listOf("monthly_sub", "yearly_sub")
    val params = SkuDetailsParams.newBuilder()
        .setSkusList(skuList)
        .setType(BillingClient.SkuType.SUBS)
        .build()
    
    billingClient.querySkuDetailsAsync(params) { responseCode, skuDetailsList ->
        if (responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
            // 处理订阅详情,比如显示价格、名称
            for (skuDetails in skuDetailsList) {
                val price = skuDetails.price
                val title = skuDetails.title
                // 更新UI展示订阅信息
            }
        }
    }
    
  • 步骤3:处理查询结果
    在回调里判断返回码是否为OK,如果是,skuDetailsList里就包含了对应SKU的订阅详情,包括价格、订阅周期、描述等信息,你可以直接拿这些数据更新UI。

注意事项

  • 确保App的包名、签名和Google Play Console里配置的完全一致,否则会查询不到订阅。
  • 测试时需要使用Google Play Console添加的测试账号,或者启用应用内测试,才能看到测试订阅的信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:47:10