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

Laravel 9集成Stripe支付网关时表单提交报错求助

Laravel 9集成Stripe Payment Element时表单提交错误的解决方案

问题核心原因

你使用了Stripe的Payment Element(通过elements.create('payment')创建),但却调用了仅适用于旧版Card Element的stripe.createToken()方法,二者不兼容——Payment Element是基于Payment Intent API的新组件,不支持createToken这种旧的Token生成逻辑。

修复步骤

1. 替换表单提交处理逻辑

删除原有的stripe.createToken调用,改用stripe.confirmPayment()完成支付确认,这是Payment Element的标准用法。

2. 修改后的提交事件代码

将表单提交的JS代码替换为以下内容:

form.addEventListener('submit', function (event) {
    event.preventDefault();

    // 禁用表单防止重复提交
    form.querySelector('button[type="submit"]').disabled = true;

    stripe.confirmPayment({
        elements: elements,
        confirmParams: {
            return_url: completeUrl, // 支付完成后的跳转地址
        },
    }).then(function (result) {
        if (result.error) {
            // 显示错误信息
            var errorElement = document.getElementById('card-errors');
            errorElement.textContent = result.error.message;
            // 重新启用提交按钮
            form.querySelector('button[type="submit"]').disabled = false;
        }
        // 支付成功后会自动跳转到return_url,无需额外处理
    });
});

3. 确保后端接口正确配置

你的/initiate-payment接口需要正确创建Stripe Payment Intent,Laravel示例代码参考:

use Stripe\Stripe;
use Stripe\PaymentIntent;

public function initiatePayment(Request $request)
{
    Stripe::setApiKey(config('services.stripe.secret'));

    $paymentIntent = PaymentIntent::create([
        'amount' => 1000, // 单位:分,示例为10美元
        'currency' => 'usd',
        'automatic_payment_methods' => [
            'enabled' => true, // 自动启用所有支持的支付方式
        ],
    ]);

    return response()->json([
        'client_secret' => $paymentIntent->client_secret,
    ]);
}

额外注意事项

  • 确保已正确引入Stripe最新版JS脚本:
    <script src="https://js.stripe.com/v3/"></script>
    
  • Payment Element会自动处理多种支付方式(信用卡、PayPal等),无需手动生成Token;支付成功后Stripe会自动跳转到你指定的return_url,可在该页面验证支付状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:50:21