0

我们有一个简单的表格,允许我们的客户为我们的服务付款。我们正在使用“StripeCheckout”JS 库,一切都按预期工作。

我们的一些客户向我们提供了信用卡信息,并希望我们代表他们付款。这显然是一个安全问题,但我们的客户信任我们 :) 这是条带上的一个问题,因为它不允许从同一个 IP 发生多次付款(这是可以理解的)

想知道 stripe 是否提供不同的 API 来使用相同的 IP 来执行此操作(即处理来自我们运营中心的多个客户付款)?

4

2 回答 2

0

使用 Stripe Idempotent 请求的最佳解决方案。我们在处理付款时遇到了类似的问题。用户付款被多次处理。

幂等密钥保证每个幂等密钥只能处理一次成功支付,可以进行多次失败尝试。看这里

并在官方文档中。

让我们考虑一个示例,您希望处理具有唯一 order_id 的订单的付款。所以很明显你想要一次成功的订单付款。因此您可以在创建费用时传递幂等密钥。您不需要保存用户的卡片详细信息,只需使用 stripe.js 创建的一次性令牌即可工作

require "stripe"
Stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"

Stripe::Charge.create({
  :amount => 2000,
  :currency => "usd",
  :source => "tok_visa", # obtained with Stripe.js
  :description => "Charge for joseph.davis@example.com"
}, {
  :idempotency_key => "FVnElesDto9UXlOr"
})

idempotency_key 每个收费对象应该是唯一的。

于 2018-06-05T13:55:32.687 回答
0

如果您已经有卡号(或者客户愿意给您),那么您可以使用https://stripe.com/docs/api#create_card通过他们的 API 在 Stripe 中创建一个 Card 对象,然后在您付款后源(可以是您创建的卡)您可以使用https://stripe.com/docs/api#create_charge创建一个 Charge 对象。

除了可能执行的任何速率限制条带之外,我认为 IP 地址不会真正进入其中 - 但这可能受限于您的 API 密钥,而不仅仅是源 IP。

正如您所提到的,拥有卡详细信息存在许多可能的风险——即使您的客户确实信任您——我鼓励您考虑通过他们的 API 从客户端创建卡对象,并将卡 ID 和令牌传递给如果可能,后端。这样,您就可以降低原始卡号被存储或什至在您的系统中所面临的风险。可能很少有公司能比 Stripe 做得更好——因此不妨依靠它们来存储和处理卡片详细信息,从而利用它们的安全性。

于 2018-06-04T17:56:36.140 回答