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

Symfony集成Stripe报错:InvalidRequestException(无效URL)

解决Symfony中Stripe支付会话创建的"Not a valid URL"错误

错误原因

Stripe创建结账会话时,success_url和cancel_url必须是完整的绝对URL(包含协议、域名等完整路径),你当前使用generateUrl()生成的是相对路径,不符合Stripe的参数要求,因此触发InvalidRequestException。

修复步骤

修改generateUrl()的调用,传入第三个参数UrlGeneratorInterface::ABSOLUTE_URL来生成符合要求的绝对URL:

修改后的核心代码

// 先引入UrlGeneratorInterface
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

// ... 其他原有代码 ...

$checkoutSession = Session::create([
    'payment_method_types' => ['card'],
    'line_items' => [[
        'price_data' => [
            'currency' => 'usd',
            'product_data' => [
                'name' => $subject->getSubjectName(),
            ],
            'unit_amount' => $totalAmount,
        ],
        'quantity' => 1,
    ]],
    'mode' => 'payment',
    'success_url' => $this->generateUrl('subject_success', [], UrlGeneratorInterface::ABSOLUTE_URL),
    'cancel_url' => $this->generateUrl('subject_cancel', [], UrlGeneratorInterface::ABSOLUTE_URL),  
]);

额外检查点

  • 确认项目配置文件中router.request_context.host和router.request_context.scheme(http/https)已正确配置,保证生成的绝对URL地址正确。
  • 检查$totalAmount是否为最小货币单位的整数:比如USD需要用分作为单位,若你的subjectPrice是10.99美元,需转换为1099再传入,否则会触发金额格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:10:10