用途:在 Google Play Billing Library(PBL)9.x 中实现订阅的升级、降级或计划切换。计划变更会生成新的购买令牌,需选择替换模式来控制新计划生效时机及新旧协议间的金额处理。
主要能力与流程: 一、界定变更范围:先确定方向(升级/降级/平移)、计费周期是否跨期、是否处于免费试用或优惠价、新 SKU 是替换还是叠加。运行时需提供旧购买令牌 oldPurchaseToken 与新产品详情及 offer token;缺失时应先获取,否则会创建新的独立订阅而非计划变更。 二、选择替换模式:UNKNOWN 已弃用。可选 WITH_TIME_PRORATION(标准升级,立即生效、续订前移)、CHARGE_PRORATED_PRICE(升级且保持续订日,立即收取按比例差额)、CHARGE_FULL_PRICE(含预付费计划的切换,立即收全价)、WITHOUT_PRORATION(试用或优惠期内升级,续订时结算、保留试用)、DEFERRED(降级,下次续订时切换)、KEEP_EXISTING(附加项,两计划并存)。注意:CHARGE_PRORATED_PRICE 仅用于升级,用于降级会导致流程失败;涉及预付费计划的切换必须用 CHARGE_FULL_PRICE。Play Console 可设置默认替换模式,但仅在客户端省略模式时生效,应视为安全网而非替代显式设置。 三、接线方式:SubscriptionUpdateParams 已弃用。自 PBL 8.1 起应构建 SubscriptionProductReplacementParams,通过 setOldPurchaseToken 与 setReplacementMode 设置后,附加到新产品详情的 ProductDetailsParams(setSubscriptionReplacementParams),再放入 BillingFlowParams 启动流程。
结果处理:PurchasesUpdatedListener 返回带新令牌的 Purchase,需发送到后端;服务端调用 purchases.subscriptionsv2.get 检查 linkedPurchaseToken,标记旧记录为已替换并写入新订阅。DEFERRED 模式下新令牌立即到达但含两个 line item,需依据活跃项授予权益并按 expiryTime 安排切换。
适用场景:应用内订阅的升降级与切换逻辑实现。
限制:资料未提供安装命令、具体依赖版本、价格或效果数据。