【问题标题】:Stripe payment Error using evn variables react.js node.js使用环境变量react.js node.js进行条带支付错误
【发布时间】:2022-10-24 21:52:21
【问题描述】:

我试图像这样使用 stripe.charges

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;

但是当我从我的客户调用 api 时它给了我一个错误: “您没有提供 API 密钥。您需要在授权标头中提供您的 API 密钥,使用不记名身份验证(例如“授权:不记名 YOUR_SECRET_KEY”

现在,如果我更改条带对象并使用直接插入的键字符串(process.env.STRIPE_KEY),例如

 const stripe = require("stripe")("KEYSTRING GOS HERE")

它按我想要的方式工作,但我认为我不应该把我的 KEY 放在那里

我检查了我的 .env 文件,并且 env 变量在那里被称为 STRIPE_KEY

【问题讨论】:

  • 当你console.log(process.env.STRIPE_KEY) 时会发生什么?您是否使用dotenv 加载环境?这与条带无关,只是你是否加载你的环境
  • 当我 console.log(process.env.STRIPE_KEY) 它给了我我的条带键,对于第二个问题,我该怎么做?
  • 你用过dotenv吗?你可以谷歌 dotenv 吗?你是如何加载你的环境的?您可以在需要条带之前执行 console.log 吗?
  • 是的,在我的 index.js 文件中,我使用了 const dotenv = require("dotenv"); dotenv.config();加载环境,我可以 console.log 我的条纹凯
  • 我只是在需要条带之前尝试记录 process.env.STRIPE_KEY 它给了我未定义的

标签: node.js reactjs stripe-payments


【解决方案1】:

利用

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

在下面

const dotenv = require("dotenv"); 
 dotenv.config();

它解决了我的问题。

【讨论】:

    【解决方案2】:

    通过放置解决了这个问题:

     const dotenv = require("dotenv"); 
     dotenv.config();
    

    在我的 index.js 文件的最开始,在其他一些导入之后

    【讨论】:

      【解决方案3】:

      尽管我在我的根 index.js 文件中像这样导入并配置了dotenv,但我也遇到了同样的问题

      require('dotenv').config();
      

      所以我基本上为了解决这个问题所做的是我在我的控制器文件中做了完全相同的dotenv 配置,如下所示

      require('dotenv').config();
      
      const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
      
      const prices = async (req, res) => {
      
          const prices = await stripe.products.list();
      
          res.json(prices.data);
      
      };
      
      
      export { prices };
      
      

      然后,一切都按预期进行。

      【讨论】:

        猜你喜欢
        • 2021-06-21
        • 2017-10-23
        • 2015-03-30
        • 2016-06-17
        • 2020-03-31
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多