require 'base64' require 'json' # :nodoc: module Veritrans # :nodoc: class VTDirect include Config @@attr = [:token_id, :order_id, :order_items, :gross_amount, :email, :shipping_address, :billing_address] # constructor to create instance of Veritrans::Client def initialize class < 'http://veritrans.dev/charges') parms = prepare_params([:server_key]+@@attr).to_json basic = Base64.encode64("#{server_key}:") conn = Faraday.new(:url => server_host) @resp = conn.post do |req| req.url('/charges') req.headers['Content-Type'] = 'application/json' req.headers['Authorization'] = "Basic #{basic}" req.body = parms end.env @data = @resp[:body] end # :nodoc: def server_host return VTDirect.config["server_host"] ? VTDirect.config["server_host"] : Config::SERVER_HOST end # :nodoc: def server_key return VTDirect.config["server_key"] end # :nodoc: def server_key= new_server_key VTDirect.config["server_key"] = new_server_key end private def prepare_params(*arg) params = {} arg.flatten.each do |key| value = self.send(key) params[key.downcase] = value if value end return params end end end