该技能用于在 Google Play 上调整订阅价格。价格变更涉及三套系统:基础方案价格本身、承载存量订阅用户的旧价格分组,以及迁移这些分组的通知与同意流程,三者需分别处理。
用途与概念:新订阅者在 patch 调用后数小时内看到新基础方案价格;存量订阅者进入旧价格分组,若不迁移则一直按原价付费,每个基础方案最多 250 个分组。优惠定价阶段(免费试用、引导价)无法迁移,只影响新订阅者;处于承诺期的分期订阅者在承诺结束前无法迁移价格。关键判断是新价高于还是低于旧分组价;若为涨价,还需选择 opt in(默认)或 opt out(有条件)。
能力与限制:降价无需选择模式,自动生效并邮件通知,无需用户同意。opt in 涨价需用户同意,否则自动取消;有 7 天冻结期,通知提前 30 天,生效日为发起后 37 天,适用所有地区,无频率与金额上限,首次可选从 API 发起。opt out 涨价无需同意,无冻结期,通知提前 30 或 60 天(按国家),生效日为发起后 30 或 60 天,地区可用性有条件,每基础方案每国家每 365 天滚动窗口仅一次,有分国家涨价金额上限,应用的首次 opt out 必须在 Play Console 发起;若资格检查失败会静默降级为 opt in。
用法:先 patch 基础方案价格,仅改变新购买的标价,对存量订阅者无影响,传播到新购买通常低于 4 小时且无法强制即时。再用 monetization.subscriptions.basePlans.migratePrices 按地区传入 RegionalPriceMigrationConfig 迁移旧分组,可按 oldestAllowedPriceVersionTime 只迁移早于某时间戳的分组;成功调用返回空体并入队迁移。所有价格变更都会触发 SUBSCRIPTION_PRICE_CHANGE_UPDATED RTDN(类型 19),应始终用 purchases.subscriptionsv2.get 重新获取当前状态并检查 line item 的 priceChangeDetails,状态有 OUTSTANDING(opt in 待接受)、CONFIRMED、APPLIED、CANCELED。opt in 涨价中,用户既不接受也不取消会在续订时被自动取消。PBL 9 起可通过 showInAppMessages 的 TRANSACTIONAL 类别在应用内让用户接受涨价,用户在可接受的首日起看到消息,最多每 7 天一次。降价时 Google 在多数地区最多提前 48 小时、印度和巴西最多提前 5 天授权付款,已按旧高价授权的用户当期仍付旧价,降价在下次续订生效。误操作可 patch 回原价后再发起反向迁移。测试应使用 Play Billing Lab 应用和许可测试设备,勿在生产订阅者上测试,应用测试价格变更后至少推迟一小时计费。
适用场景限于 Google Play 订阅类 Android 应用的价格调整与存量用户迁移。