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

按照LamaDev教程实现Stripe支付时401 API密钥认证失败求助

问题排查与修复方案

1. 优先排查后端Stripe密钥加载问题

  • 先确认后端项目根目录安装了dotenv依赖,并且在入口文件(一般是server.js/index.js)最顶部添加了require('dotenv').config(),没有这行代码process.env.STRIPE_KEY会读取失败,Stripe初始化时拿不到密钥就会报401认证错误。
  • 打印验证密钥是否读取成功:在Stripe初始化的代码行上方加console.log(process.env.STRIPE_KEY),启动后端服务后看控制台输出是否是你填写的Stripe密钥,注意必须是Secret Key不是前端用的Publishable Key,正确的密钥开头是sk_test_,不要填反前后端的密钥。
  • 检查.env文件格式:STRIPE_KEY=后面不要加引号,也不要有多余空格,正确格式为STRIPE_KEY=sk_test_xxxxxx。

2. 检查Stripe依赖版本兼容性

如果你安装的是Stripe v10以上的版本,旧的回调写法已经不被官方支持,需要改成async/await写法,替换后端payment接口代码:

const router = require("express").Router();
const stripe = require("stripe")(process.env.STRIPE_KEY);

router.post("/payment", async (req, res) => {
  try {
    const charge = await stripe.charges.create({
      source: req.body.tokenId,
      amount: req.body.amount,
      currency: "usd",
    });
    res.status(200).json(charge);
  } catch (stripeErr) {
    res.status(500).json(stripeErr);
  }
});

module.exports = router;

3. 修正Axios配置笔误

你当前的axios实例配置里属性名写错了,请求头的配置字段是headers不是header,少了后缀s,该问题虽然不直接影响Stripe认证,但会导致后续的用户身份校验失效:

// 修正后的userRequest配置
export const userRequest = axios.create({
    baseURL: BASE_URL,
    headers: { token: `Bearer ${TOKEN}` },
});

4. 本地调试临时验证方案

如果排查.env加载问题耗时,可以先把Stripe密钥硬编码初始化测试,如果硬编码后请求正常,就可以100%确定是.env加载问题,测试完成后务必改回读取环境变量,避免密钥泄露:

// 仅本地测试使用
const stripe = require("stripe")("你的sk_test开头的Stripe密钥");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:04