【问题标题】:Not able to validate credit card using active merchant?无法使用活跃商家验证信用卡?
【发布时间】:2015-12-20 16:57:36
【问题描述】:

当我使用表单向信用卡收费时,它会抛出验证错误“您提供的信用卡信息无效。请仔细检查您提供的信息,然后重试。”

有什么办法吗??

这是我的付款.rb

class Payment < ActiveRecord::Base
  require "active_merchant/billing/rails"

  attr_accessor :card_security_code
  attr_accessor :credit_card_number
  attr_accessor :expiration_month
  attr_accessor :expiration_year

  validates :first_name, presence: true
  validates :last_name, presence: true
  validates :card_security_code, presence: true
  validates :credit_card_number, presence: true
  validates :expiration_month, presence: true, numericality: {          greater_than_or_equal_to: 1, less_than_or_equal_to: 12 }
  validates :expiration_year, presence: true
  validates :amount, presence: true, numericality: { greater_than: 0 }

  validate :valid_card

  def credit_card
    ActiveMerchant::Billing::CreditCard.new(
        number:              credit_card_number,
        verification_value:  card_security_code,
        month:               expiration_month,
        year:                expiration_year,
        first_name:          first_name,
        last_name:           last_name
 )
  end

  def valid_card
     if !credit_card.valid?
      errors.add(:base, "The credit card information you provided is not valid.  Please double check the information you provided and then try again.")
     false
    else
     true
    end
  end

  def process
    if valid_card
      response = GATEWAY.authorize(amount * 100, credit_card)
      if response.success?
        transaction = GATEWAY.capture(amount * 100, response.authorization)
        if !transaction.success?
          errors.add(:base, "The credit card you provided was declined.  Please double check your information and try again.") and return
          false
        end
        update_columns({authorization_code: transaction.authorization, success: true})
        true
      else
        errors.add(:base, "The credit card you provided was declined.  Please double check your information and try again.") and return
        false
      end
    end
  end
end

这是我的 activemerchant.rb

if Rails.env == 'development'
  ActiveMerchant::Billing::FirstdataE4Gateway.wiredump_device =   File.open(Rails.root.join('log','active_merchant.log'), 'a+')
  ActiveMerchant::Billing::FirstdataE4Gateway.wiredump_device.sync = true
  ActiveMerchant::Billing::Base.mode = :test

  login = 'mylogin'
  password='mypassword'
elsif Rails.env == 'production'
  login = 'mylogin'
  password='mypassword'
end
GATEWAY = ActiveMerchant::Billing::FirstdataE4Gateway.new({
                                                          login: login,
                                                          password: password
                                                      })

查看here

【问题讨论】:

标签: ruby-on-rails credit-card activemerchant


【解决方案1】:

您还需要提供信用卡品牌名称

def credit_card
    ActiveMerchant::Billing::CreditCard.new(
        number:              credit_card_number, # 4111111111111111
        verification_value:  card_security_code, # 123
        month:               expiration_month, # 1
        year:                expiration_year, # 2020
        first_name:          first_name, # Bibek
        last_name:           last_name, # Sharma
        brand:               credit_card_brand # visa
     )
  end

【讨论】:

猜你喜欢
  • 2011-08-16
  • 2010-11-23
  • 2010-10-02
  • 2011-06-20
  • 2016-07-23
  • 2013-10-21
  • 2014-08-14
  • 2011-03-17
  • 2011-08-28
相关资源
最近更新 更多