2016-04-04 14 views
0

Ich habe ein Problem mit der Validierung von Kreditkartendaten unter Verwendung des Active Merchant Gem. Wenn ich versuche, eine neue Zahlung einzugeben, habe ich immer den Fehler: The credit card you provided was declined. 2 Please double check your information and try again.. Dies bedeutet, dass die Antwort kein Erfolg ist. Ich habe keine Ahnung warum. Ich verwende Code aus Tutorial: Active Merchant TutorialDie Kreditkarte kann nicht mit Active Merchant validiert werden.

payment.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. 2 Please double check your information and try again.") and return 
     false 
    end 
    end 
end 
end 

initializers/activemerchant.rb

if Rails.env == "development" 
    #we set up a log file 
    ActiveMerchant::Billing::FirstdataE4Gateway.wiredump_device = File.open(Rails.root.join("log","active_merchant.log"), "a+") 
    # enable logging 
    ActiveMerchant::Billing::FirstdataE4Gateway.wiredump_device.sync = true 
    # we wish to use the test version of the gateway 
    ActiveMerchant::Billing::Base.mode = :test 

    login = ENV["GATEWAY_ID"] 
    password = ENV["GATEWAY_PASSWORD"] 
elsif Rails.env == "production" 
    login = ENV["GATEWAY_ID"] 
    password = ENV["GATEWAY_PASSWORD"] 
end 
GATEWAY = ActiveMerchant::Billing::FirstdataE4Gateway.new({ 
     login: login, 
     password: password 
}) 

gateway_id und GATEWAY_PASSWORD Daten, die ich in .env Datei speichern. Update: Wenn ich response.inspect verwenden, zeigt dies:

#<ActiveMerchant::Billing::Response:0x007f4d0bfc8d98 @params={"transaction_approved"=>"false", "error_number"=>"401", "error_description"=>"Unauthorized Request. Bad or missing credentials."}, @message="Unauthorized Request. Bad or missing credentials.", @success=false, @test=true, @authorization="", @fraud_review=nil, @error_code=nil, @avs_result={"code"=>nil, "message"=>nil, "street_match"=>nil, "postal_match"=>nil}, @cvv_result={"code"=>nil, "message"=>nil}> 

Antwort

1
Unauthorized Request. Bad or missing credentials. 

Dies deutet darauf hin, dass vielleicht Ihre Login oder Passwort Variablen sind nicht richtig eingestellt werden? Haben Sie sichergestellt, dass die Umgebungsvariablen GATEWAY_ID und GATEWAY_PASSWORD in Entwicklungs- und Produktionsumgebungen richtig eingestellt sind?

Verwandte Themen