我们有一个简单的表格,允许我们的客户为我们的服务付款 . 我们正在使用“StripeCheckout”JS库,一切都按预期工作 .
我们的一些客户向我们提供信用卡信息,并希望我们代表他们付款 . 这显然是一个安全问题,但我们的客户信任我们:)这是条带上的一个问题,因为它不允许从同一个IP发生多次付款(可以理解)
想知道条带是否提供了一个不同的API,以便能够使用相同的IP执行此操作(即从我们的运营中心处理多个客户端付款)?
如果你已经有卡号(或者客户愿意给你),那么你可以使用https://stripe.com/docs/api#create_card通过他们的API在Stripe中创建一个Card对象,然后一旦你有了一个支付源(可以是你创建的卡),你就可以使用https://stripe.com/docs/api#create_charge创建Charge对象 .
除了条带可能执行的任何速率限制之外,我不认为IP地址确实存在 - 但这可能仅限于您的API密钥而不仅仅是源IP .
当您触摸时,卡片详细信息存在许多可能的风险 - 即使您的客户确实信任您 - 我建议您考虑通过其API从客户端创建卡片对象,并将卡片ID和代币传递给后端如果可能的话 . 这样,您可以降低存储的原始卡号的风险,甚至可以降低系统内部的卡号 . 可能很少有公司能够比Stripe更好地做到这一点 - 所以可以通过依靠它们来存储和处理卡详细信息来利用它们的安全性 .
使用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对于每个充电对象应该是唯一的 .
2 回答
如果你已经有卡号(或者客户愿意给你),那么你可以使用https://stripe.com/docs/api#create_card通过他们的API在Stripe中创建一个Card对象,然后一旦你有了一个支付源(可以是你创建的卡),你就可以使用https://stripe.com/docs/api#create_charge创建Charge对象 .
除了条带可能执行的任何速率限制之外,我不认为IP地址确实存在 - 但这可能仅限于您的API密钥而不仅仅是源IP .
当您触摸时,卡片详细信息存在许多可能的风险 - 即使您的客户确实信任您 - 我建议您考虑通过其API从客户端创建卡片对象,并将卡片ID和代币传递给后端如果可能的话 . 这样,您可以降低存储的原始卡号的风险,甚至可以降低系统内部的卡号 . 可能很少有公司能够比Stripe更好地做到这一点 - 所以可以通过依靠它们来存储和处理卡详细信息来利用它们的安全性 .
使用Stripe Idempotent请求的最佳解决方案 . 在处理付款时我们遇到了类似的问题 . 用户付款多次处理 .
幂等密钥确保只有一次成功支付才能为每个幂等密钥处理,可以进行多次失败尝试 . 见here
并在official doc .
让我们考虑一个示例您想要使用唯一的order_id处理订单付款 . 所以很明显你想要一个成功的订单付款 . 所以你可以在创建电荷时传递幂等键 . 您不需要保存用户的卡详细信息,只有使用stripe.js创建的一次性令牌才有效