class Oschadbank::ParamsBuilder

Constants

REQUEST_PARAMS

Public Class Methods

new(client, request_type, params) click to toggle source
# File lib/oschadbank/params_builder.rb, line 16
def initialize(client, request_type, params)
  @client = client
  @request_type = request_type
  @params = params
end

Public Instance Methods

build() click to toggle source
# File lib/oschadbank/params_builder.rb, line 22
def build
  result = {
    'TRTYPE' => tr_type,
    'TERMINAL' => @client.terminal_id.to_s,
    'MERCHANT' => @client.merchant_id.to_s,
    'MERCH_NAME' => @client.merchant_name.to_s,
    'MERCH_URL' => @client.merchant_url.to_s,
    'MERCH_GMT' => @client.merchant_gmt.to_s,
    'COUNTRY' => @client.country_code.to_s,
    'EMAIL' => @client.email.to_s,
    'TIMESTAMP' => timestamp,
    'NONCE' => nonce,
  }

  @params.each do |key, value|
    key = REQUEST_PARAMS[key] || key
    value = value.to_s
    value = value.encode('CP1251', 'UTF-8') if key == 'DESC'
    value = value.rjust(6, '0') if key == 'ORDER'
    value = '%.2f' % value if %w(AMOUNT ORG_AMOUNT).include?(key)
    result[key] = value
  end

  result.delete_if { |_k, v| v.empty? }

  result['P_SIGN'] = mac_signature(result)

  result
end

Private Instance Methods

mac_signature(params) click to toggle source
# File lib/oschadbank/params_builder.rb, line 70
def mac_signature(params)
  MacBuilder.new(@request_type, @client.mac_key, params).build
end
nonce() click to toggle source

Random HEX value, with length between 8 and 32

# File lib/oschadbank/params_builder.rb, line 63
def nonce
  min = 0xFFFFFFFF
  max = 0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  value = rand(max - min) + min
  value.to_s(16)
end
timestamp() click to toggle source
# File lib/oschadbank/params_builder.rb, line 58
def timestamp
  Time.now.gmtime.strftime('%Y%m%d%H%M%S')
end
tr_type() click to toggle source
# File lib/oschadbank/params_builder.rb, line 54
def tr_type
  TR_TYPE[@request_type] || raise(InvalidRequestType)
end