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

如何在Flutter中用Superwall Paywall实现订阅计划升降级?

Flutter + Superwall Paywall 订阅升降级实现指南

核心结论

Superwall内置支持订阅升降级处理,但需正确配置后台规则与前端逻辑,你遇到的谷歌Play商店多活跃订阅问题,是因为未设置正确的订阅替换策略。

具体实现步骤

1. Superwall控制台配置订阅关联规则

  • 登录Superwall后台,找到「Products」页面,为基础/标准/高级三个订阅层级配置升降级规则:
    • 升级路径(如基础→标准、标准→高级):设置为立即生效+按比例退款,根据用户剩余订阅时长折算费用
    • 降级路径(如高级→标准、标准→基础):设置为下个计费周期生效,符合Play Store默认规则,避免用户体验冲突
  • 为每个产品勾选「Replace Existing Subscription」选项,确保Superwall调用Play Store的订阅替换接口,而非创建新订阅。

2. Flutter端代码适配

  • 传递当前订阅状态给Paywall:在展示付费墙前,获取用户当前订阅信息并传递给Superwall,让付费墙只显示可切换的选项:
    // 获取当前订阅状态
    final currentSubscription = await Superwall.shared.subscriptionStatus;
    // 注册用户时同步订阅状态
    await Superwall.shared.register(
      userId: "你的用户唯一标识",
      subscriptionStatus: currentSubscription,
    );
    
  • 监听订阅状态变更:处理升降级后的状态更新,同步UI展示:
    Superwall.shared.purchaseController.didChangeSubscriptionStatus.listen((status) {
      // 更新本地用户订阅数据,刷新应用内UI
      _updateUserSubscriptionStatus(status);
    });
    

3. 修复多活跃订阅问题

你之前出现多订阅的核心原因是未开启订阅替换配置:

  • 进入Superwall后台对应产品的「Upgrade/Downgrade Rules」设置页
  • 为每个升降级路径绑定目标产品,并确认「Replace Existing Subscription」已勾选
  • 配置完成后,Superwall会自动调用Play Store的replaceSubscription API,替换原有订阅而非新增。

4. 手动扩展处理(可选)

若需更灵活的逻辑,可拦截Paywall购买请求,自行调用Play Billing API处理升降级:

// 拦截购买请求,自定义处理逻辑
Superwall.shared.purchaseController.shouldPurchaseProduct.listen((product) async {
  // 获取当前订阅的token
  final currentSubToken = _getCurrentSubscriptionToken();
  // 调用Play Billing接口完成订阅替换
  final billingResult = await BillingClient.instance.updateSubscription(
    oldPurchaseToken: currentSubToken,
    newProductId: product.id,
    // 升级用立即生效模式,降级用延迟生效模式
    prorationMode: ProrationMode.immediateWithTimeProration,
  );
  // 通知Superwall处理结果
  if (billingResult.responseCode == BillingResponse.ok) {
    Superwall.shared.purchaseController.setPurchaseSuccess(product);
  } else {
    Superwall.shared.purchaseController.setPurchaseFailure(
      product,
      error: billingResult.debugMessage,
    );
  }
  return false; // 阻止Superwall默认处理流程
});

关键注意事项

  • 确保谷歌Play控制台中,已为订阅产品配置正确的订阅层级关系(在商品详情的「订阅设置」中设置)
  • 测试升降级必须使用Play Console添加的许可测试用户,避免产生真实扣费
  • 降级操作受Play Store规则限制,无法设置为立即生效,只能在下个计费周期切换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:17:16