class OmniKassa::Request

Constants

INTERFACE_VERSION

OmniKassa requirement, doesn’t do anything

KEY_VERSION

OmniKassa requirement, doesn’t do anything

OPTIONAL
REQUIRED

Public Class Methods

new() click to toggle source
# File lib/omni_kassa/request.rb, line 17
def initialize
  self.key_version = KEY_VERSION

  # Load default settings into the request
  OmniKassa.request_settings.each do |key, value|
    send key.to_s + '=', value
  end
end

Public Instance Methods

perform() click to toggle source
# File lib/omni_kassa/request.rb, line 33
def perform
  HTTParty.post(OmniKassa.url, query: query).body
end
query() click to toggle source
# File lib/omni_kassa/request.rb, line 41
def query
  {
    InterfaceVersion: INTERFACE_VERSION,
    Data: data,
    Seal: seal
  }
end
transaction_reference() click to toggle source
# File lib/omni_kassa/request.rb, line 37
def transaction_reference
  @transaction_reference.call(order_id)
end
valid?() click to toggle source
# File lib/omni_kassa/request.rb, line 26
def valid?
  REQUIRED.map do |attr|
    value = send attr
    return false if value.nil?
  end
end

Protected Instance Methods

data() click to toggle source
# File lib/omni_kassa/request.rb, line 51
def data
  data_hash.to_a.map {|a| a.join('=') }.join('|')
end
data_hash() click to toggle source
# File lib/omni_kassa/request.rb, line 55
def data_hash
  REQUIRED.each do |param|
    value = send param
    raise RequestError, "attribute '#{param}' missing" if value.nil?
  end
  [OPTIONAL, REQUIRED].flatten.map do |param|
    value = send param
    [param.to_s.camelcase(:lower), value]
  end
end
seal() click to toggle source
# File lib/omni_kassa/request.rb, line 66
def seal
  Digest::SHA2.new.update data + OmniKassa.secret_key
end