条带支付:params:错误:类型:invalid_request_error

时间:2017-10-12 23:05:10

标签: ruby-on-rails ruby stripe-payments activemerchant

我正在使用带有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.

谢谢

2 个答案:

答案 0 :(得分:1)

您的集成似乎是将卡号直接发送到API。正如错误消息所说,这不安全 - 服务器端代码应始终处理令牌而不是原始卡号。

在生产中,使用CheckoutElements在客户端创建令牌。如果您想编写自动化测试,这可能会很不方便,因此您可以使用测试令牌。单击“标记”选项卡以查看每个测试卡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处启用“不安全地处理付款”来解决此问题。