测试付款时缺少 Stripe API 端点参数

问题描述

我正在尝试在不使用第三方库或 npm 的情况下在 node js 中实现条带支付。所以,首先我想测试失眠的请求。

查看条带文档 here,如果我在控制台中粘贴相同的命令,我会得到一个成功对象。

现在转向失眠,我在请求标头中有以下内容

Authorization: Bearer my_api_key
Content-Type: application/x-www-form-urlencoded

然后是正文中的以下对象:

{
    "card[exp_month]":7,"card[exp_year]":2022,"card[cvc]":314
}

回复

{
  "error": {
    "code": "parameter_missing","doc_url": "https://stripe.com/docs/error-codes/parameter-missing","message": "You must supply either a card,customer,PII data,bank account,or account legal entity to create a token. If you're making this request with a library,be sure to pass all of the required parameters for creating a token. If you're making this request manually,be sure your POST parameters begin with the token type. For example,a PII token would require `pii[personal_id_number]`,while an account token would require a parameter beginning with `account[legal_entity]`. See the API reference for more information: https://stripe.com/docs/api#token_object","type": "invalid_request_error"
  }
}

1 - 我使用哪个端点、标题正文内容来创建令牌? 2 - 我如何进行实际付款。

注意:我从条带仪表板中获取了我的 test_api_key。

解决方法

这里需要考虑的几件事:

  1. 这最终取决于您,但我强烈建议您使用 stripe-node 库,而不是滚动您自己的库。该库基本上是底层 HTTP 请求的包装器,具有一些有用的功能,如自动重试、幂等键和强大的错误处理。您可以自己动手,但您将重新发明轮子,并且随着您的集成变得更加复杂,您将面临各种未处理的边缘情况和越来越多的问题。

  2. 您似乎正在尝试向 Stripe 发送原始卡详细信息。强烈建议不要这样做,因为它会将您置于最苛刻的 PCI compliance 括号中。这包括每年向 Stripe 发送 40 多页的文档,详细说明您如何实施安全性并证明您遵守 PCI 合规性安全标准。

  3. 您正在尝试使用令牌 API,该 API 已弃用用于卡片。相反,您应该使用 PaymentMethods API 进行新的集成。

如果您知道自己在做什么,但仍想沿着这条路走下去,问题在于您没有在请求中提供卡号。除了有效期和 CVC,卡号是 required

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...