class OgoneRails::CheckAuth

Public Class Methods

new(request) click to toggle source
# File lib/ogone-rails/check-auth.rb, line 5
def initialize request
  @request = request.GET
  # clear empty keys
  @request.delete_if { |k,v| v.empty? }

  @params = {}
  get_params
end

Public Instance Methods

get_params() click to toggle source
# File lib/ogone-rails/check-auth.rb, line 42
def get_params
  # return values in readable format
  @params = {
    :order_id => (@request['orderID']),
    :amount => (@request['amount']).to_f,
    :currency => @request['currency'],
    :payment_method => @request['PM'],
    :acceptance => @request['ACCEPTANCE'],
    :status => STATUS_CODES[@request['STATUS'].to_i],
    :card_number => @request['CARDNO'],
    :pay_id => @request['PAYID'],
    :error => @request['NC ERROR'],
    :brand => @request['BRAND'],
    :sha_sign => @request['SHASIGN']
  }
end
valid?() click to toggle source
# File lib/ogone-rails/check-auth.rb, line 15
def valid?
  # Check authentication
  # sha_sign == sha_out_phrase
  sha_sign, sha_out_phrase, ogone_return = @request['SHASIGN'], "", {}
  
  # Upcase and sort paramaters to params
  @request.each do |key, value|
    ogone_return[key.upcase] = value unless key == 'SHASIGN' # exclude SHASIGN
  end

  # Generate sha_out_hash
  ogone_return.sort.each do |key, value|
    sha_out_phrase << "#{key.upcase}=#{value}#{OgoneRails::sha_out}"
  end      
  
  # Digest sha_out_phrase
  sha_check = Digest::SHA1.hexdigest(sha_out_phrase).upcase

  # Compare sha_sign with digested phrase
  if sha_check == sha_sign
    return true
  else
   return false
  end
end