用途:该技能用于在 Google Play 上处理订阅的终止与暂停流程,包括用户取消、开发者取消、支付失败后的系统取消、暂停/恢复、到期前恢复、到期后重新订阅、账单延期和立即撤销,并据此设计挽留优惠。
主要能力:
- 按取消类型给出的访问、退款、RTDN 信号与恢复策略对照表;区分用户取消(USER_CANCELED)、开发者取消(DEVELOPER_CANCELED)、系统取消(SYSTEM_CANCELED)、替换(REPLACED)与撤销(SUBSCRIPTION_REVOKED)。
- 暂停与取消的区分:SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED 表示已排期但仍全量访问;SUBSCRIPTION_PAUSED 需立即撤销访问;SUBSCRIPTION_RECOVERED 恢复访问;SUBSCRIPTION_RESTARTED 表示到期前恢复且令牌不变。
- 分期订阅注意:承诺期内取消会被阻止或排期,信号为 SUBSCRIPTION_CANCELLATION_SCHEDULED,不应撤销访问,最终 SUBSCRIPTION_CANCELED 稍后到达。
- 核心规则:带未来到期时间的已取消订阅对用户仍是有效订阅;例外是撤销(立即)与 SUBSCRIPTION_PAUSED(立即)。
- 通过 canceledStateContext.cancellationReason 与取消调查结果对流失做分层,指导后续挽留决策。
- 开发者取消调用 purchases.subscriptionsv2.cancel,原因选 USER_REQUESTED_STOP_RENEWAL 或 DEVELOPER_REQUESTED_STOP_PAYMENTS,二者均保留访问至到期时间。
- Play Billing 8.1+ 可通过 QueryPurchasesParams 设置 includeSuspendedSubscriptions(true) 展示暂停订阅(purchaseState 仍为 PURCHASED,不应授予访问)。
- 恢复前取消:令牌不变;重新订阅可通过 expiredExternalAccountIdentifiers 关联原账号,前提是原购买已用 BillingFlowParams.Builder.setExternalAccountId(userId) 设置。
- 延期:DeferRequest 新到期时间至少比当前多 1 天、最多 1 年且必须在未来,可多次应用,不适用于已取消订阅。
- 撤销(purchases.subscriptionsv2.revoke):适用于确认欺诈、严重违反服务条款或主动应对拒付,Google 自动按比例退款并发送 SUBSCRIPTION_REVOKED。
使用方式:先按 Phase 1 判定场景,再用取消类型矩阵规划权益逻辑,最后按对应 API 或 RTDN 处理器实现。挽留资格:价格相关调查回答的 USER_CANCELED 适合折扣;SYSTEM_CANCELED 提示更新支付方式;欺诈或条款原因的 DEVELOPER_CANCELED 与 REPLACED 排除;暂停用户不属挽留对象,应提示恢复。
限制:资料仅给出上述范围,未提供具体收费、价格或平台差异信息。
适用场景:Google Play 订阅的取消、暂停、恢复、重新订阅、延期与撤销后端或客户端实现。