У меня странная проблема с ActiveMerchant
. Я использую activemerchant
для проверки номера кредитной карты, и она работает нормально. Однако я обнаружил, что он почему-то не проверяет этот номер карты 3088023605344101
, а также большинство проблем с проверкой возникает, когда я ввожу номер карты типа JCB
. Вот как выглядит мой код
cc = CreditCard.new(
:first_name => client_details[:firstname],
:last_name => client_details[:lastname],
:month => client_details[:month],
:year => client_details[:year],
:number => client_details[:cardnum],
:verification_value => client_details[:cvv]
)
Вот пример из моей консоли, который правильно проверяет карту.
2.1.1 :052 > cc = CreditCard.new(:first_name => 'Steve',:last_name => 'Smith', :month => '9',:year => '2015',:number => '5201457519355638', :verification_value => '123')
=> #<ActiveMerchant::Billing::CreditCard:0x00000109d3acc0 @first_name="Steve", @last_name="Smith", @month="9", @year="2015", @number="5201457519355638", @verification_value="123">
2.1.1 :053 > cc.valid?
=> true
2.1.1 :054 > cc.brand
=> "master"
Хотя кажется, что это работает нормально, вот пример, который вызывает ошибку бренда. Сначала я не использую бренд и оставляю его поискать активному продавцу.
2.1.1 :056 > cc = CreditCard.new(:first_name => 'Steve',:last_name => 'Smith', :month => '9',:year => '2015',:number => '3088023605344101', :verification_value => '123')
=> #<ActiveMerchant::Billing::CreditCard:0x0000010a0d91d8 @first_name="Steve", @last_name="Smith", @month="9", @year="2015", @number="3088023605344101", @verification_value="123">
2.1.1 :057 > cc.valid?
=> false
2.1.1 :058 > cc.errors
=> {"brand"=>["is required"], "number"=>[]}
Так я кормлю бренд
2.1.1 :059 > cc = CreditCard.new(:first_name => 'Steve',:last_name => 'Smith', :month => '9',:year => '2015',:number => '3088023605344101', :verification_value => '123', :brand => 'jcb')
=> #<ActiveMerchant::Billing::CreditCard:0x00000109d886c8 @first_name="Steve", @last_name="Smith", @month="9", @year="2015", @number="3088023605344101", @verification_value="123", @brand="jcb">
2.1.1 :060 > cc.valid?
=> false
2.1.1 :061 > cc.errors
=> {"number"=>[], "brand"=>["does not match the card number"]}
Я проверил номера карт с разных сайтов, и они, кажется, в порядке. Я проверял карту на следующих сайтах: freeformatter и igo
Я не уверен, в чем проблема, но если кто-нибудь знает, почему это происходит, дайте мне знать.