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
相关产品推荐
相关产品推荐

