【问题标题】:Stripe - process multiple payments from same IPStripe - 处理来自同一 IP 的多笔付款
【发布时间】:2018-11-14 02:51:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: stripe-payments stripe-connect stripe.js


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢大卫。目前我正在按照您建议的方式进行操作,即创建卡然后将令牌传递给服务器端脚本进行处理。卡片详细信息在条纹屏幕中输入,因此我们不会保留任何敏感信息。
    【解决方案2】:

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

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

    official doc.

    让我们考虑一个示例,您希望处理具有唯一 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 对于每个收费对象应该是唯一的。

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2018-05-30
      • 2011-12-11
      • 2017-01-22
      • 2021-10-26
      相关资源
      最近更新 更多