使用Gravity Forms的gform_after_submission钩子集成Stripe支付时重定向失效求助
Gravity Forms提交后无法跳转Stripe结账页的解决方案
核心问题排查与修复
语法错误导致代码中断
你的代码中\Stripe\Stripe::setApiKey( $my_API_KY ) );这一行多了一个闭合括号,会触发PHP语法错误,直接中断后续的跳转逻辑。修正后的代码应为:\Stripe\Stripe::setApiKey( $my_API_KY );输出干扰wp_redirect执行
gform_after_submission钩子执行时,可能已经有页面输出(比如表单提交后的默认反馈、主题/插件的额外输出),而wp_redirect要求执行前不能有任何输出(包括空格、HTML标签、PHP错误提示等)。可以通过以下方式解决:- 替换
wp_redirect为wp_safe_redirect,同时确保exit语句紧跟其后:wp_safe_redirect($res->url); exit; - 临时禁用其他插件或切换到默认主题,排查是否有输出冲突。
- 替换
钩子优先级调整
给钩子设置更高的优先级(比如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
相关产品推荐
相关产品推荐

