class Ogone::Base
Constants
- SIGNING_ALGORITHMS
- VALID_ENVIRONMENTS
Attributes
sha_in[RW]
sha_out[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/ogone/base.rb, line 14 def initialize(options = {}) @parameters = {} %i[sha_algo environment pspid sha_in sha_out].each do |config| send :"#{config}=", options[config] unless options[config].nil? end end
Public Instance Methods
add_parameters(parameters)
click to toggle source
# File lib/ogone/base.rb, line 38 def add_parameters(parameters) @parameters.merge! parameters end
check_shasign_out!(params)
click to toggle source
# File lib/ogone/base.rb, line 49 def check_shasign_out!(params) params = upcase_keys(params) raise OutboundSignatureMismatch if sha_out_sign(params) != params[:SHASIGN] end
environment=(environment)
click to toggle source
# File lib/ogone/base.rb, line 26 def environment=(environment) unless VALID_ENVIRONMENTS.include? environment.to_s raise ArgumentError, "Unsupported Ogone environment: #{environment}" end @environment = environment end
fields_for_payment(parameters = {}, shasign_key = 'SHASIGN')
click to toggle source
# File lib/ogone/base.rb, line 42 def fields_for_payment(parameters = {}, shasign_key = 'SHASIGN') add_parameters(parameters || {}) check_mandatory_parameters! upcase_keys(@parameters).merge(shasign_key.to_sym => sha_in_sign) end
pspid=(pspid)
click to toggle source
# File lib/ogone/base.rb, line 33 def pspid=(pspid) raise ArgumentError, 'PSPID cannot be empty' if pspid.nil? || pspid == '' @pspid = pspid end
sha_algo=(sha_algo)
click to toggle source
# File lib/ogone/base.rb, line 21 def sha_algo=(sha_algo) raise ArgumentError, "Unsupported signature algorithm: #{sha_algo}" unless SIGNING_ALGORITHMS.include?(sha_algo) @sha_algo = sha_algo end
upcase_keys(hash)
click to toggle source
# File lib/ogone/base.rb, line 54 def upcase_keys(hash) hash.each_with_object({}) { |(k, v), h| h[k.upcase.to_sym] = v; } end
Protected Instance Methods
ogone_host()
click to toggle source
# File lib/ogone/base.rb, line 60 def ogone_host @environment == 'test' ? 'ogone.test.v-psp.com' : 'secure.ogone.com' end
Private Instance Methods
check_mandatory_parameters!()
click to toggle source
# File lib/ogone/base.rb, line 91 def check_mandatory_parameters! keys = @parameters.keys.map(&:to_sym) self.class.const_get('MANDATORY_PARAMETERS').each do |parameter| raise MandatoryParameterMissing, parameter unless keys.include? parameter.to_sym end end
sha_in_sign()
click to toggle source
# File lib/ogone/base.rb, line 66 def sha_in_sign to_hash = sorted_upcased_parameters.each_with_object([]) do |(k, v), a| a << "#{k}=#{v}#{@sha_in}" unless v.nil? || v == '' end.join sign to_hash end
sha_out_sign(params)
click to toggle source
# File lib/ogone/base.rb, line 73 def sha_out_sign(params) to_hash = self.class.const_get('OUTBOUND_SIGNATURE_PARAMETERS').each_with_object([]) do |p, a| a << "#{p}=#{params[p]}#{@sha_out}" unless params[p].nil? || params[p] == '' end.join sign to_hash end
sign(to_hash)
click to toggle source
# File lib/ogone/base.rb, line 80 def sign(to_hash) unless SIGNING_ALGORITHMS.include?(@sha_algo) raise ArgumentError, "Unsupported signature algorithm: '#{@sha_algo}'" end Digest.const_get(@sha_algo).hexdigest(to_hash).upcase end
sorted_upcased_parameters()
click to toggle source
# File lib/ogone/base.rb, line 87 def sorted_upcased_parameters upcase_keys(@parameters).sort end