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

如何检测Flutter WebView中用户是否跳转至Stripe支付成功页面?

如何通过WebView监听Stripe支付成功跳转(webview_flutter 4.2.0)

你可以通过给WebViewController设置navigationDelegate来拦截页面跳转请求,以此判断是否跳转到了支付成功页面。具体实现如下:

修改后的完整代码

class _MaxPageState extends State<MaxPage> {
  late final WebViewController controller;
  final String successPay = "https://link_to_success_pay";

  @override
  void initState() {
    super.initState();
    controller = WebViewController()
      ..setNavigationDelegate(NavigationDelegate(
        onNavigationRequest: (NavigationRequest request) {
          // 检测跳转的URL是否匹配支付成功页面
          if (request.url.startsWith(successPay)) {
            // 支付成功后的逻辑:弹窗提示、更新本地状态、返回上一页等
            ScaffoldMessenger.of(context).showSnackBar(
              const SnackBar(content: Text("支付成功!")),
            );
            // 可选:阻止WebView加载成功页面,直接在应用内处理后续流程
            return NavigationDecision.prevent;
          }
          // 允许其他页面正常跳转
          return NavigationDecision.navigate;
        },
      ))
      ..loadRequest(
        Uri.parse('https://link_to_my_stripe_payment'),
      );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 0,
        centerTitle: true,
        backgroundColor: ThemeColor.darkBlack,
        title: const Text(
          "Upgrade Account",
        ),
      ),
      body: WebViewWidget(
        controller: controller,
      ),
    );
  }
}

关键逻辑说明

  • setNavigationDelegate:webview_flutter 4.x版本中用于监听页面导航事件的核心API,可拦截所有跳转请求。
  • onNavigationRequest回调:每次WebView发起跳转时触发,request参数包含目标URL,通过它可以精准判断跳转去向。
  • URL匹配规则:用startsWith(或根据实际需求改用contains)匹配成功页面地址,确保判断准确。
  • NavigationDecision返回值:
    • NavigationDecision.prevent:阻止WebView加载目标页面,适合直接在应用内处理支付成功流程的场景。
    • NavigationDecision.navigate:允许WebView正常加载成功页面,若需要展示Stripe官方成功页可选择此选项。

额外提示

仅靠前端跳转判断存在被篡改的风险,建议同时在后端对接Stripe的Webhook进行支付结果二次验证,保障交易安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:35:20