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

Google Play应用内消息未显示订阅支付失败提示问题

问题排查与修复方案

1. 核心问题:BillingClient未就绪时调用了showInAppMessages

你的代码在onCreate中先执行setupInAppMessaging(内部调用showInAppMessages),之后才启动BillingClient连接。但showInAppMessages要求BillingClient处于READY状态才能生效,未连接时调用会直接返回NO_ACTION_NEEDED,不会触发任何消息。

修复代码:

将消息展示逻辑移到BillingClient连接成功的回调中:

// onCreate中仅初始化并启动连接
billingClient = createBillingClient()
if (!billingClient.isReady) {
    logD { "BillingClient: Start connection..." }
    billingClient.startConnection(object : BillingClientStateListener {
        override fun onBillingSetupFinished(result: BillingResult) {
            if (result.responseCode == BillingClient.BillingResponseCode.OK) {
                // 连接成功后再调用消息展示逻辑
                setupInAppMessaging(activity)
            }
        }

        override fun onBillingServiceDisconnected() {
            // 处理断开重连逻辑
        }
    })
}

2. 测试流程未触发消息触发条件

Google Play的Transactional消息仅在订阅进入**暂停(Suspended)**状态时才会触发,宽限期内用户仍能正常使用订阅,不会触发支付失败提示。

正确测试步骤:

  • 使用"Test card, always approves"完成订阅
  • 切换到"Test card, always declines"
  • 等待订阅度过宽限期,进入Suspended状态(可在Google Play控制台的订阅管理中查看状态,通常需1-2小时)
  • 重启应用,此时才会触发支付失败的Snackbar提示

3. 检查Billing Library版本

In-App Messaging功能要求使用Billing Library 5.0或更高版本,版本过低会导致该功能失效。

确认依赖:

在build.gradle中检查并更新Billing库版本:

dependencies {
    implementation 'com.android.billingclient:billing:5.0.0+' // 建议使用最新稳定版
}

4. 确认应用内消息配置

已指定TRANSACTIONAL分类的前提下,需确保Google Play控制台中未禁用该类型消息。注意:Firebase应用内消息与Google Play Billing的消息是独立功能,前者正常不影响后者。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:45:35