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

Flutter中RevenueCat的UpgradeInfo在Android端订阅升级失效问题

问题排查与解决步骤

1. 订阅配置检查

  • 需切换的月付、年付两个订阅SKU,必须在Google Play Console中归属于同一个订阅组。不同订阅组的产品无法直接通过UpgradeInfo进行升降级操作,会触发Play Store底层报错。

2. 代码参数错误修正

  • 你当前的代码逻辑存在参数传反的问题:UpgradeInfo的第一个入参要求传入的是用户当前已生效的旧订阅SKU,而不是目标切换的SKU。你现有逻辑里当前是月卡时传入年卡SKU作为oldSku,完全不符合参数要求,会导致Play Billing识别旧订阅失败,触发报错。正确的代码写法参考:
// 先获取当前用户已激活的订阅SKU,作为oldSku参数传入
String currentActiveSKU = subscriptionTypeString == monthlySubscriptionString 
                          ? monthlySubscriptionSKU 
                          : yearlySubscriptionSKU;

await Purchases.purchasePackage(
  myProductList[index], // 此处为要切换到的目标套餐对应的package对象
  upgradeInfo: UpgradeInfo(
    currentActiveSKU, 
    prorationMode: ProrationMode.immediateWithTimeProration,
  ),
);

3. 测试环境校验

  • 检查Android模拟器中内置的Play Store版本,需升级到最新版,旧版本Play Billing服务对订阅切换的兼容性很差,容易返回SERVICE_UNAVAILABLE错误。
  • 确认你的测试账号已经添加到Google Play Console的「许可测试」列表中,且当前模拟器登录的就是该测试账号。
  • 确认测试时网络可以正常连接Google Play服务,无代理、网络拦截类工具干扰。
  • 不要在订阅刚购买成功后立刻进行切换操作,建议间隔2-3分钟等Play侧订阅状态同步完成后再测试。
  • 若以上调整后问题仍然存在,建议使用搭载完整Google服务框架的真机测试,部分模拟器的Play服务组件存在功能阉割,无法正常支持订阅切换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:05