class OffsitePayments::Integrations::Epay::Helper

def form_fields

def form_fields
  @fields.merge('hash' => generate_md5hash)
end

def format_order_number(number)

Limited to 20 digits max
def format_order_number(number)
  number.to_s.gsub(/[^\w_]/, '').rjust(4, "0")[0...20]
end

def generate_md5hash

def generate_md5hash
  Digest::MD5.hexdigest(generate_md5string)
end

def generate_md5string

def generate_md5string
  @fields.sort.each.map { |key, value| key != 'hash' ? value.to_s : ''} * "" + @md5secret
end

def initialize(order, merchantnumber, options = {})

def initialize(order, merchantnumber, options = {})
  super
  add_field('windowstate', 3)
  add_field('language', '0')
  add_field('orderid', format_order_number(order))
  @fields = Hash[@fields.sort]
end

def md5secret(value)

def md5secret(value)
  @md5secret = value
end