在Next.js项目中嵌入Stripe Checkout遇问题,寻求技术帮助
解决Next.js集成Stripe嵌入式结账表单的
Invalid ui_mode value: embedded错误 从你提供的报错来看,核心问题是Stripe Node.js SDK版本过低,因为ui_mode: 'embedded'是Stripe推出的新功能,只有在较新版本的SDK中才支持。以下是具体解决步骤:
升级Stripe SDK到最新版本
打开项目终端,执行以下命令更新依赖:npm install stripe@latest或者指定最低支持嵌入式结账的版本(需v12.1.0及以上):
npm install stripe@^12.1.0验证环境变量与密钥
确保.env文件中的STRIPE_SECRET_KEY是有效的测试/生产密钥,且没有拼写错误。测试环境使用sk_test_前缀的密钥,生产环境使用sk_live_前缀。修正代码中的转义问题
你提供的代码里出现了"这类HTML转义字符,实际代码中需要替换为正常的双引号",否则可能导致语法解析异常。修正后的POST请求分支代码示例:case "POST": try { const session = await stripe.checkout.sessions.create({ ui_mode: 'embedded', line_items: [ { price: 'price_1P5p2nIrKwv2F1FvTIPuwNwF', quantity: 1, }, ], mode: 'payment', return_url: `${req.headers.origin}/return?session_id={CHECKOUT_SESSION_ID}`, }); res.send({clientSecret: session.client_secret}); } catch (err) { res.status(err.statusCode || 500).json(err.message); } break;
完成以上操作后,重新启动Next.js服务并测试API路由,应该就能正常创建嵌入式结账会话了。
内容的提问来源于stack exchange,提问作者Ibnul
相关产品推荐
相关产品推荐

