我正在使用带有ActiveMarchent的Stripe支付网关,我已经实现了如下源代码:
ActiveMerchant::Billing::Base.mode = :test
ActiveMerchant::Billing::StripeGateway.new(:login => 'sk_test_...')
我得到了下面的错误,我花了很多时间寻找解决方案,但是我没有找到它:
params:
error:
type: invalid_request_error
message: Sending credit card numbers directly to the Stripe API is generally unsafe.
We suggest you use test tokens that map to the test card you are using, see
https://stripe.com/docs/testing.
谢谢
答案 0 :(得分:1)
您的集成似乎是将卡号直接发送到API。正如错误消息所说,这不安全 - 服务器端代码应始终处理令牌而不是原始卡号。
在生产中,使用Checkout或Elements在客户端创建令牌。如果您想编写自动化测试,这可能会很不方便,因此您可以使用测试令牌。单击“标记”选项卡以查看每个测试卡here的测试标记。
我没有使用ActiveMerchant绑定的经验,但是通过简要查看源代码,应该可以使用令牌:https://github.com/activemerchant/active_merchant/blob/d27c34e9e0e714afbf03d5eacf2a8cb20dc5b3da/lib/active_merchant/billing/gateways/stripe.rb#L97。您应该传递令牌ID("tok_..."
)而不是卡片哈希。
答案 1 :(得分:0)
实际上,Stripe修复了这个错误。真正的罪魁祸首是Active Merchant。它将信用卡号直接发送到条带API。 但是,您可以通过在高级选项下的https://dashboard.stripe.com/account/integration/settings处启用“不安全地处理付款”来解决此问题。