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