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

使用Gravity Forms的gform_after_submission钩子集成Stripe支付时重定向失效求助

Gravity Forms提交后无法跳转Stripe结账页的解决方案

核心问题排查与修复

  1. 语法错误导致代码中断
    你的代码中\Stripe\Stripe::setApiKey( $my_API_KY ) );这一行多了一个闭合括号,会触发PHP语法错误,直接中断后续的跳转逻辑。修正后的代码应为:

    \Stripe\Stripe::setApiKey( $my_API_KY );
    
  2. 输出干扰wp_redirect执行
    gform_after_submission钩子执行时,可能已经有页面输出(比如表单提交后的默认反馈、主题/插件的额外输出),而wp_redirect要求执行前不能有任何输出(包括空格、HTML标签、PHP错误提示等)。可以通过以下方式解决:

    • 替换wp_redirect为wp_safe_redirect,同时确保exit语句紧跟其后:
      wp_safe_redirect($res->url);
      exit;
      
    • 临时禁用其他插件或切换到默认主题,排查是否有输出冲突。
  3. 钩子优先级调整
    给钩子设置更高的优先级(比如1),确保跳转逻辑在其他输出之前执行:

    add_action('gform_after_submission', function($entry) {
        // 你的代码内容
    }, 1);
    

完整修正后的代码示例

add_action('gform_after_submission', function($entry) {
    $my_API_KY = 'dfsdfasdfasdfadsfdsfdsfadsfdsfdf'; // 替换为真实API密钥

    // 初始化Stripe API密钥(修正语法错误)
    \Stripe\Stripe::setApiKey( $my_API_KY );

    $res = \Stripe\Checkout\Session::create([
        'payment_method_types' => ['card'],
        'line_items' => [
            [
                'price_data' => [
                    'currency' => 'usd',
                    'unit_amount' => 2000,
                    'product_data' => [
                        'name' => 'Example Product',
                    ],
                ],
                'quantity' => 1,
            ],
        ],
        'mode' => 'payment',
        'success_url' => 'https://siteurl.com/succ',
        'cancel_url' => 'https://siteurl.com/error',
    ]);

    // 使用安全跳转并确保终止后续执行
    wp_safe_redirect($res->url);
    exit;
}, 1);

额外排查步骤

  • 开启PHP错误日志,检查是否有未捕获的错误信息;
  • 注释Stripe相关代码,直接跳转普通URL验证wp_safe_redirect是否正常工作;
  • 确认Stripe返回的$res->url是有效HTTPS链接,无编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:34