NextJS 13 App Router集成Stripe托管结账页面异常排查
验证环境变量加载状态:
在checkout_sessions.ts中添加日志输出process.env.STRIPE_SECRET_KEY和process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,确认本地开发时这两个变量是否被正确读取。注意env.local内的变量名不能写错,且修改后需重启开发服务器。检查按钮点击事件绑定:
查看checkout.tsx内的结账按钮是否正确绑定了创建会话的函数,比如是否通过onClick触发API请求。建议添加错误捕获逻辑,在控制台打印错误信息,确认点击时是否有请求发送至/api/checkout_sessions。校验Checkout Session创建逻辑:
确认checkout_sessions.ts中使用的是Stripe后台已创建的有效Price ID(注意是Price ID而非Product ID),同时检查创建会话的参数是否完整,比如success_url、cancel_url是否配置正确,是否遗漏mode参数(如payment或subscription)。排查API路由响应:
在浏览器开发者工具的Network标签中,查看点击按钮时是否有请求发送到/api/checkout_sessions。若有请求,检查响应状态码和返回内容,确认是否包含错误信息;若无请求,则说明点击事件未触发,需排查按钮的DOM结构和事件绑定逻辑。确认Stripe客户端初始化:
检查checkout.tsx中是否正确初始化Stripe对象,比如const stripe = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY!),是否在组件挂载阶段完成加载,有无初始化失败的情况。检查本地开发配置:
确认Stripe后台的密钥权限是否正常(比如Secret Key是否拥有创建Checkout Session的权限),同时排查本地开发服务器是否存在代理或CORS配置影响请求发送。
内容的提问来源于stack exchange,提问作者Kalvin

