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

使用purchases_flutter和RevenueCat,支付后如何立即执行函数?

使用purchases_flutter实现支付完成后立即执行函数

方式一:直接在购买回调中执行

调用purchasePackage方法后,在成功返回的回调里直接触发你的业务函数:

try {
  // 发起购买请求
  final purchaserInfo = await Purchases.purchasePackage(selectedPackage);
  // 支付完成后立即执行目标函数
  _handlePostPaymentSuccess();
} catch (e) {
  // 处理购买失败逻辑,比如弹窗提示用户
}

当purchasePackage成功返回PurchaserInfo对象时,说明支付已经完成,此时可以安全执行后续操作。

方式二:全局监听订阅状态更新

如果需要覆盖所有订阅状态变更场景(包括支付完成、恢复购买、订阅自动续费等),可以设置全局监听器:

@override
void initState() {
  super.initState();
  _setupPurchaseListener();
}

void _setupPurchaseListener() {
  Purchases.addPurchaserInfoUpdateListener((purchaserInfo) {
    // 检查是否有活跃订阅,可结合状态判断避免重复执行
    if (purchaserInfo.activeSubscriptions.isNotEmpty) {
      _handlePostPaymentSuccess();
    }
  });
}

注意:监听器会在每次PurchaserInfo更新时触发,建议通过记录上次订阅状态(比如保存本地)来避免重复执行函数。

方式三:处理恢复购买场景

如果用户恢复已购买的订阅,同样可以在恢复成功后执行函数:

try {
  final purchaserInfo = await Purchases.restorePurchases();
  if (purchaserInfo.activeSubscriptions.isNotEmpty) {
    _handlePostPaymentSuccess();
  }
} catch (e) {
  // 处理恢复失败逻辑
}

额外注意事项

  • 确保目标函数是异步安全的,避免阻塞UI线程,耗时操作建议放在compute或单独的隔离区执行
  • 可以通过purchaserInfo.latestPurchaseDate字段判断是否为最新完成的支付,进一步精准控制函数触发时机
  • 若涉及敏感业务逻辑,建议同时调用后端接口做服务器端验证,避免客户端触发的风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:35:13