Class: OgoneRails::CheckAuth

Inherits:
Object
  • Object
show all
Defined in:
lib/ogone-rails/check-auth.rb

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ CheckAuth

Returns a new instance of CheckAuth.



5
6
7
8
9
# File 'lib/ogone-rails/check-auth.rb', line 5

def initialize request
  @request = request.GET
  @params = {}
  get_params
end

Instance Method Details

#get_paramsObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/ogone-rails/check-auth.rb', line 39

def get_params
  # return values in readable format
  @params = {
    :order_id => (@request['orderID']).to_i,
    :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?Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ogone-rails/check-auth.rb', line 12

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