MERN Stack开发结账时出现StripeAuthenticationError报错求助
问题根因
你遇到的StripeAuthenticationError 401错误是后端服务调用Stripe接口时未正确携带Stripe Secret密钥导致的,前端生成Stripe token的逻辑配置无问题,故障点在后端支付接口实现部分。
排查解决步骤
- 检查后端环境变量配置
确认后端根目录的环境变量文件(通常为.env)中已正确配置sk_开头的Stripe Secret密钥,注意不要和前端使用的pk_开头的公钥混淆,Secret密钥禁止放到前端代码中。
环境变量配置示例:STRIPE_SECRET_KEY=你自己的Stripe Secret密钥 - 校验后端Stripe初始化逻辑
确保后端/checkout/payment接口在调用Stripe支付能力前,已经用Secret密钥完成Stripe实例初始化,参考代码如下:// 加载环境变量,这行要写在入口文件最顶部 require('dotenv').config() // 初始化Stripe const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY) // 支付接口逻辑 router.post('/payment', async (req, res) => { try { const charge = await stripe.charges.create({ amount: req.body.amount * 100, // Stripe要求金额单位为分 currency: "cny", source: req.body.tokenId, description: "订单支付" }) res.status(200).json(charge) } catch (err) { res.status(500).json(err) } }) - 确认环境变量加载生效
配置完成后重启后端服务,可在Stripe初始化代码后打印process.env.STRIPE_SECRET_KEY,确认密钥能被正常读取,没有拼写错误、多余空格或引号。
内容的提问来源于stack exchange,提问作者Abdul Rasheed Azar
相关产品推荐
相关产品推荐

