Node.js服务器中Stripe API认证错误:缺失API密钥
Stripe API认证错误:未提供API密钥(React Native + Node.js)
这个错误是你的Node.js服务端在调用Stripe API时没有正确传入API密钥导致的,和你贴的React Native客户端代码无关——客户端只是请求自己的后端接口,后端才是与Stripe交互的主体。
以下是具体排查方向:
检查服务端Stripe初始化代码
确保你用正确的Secret Key初始化Stripe SDK,代码应该类似:const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);注意这里必须用Secret Key(以
sk_test_或sk_live_开头),不能用客户端的Publishable Key(以pk_开头)。验证环境变量是否生效
在服务端代码中临时添加日志输出,确认环境变量是否正确加载:console.log('Stripe Secret Key:', process.env.STRIPE_SECRET_KEY?.slice(0, 5) + '...');部署后查看服务器日志,如果输出
undefined或不是sk_开头,说明环境变量没配置对。检查部署平台的环境变量设置
你的后端部署在Railway,需要进入Railway项目的「Variables」页面,确认STRIPE_SECRET_KEY已正确添加,且修改后重新部署了服务(环境变量变更需要重启服务才会生效)。确认服务端接口代码正确使用Stripe实例
查看create-checkout-session接口的实现,确保创建会话时用的是初始化好的Stripe实例,示例代码:app.post('/create-checkout-session', async (req, res) => { try { const session = await stripe.checkout.sessions.create({ payment_method_types: ['card'], line_items: [ { price: '你的订阅价格ID', quantity: 1, }, ], mode: 'subscription', success_url: 'https://your-app.com/success', cancel_url: 'https://your-app.com/cancel', }); res.json({ url: session.url, session }); } catch (err) { res.status(400).json({ message: err.message }); } });避免在接口中重新创建Stripe实例,或错误地使用了无效的密钥。
内容的提问来源于stack exchange,提问作者melvin debot
相关产品推荐
相关产品推荐

