【问题标题】:401 Error when sending data to Stripe `Customers` API向 Stripe `Customers` API 发送数据时出现 401 错误
【发布时间】:2022-04-18 16:24:06
【问题描述】:

我想在提交表单后在 Stripe 中创建一个新客户,并将该客户的信用卡添加到他们的帐户中。截至目前,我在我的 React 应用程序中提交时使用以下代码。然后,创建客户调用与我的服务器分开进行:

async submit(ev) {
  let {token} = await this.props.stripe.createToken({name: "Name"});
  let response = await fetch("https://api.stripe.com/v1/customers", {
     method: "POST",
     headers: {"Content-Type": "text/plain"},
     body: token.id
});

发送该数据时,let response = ... 行出现 401 错误。我知道 401 是一个身份验证错误,但我的测试 API 密钥绝对正确,并且对他们如何访问我的条带帐户没有限制。谁能给点建议?

【问题讨论】:

    标签: stripe-payments


    【解决方案1】:

    这里的问题是您试图在原始 Javascript 中创建客户对象客户端。此 API 请求需要您的 Secret API 密钥。这意味着您永远无法在客户端执行此操作,否则任何人都可以找到您的 API 密钥并使用它进行退款或转账等操作。

    相反,您需要将令牌发送到您自己的服务器。在那里,您将能够使用 Stripe 的official libraries 之一创建客户或费用,而不是自己发出原始 HTTP 请求。

    【讨论】:

    • 非常感谢您的回复。我目前在我的服务器上有以下调用:` app.post("api.stripe.com/v1/customers", async (req, res) => { try { let {status} = await stripe.customers.create({ description: "Customer test ", source: req.body, email: null }); `所以我不应该从我的客户端文件调用 api 吗?根据stripe.com/docs/recipes/elements-react,我正在使用该调用将令牌发送到我的服务器。
    【解决方案2】:

    在我的情况下,由于缺少条带公钥而引发错误

    var stripe = Stripe('{{ env("STRIPE_KEY") }}');
    

    然后我像上面一样传递公钥,它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 2020-08-31
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2012-05-12
      • 2020-11-22
      相关资源
      最近更新 更多