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

如何处理Stripe API密钥,解决授权失败并获取产品列表?

解决Stripe API未授权问题:正确处理API密钥并获取产品列表

你的代码存在几个核心问题导致授权失败,下面直接给出问题点和优化方案:

问题分析

  1. 未携带授权信息:你引入了Stripe官方SDK却未使用,反而用axios直接请求API时没有添加授权头,Stripe API会拒绝未授权的请求
  2. 密钥处理错误:代码里硬编码了密钥占位符,没有正确读取.env文件中的变量
  3. axios用法错误:axios会自动解析JSON响应,不需要调用response.json(),直接用response.data即可

优化方案一:使用Stripe官方SDK(推荐)

官方SDK会自动处理授权、签名验证等细节,比手动用axios更安全可靠:

  1. 先在你的.env文件中配置Stripe秘密密钥(从Stripe仪表盘获取,格式为sk_xxxxxxx):
STRIPE_SECRET_KEY=sk_你的秘密密钥
  1. 修改代码如下:
const dotenv = require('dotenv');
dotenv.config({ path: './.env' });
// 从环境变量读取密钥,初始化Stripe客户端
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

// 调用Stripe API获取产品列表,可通过limit参数控制返回数量
stripe.products.list({ limit: 10 })
  .then(products => {
    console.log('产品列表:', products.data);
  })
  .catch(error => {
    console.error('请求失败:', error.message);
  });

优化方案二:修正axios请求写法(仅特殊场景使用)

如果必须用axios请求,需要手动添加授权头:

const axios = require('axios');
const dotenv = require('dotenv');
dotenv.config({ path: './.env' });

const URL = 'https://api.stripe.com/v1/products';

axios.get(URL, {
  headers: {
    // Stripe API支持Bearer认证,直接传入秘密密钥即可
    'Authorization': `Bearer ${process.env.STRIPE_SECRET_KEY}`
  }
})
.then(response => {
  console.log('产品列表:', response.data);
})
.catch(error => {
  console.error('请求失败:', error.response?.data || error.message);
});

注意事项

  • 确保.env文件已添加到.gitignore,避免密钥泄露到版本控制系统
  • 必须使用秘密密钥(sk_开头),发布密钥(pk_开头)仅用于前端,后端调用API必须用秘密密钥
  • 如果仍提示未授权,检查密钥是否正确,以及Stripe账号是否正常启用产品API权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:12