Payment Recovery 技能面向在 Android 上使用 RevenueCat 处理订阅续费失败的场景。
用途 Google Play 上的续费失败会让订阅进入两种状态:宽限期(Grace Period,用户保留访问权限,Google 继续重试扣款)和账户冻结(Account Hold,访问权限被撤销,直到用户修复支付方式)。使用 RevenueCat 时,这两种状态会自动出现在 CustomerInfo 中,Google 的应用内消息默认也会展示。该技能帮助开发者理解并处理这些状态。
主要能力 续费失败时会发生三件事,技能以表格形式说明:宽限期下访问权限保留,RevenueCat 通过 entitlement.isActive == true 且 billingIssueDetectedAt != null 呈现,用户默认看到 Google 应用内 snackbar;账户冻结下访问权限被撤销,呈现为 entitlement.isActive == false 且 billingIssueDetectedAt != null,用户默认看到 Google 应用内 snackbar;恢复后访问权限保留,billingIssueDetectedAt == null,用户看不到任何提示。
SDK 中有两个关键信号:EntitlementInfo.billingIssueDetectedAt 从 Google 报告账单问题起直到用户解决前均为非空;EntitlementInfo.isActive 表示用户是否仍有访问权限。在后端,每次状态转换会触发一次 BILLING_ISSUE webhook,无需解码 RTDN。
使用方式 在编写应用代码前先规划需求,大多数应用无需额外处理。需要判断的问题包括:是否想要默认的 Google 应用内消息(是则无需操作,SDK 会在 BillingClient 连接时调用 showInAppMessagesIfNeeded);是否想要自己的横幅或对话框(是则从 CustomerInfo 读取 billingIssueDetectedAt 并根据 isActive 分支);是否只想在特定页面展示消息(是则关闭自动调用并自行调用 showInAppMessagesIfNeeded(activity));是否需要服务端标志(例如发送挽回邮件,是则处理 BILLING_ISSUE webhook,无需应用代码)。
执行阶段提供默认方案(保留自动应用内消息,通过 PurchasesConfiguration.Builder 设置 showInAppMessagesAutomatically(true))、手动触发方案(设为 false 后调用 Purchases.sharedInstance.showInAppMessagesIfNeeded(activity))、宽限期自定义 UI(读取 entitlement 并根据 isActive 与 billingIssueDetectedAt 分支,分别展示订阅页、宽限期警告、账户冻结页或高级内容),以及引导用户修复支付(使用 CustomerInfo.managementURL 跳转到 Google Play 订阅页面)。
验证阶段建议测试每次状态转换:使用会拒绝续费的 Google Play 测试卡将订阅推入宽限期,确认 billingIssueDetectedAt 变为非空且 isActive 保持 true;等待账户冻结,确认 isActive 变为 false 而 billingIssueDetectedAt 仍非空;更新支付方式后确认 billingIssueDetectedAt 恢复为 null;在后端确认首次转换时触发 BILLING_ISSUE webhook。
适用场景 适用于在 Android 上使用 RevenueCat 管理订阅、需要处理续费失败、宽限期、账户冻结、自定义账单问题提示或服务端挽回流程的开发者。
限制 该技能针对 Android 与 Google Play 平台,资料未提供其他平台的支持情况;具体收费、价格等信息暂未提供。