class Payeezy::Transactions
Public Class Methods
new(options = {})
click to toggle source
# File lib/payeezy.rb, line 11 def initialize(options = {}) @url = options[:url] @apikey = options[:apikey] @apisecret = options[:apisecret] @token = options[:token] end
Public Instance Methods
bin_to_hex(s)
click to toggle source
# File lib/payeezy.rb, line 28 def bin_to_hex(s) s.unpack('H*').first end
call_rest(url, data, headers)
click to toggle source
# File lib/payeezy.rb, line 55 def call_rest(url, data, headers) rest_resource = RestClient::Resource.new(url) raw_response = response = {} begin raw_response = rest_resource.post data, headers response = parse(raw_response) rescue => e raw_response = e.response response = response_error(raw_response) rescue JSON::ParserError response = json_error(raw_response) end response end
commit(action, params)
click to toggle source
# File lib/payeezy.rb, line 45 def commit(action, params) url = @url if action == :capture || action == :void || action == :refund || action == :split url = url + '/' + params[:transaction_id] params.delete(:transaction_id) end params[:transaction_type] = action call_rest(url, post_data(params), headers(post_data(params))) end
generate_hmac(nonce, current_timestamp, payload)
click to toggle source
# File lib/payeezy.rb, line 22 def generate_hmac(nonce, current_timestamp, payload) message = @apikey + nonce.to_s + current_timestamp.to_s + @token + payload hash = Base64.strict_encode64(bin_to_hex(OpenSSL::HMAC.digest('sha256', @apisecret, message))) hash end
handle_message(response, success)
click to toggle source
# File lib/payeezy.rb, line 71 def handle_message(response, success) if success response['transaction_status'] elsif response.key?('Error') response['Error'].map { |_, messages| messages }.join('. ') else response.inspect end end
headers(payload)
click to toggle source
# File lib/payeezy.rb, line 32 def headers(payload) nonce = (SecureRandom.random_number *10000000000) current_timestamp = (Time.now.to_f*1000).to_i { 'Content-Type' => 'application/json', 'apikey' => @apikey, 'token' => @token, 'nonce' => nonce, 'timestamp' => current_timestamp, 'Authorization' => generate_hmac(nonce, current_timestamp, payload) } end
json_error(raw_response)
click to toggle source
# File lib/payeezy.rb, line 97 def json_error(raw_response) msg = "Payeezy has returned an invalid response: [#{raw_response.inspect}]" { 'Error' => { 'messages' => msg } } end
parse(body)
click to toggle source
# File lib/payeezy.rb, line 89 def parse(body) JSON.parse(body) end
post_data(params)
click to toggle source
# File lib/payeezy.rb, line 93 def post_data(params) params.to_json end
response_error(raw_response)
click to toggle source
# File lib/payeezy.rb, line 81 def response_error(raw_response) begin parse(raw_response) rescue JSON::ParserError json_error(raw_response) end end
transact(action, payload)
click to toggle source
# File lib/payeezy.rb, line 18 def transact(action, payload) commit(action, payload) end