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