我创建了一个。env文件,并把我的条纹键放在那里。然后在后端API/router中,我只需要导入这个密钥就可以使用它了。
我做了一个checkout请求,但我仍然在console.dev选项卡中得到这个错误:
POST http://localhost:5000/api/checkout/payment 500 (Internal Server Error)
同样,在网络选项卡中,带有报头消息的支付响应说:
消息:"您没有提供API密钥。您需要在授权头中提供您的API密钥,使用承载认证(例如:'授权:持有者YOUR_SECRET_KEY'). ...">
经过这里和那里的一些检查,我找到了一个解决我的问题的工作,结结账成功通过,但我不能认为它是一个解决方案,因为条带私钥必须存储在。env文件中。如何在。env文件中存储条带私钥并使其可访问?
Stripe.js代码(导致我的问题):
const router = require("express").Router()
const stripe = require("stripe")(process.env.STRIPE_KEY)
router.post("/payment", (req, res) => {
stripe.charges.create(
{
source: req.body.tokenId,
amount: req.body.amount,
currency: "USD"
},
(stripeErr, stripeRes) => {
if (stripeErr) {
res.status(500).json(stripeErr);
} else {
res.status(200).json(stripeRes);
}
}
);
})
module.exports = router;
Stripe.js(我的工作代码):
const router = require("express").Router()
const KEY = "sk_test_51LJh5TCx0CP76PWrVKMBkQfuhm7tcgYZ2bhkx3yLApn3ugWiNEpd65V78uK3Z2nJzNSt2Gaga1bkFYZIAWoddJZ00n9quwkln" //i dont mind share this key public
const stripe = require("stripe")(KEY)
router.post("/payment", (req, res) => {
stripe.charges.create(
{
source: req.body.tokenId,
amount: req.body.amount,
currency: "TTD"
},
(stripeErr, stripeRes) => {
if (stripeErr) {
res.status(500).json(stripeErr);
} else {
res.status(200).json(stripeRes);
}
}
);
})
module.exports = router;
为了使用.env
文件你需要dotenv
首先安装:npm i dotenv
然后在使用环境变量之前将此添加到代码中:
require('dotenv').config()
我也有同样的问题。我的解决方案是:
const dotenv = require("dotenv");
dotenv.config();
:
const stripe = require("stripe")(process.env.STRIPE_KEY)
And then works.