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

Laravel中Stripe Session ID字符过长报错,如何解决?

Stripe结账会话ID无效错误排查与解决

问题现象

在Laravel项目中尝试获取Stripe结账会话详情时,触发如下错误:

Invalid string: cs_test_a1...lhMULLaM",; must be at most 66 characters

错误原因

生成结账会话的代码里,success_url的拼接存在语法错误:
原代码中success_url末尾多了",这些转义后的引号和逗号,导致Stripe跳转时,把多余字符一并带入session_id参数。最终传递的会话ID变成cs_test_xxx",,长度超过Stripe允许的66字符上限,调用retrieve方法时触发校验错误。

修复步骤

  1. 修正success_url的拼接
    移除多余的转义字符和逗号,正确写法如下:

    'success_url' => $YOUR_DOMAIN . '/success?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => $YOUR_DOMAIN . '/cancel',
    ]);
    
  2. 简化Stripe API初始化
    代码中同时使用了StripeClient实例和静态setApiKey,二者选其一即可,避免冗余:

    // 方式一:使用StripeClient实例
    $stripe = new \Stripe\StripeClient(env('STRIPE_API_KEY'));
    $checkout_session = $stripe->checkout->sessions->retrieve($session_id);
    
    // 方式二:使用静态API模式
    \Stripe\Stripe::setApiKey(env('STRIPE_API_KEY'));
    $checkout_session = \Stripe\Checkout\Session::retrieve($session_id);
    
  3. 使用Laravel框架规范的跳转方式
    替换原生header跳转,改用Laravel的redirect()辅助函数:

    return redirect()->away($checkout_session->url);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:25:56