class OffsitePayments::Integrations::CheckoutFinland::Helper
Public Class Methods
new(order, account, options = {})
click to toggle source
Calls superclass method
# File lib/offsite_payments/integrations/checkout_finland.rb, line 16 def initialize(order, account, options = {}) md5secret options.delete(:credential2) super # Add default fields add_field("VERSION", "0001") # API version add_field("ALGORITHM", "3") # Return MAC version (3 is HMAC-SHA256) add_field("TYPE", "0") add_field("DEVICE", "1") # Offsite payment by default end
Public Instance Methods
add_field(name, value)
click to toggle source
Apply parameter length limitations recommended by Checkout.fi
# File lib/offsite_payments/integrations/checkout_finland.rb, line 37 def add_field(name, value) return if name.blank? || value.blank? @fields[name.to_s] = check_param_length(name_to_s, value.to_s) end
check_param_length(name, value)
click to toggle source
API parameter length limitations specified by Checkout.fi Parameters longer than this cause the HTTP POST to fail
# File lib/offsite_payments/integrations/checkout_finland.rb, line 44 def check_param_length(name, value) # Soft limitations, fields that can be clipped max_length_substring = { "FIRSTNAME" => 40, "FAMILYNAME" => 40, "ADDRESS" => 40, "POSTCODE" => 14, "POSTOFFICE" => 18, "MESSAGE" => 1000, "EMAIL" => 200, "PHONE" => 30 } # Hard limitations, fields that cannot be clipped max_length_exception = { "RETURN" => 300, "CANCEL" => 300, "REJECT" => 300, "DELAYED" => 300, "STAMP" => 20, "AMOUNT" => 8, "REFERENCE" => 20, "CONTENT" => 2, "LANGUAGE" => 2, "MERCHANT" => 20, "COUNTRY" => 3, "CURRENCY" => 3, "DELIVERY_DATE" => 8 } if max_length_substring.include? name return value.to_s[0, max_length_substring[name]] end if max_length_exception.include? name if value.to_s.length > max_length_exception[name] raise ArgumentError, "Field #{name} length #{value.length} is longer than permitted by provider API. Maximum length #{max_length_exception[name]}." else return value end end value end
form_fields()
click to toggle source
Add MAC to form fields
# File lib/offsite_payments/integrations/checkout_finland.rb, line 32 def form_fields @fields.merge("MAC" => generate_md5string) end
generate_md5string()
click to toggle source
Calculate MAC
# File lib/offsite_payments/integrations/checkout_finland.rb, line 63 def generate_md5string fields = [@fields["VERSION"], @fields["STAMP"], @fields["AMOUNT"], @fields["REFERENCE"], @fields["MESSAGE"], @fields["LANGUAGE"], @fields["MERCHANT"], @fields["RETURN"], @fields["CANCEL"], @fields["REJECT"], @fields["DELAYED"], @fields["COUNTRY"], @fields["CURRENCY"], @fields["DEVICE"], @fields["CONTENT"], @fields["TYPE"], @fields["ALGORITHM"], @fields["DELIVERY_DATE"], @fields["FIRSTNAME"], @fields["FAMILYNAME"], @fields["ADDRESS"], @fields["POSTCODE"], @fields["POSTOFFICE"], @md5secret] fields = fields.join("+") Digest::MD5.hexdigest(fields).upcase end
md5secret(value)
click to toggle source
# File lib/offsite_payments/integrations/checkout_finland.rb, line 27 def md5secret(value) @md5secret = value end