module OffsitePayments::Integrations::RealexOffsite::Common

Constants

CURRENCY_SPECIAL_MINOR_UNITS

Public Instance Methods

create_signature(fields, secret) click to toggle source
# File lib/offsite_payments/integrations/realex_offsite.rb, line 66
def create_signature(fields, secret)
  data = fields.join('.')
  digest = Digest::SHA1.hexdigest(data)
  signed = "#{digest}.#{secret}"
  Digest::SHA1.hexdigest(signed)
end
extract_avs_code(params={}) click to toggle source
# File lib/offsite_payments/integrations/realex_offsite.rb, line 94
def extract_avs_code(params={})
  [extract_digits(params[:zip]), extract_digits(params[:address1])].join('|')
end
extract_digits(value) click to toggle source
# File lib/offsite_payments/integrations/realex_offsite.rb, line 90
def extract_digits(value)
  value.scan(/\d+/).join('')
end
format_amount(amount, currency) click to toggle source

Realex accepts currency amounts as an integer in the lowest value e.g.

format_amount(110.56, 'GBP')
=> 11056
# File lib/offsite_payments/integrations/realex_offsite.rb, line 77
def format_amount(amount, currency)
  units = CURRENCY_SPECIAL_MINOR_UNITS[currency] || 2
  multiple = 10**units
  return (amount.to_f * multiple.to_f).to_i
end
format_amount_as_float(amount, currency) click to toggle source

Realex returns currency amount as an integer

# File lib/offsite_payments/integrations/realex_offsite.rb, line 84
def format_amount_as_float(amount, currency)
  units = CURRENCY_SPECIAL_MINOR_UNITS[currency] || 2
  divisor = 10**units
  return (amount.to_f / divisor.to_f)
end