class Risepays
Attributes
Password[RW]
RespMSG[RW]
UserName[RW]
defFileds[RW]
formData[RW]
info[RW]
resp[RW]
url[RW]
Public Class Methods
new(user,pass)
click to toggle source
# File lib/risepays.rb, line 35 def initialize(user,pass) @UserName = user; @Password = pass; @defFileds = ['TransType', 'NameOnCard','CardNum','ExpDate','Amount','CVNum','InvNum', 'Zip','Street', 'MagData', 'Amount','PNRef']; @formData = []; @url ="https://gateway1.risepay.com/ws/transact.asmx/ProcessCreditCard" @amountFields = ['Amount', 'TipAmt', 'TaxAmt']; @resp = '' end
Public Instance Methods
amountConvert(num)
click to toggle source
# File lib/risepays.rb, line 62 def amountConvert(num) amount = '%.2f' % num return amount end
auth(opt = null)
click to toggle source
# File lib/risepays.rb, line 82 def auth(opt = null) if opt @formData = opt end @formData["TransType"]="Auth" return prepare() end
capture(opt = null)
click to toggle source
# File lib/risepays.rb, line 121 def capture(opt = null) if opt @formData = opt end @formData["TransType"]="Force" return prepare() end
convert_response(obj)
click to toggle source
# File lib/risepays.rb, line 175 def convert_response(obj) @resp = obj @resp['Approved'] = false #Add Approved Value if(@resp['Result'] == "0") @resp['Approved']= true #ConvertExtData #Split plain data and XML into @matches hash matches = @resp['ExtData'] matches = matches.match(/([,=0-9a-zA-Z]*)(\<.*\>)?/) @str = matches[1] #Process plain text coma separated keypairs @str.split(",").each do |f| arr = f.split('='); arr[1] && (@resp[arr[0]] = arr[1]) end #Process XML Part if(matches.length == 2) @xmldata = Hash.from_xml(matches[2]) if @xmldata for x in @xmldata @resp[x] = @xmldata[x] end end end end @jsonlist = ['xmlns:xsd', 'xmlns:xsi', 'xmlns', 'ExtData'] @jsonlist.each do |j| @resp.delete(j) end if(!@resp['Message']) @resp['Message'] = ""; end if(@resp['RespMSG']) @resp['Message'] = @resp['Message'] + " " + @resp['RespMSG']; end return @resp end
getDefFileds()
click to toggle source
# File lib/risepays.rb, line 57 def getDefFileds return @defFileds end
get_gateway_url()
click to toggle source
# File lib/risepays.rb, line 48 def get_gateway_url() return @url end
post(opts)
click to toggle source
# File lib/risepays.rb, line 229 def post(opts) begin uri = URI.parse(@url) http = Net::HTTP.new(uri.host, uri.port) http.read_timeout = 120 http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.use_ssl = (uri.scheme == "https") request = Net::HTTP::Post.new(uri.request_uri) request.set_form_data(opts); response = http.request(request) xml= response.body session = Hash.from_xml(xml) res = session['Response'] if (stringStartsWith(xml, "<?xml")) convert_response(res); else @resp['Result'] = -999 @resp['Message'] = "Gateway error" + xml return @resp end return @resp rescue Exception => e @resp['Result'] = -999 @resp['Message'] = "Gateway error" + xml return @resp end end
prepare()
click to toggle source
# File lib/risepays.rb, line 137 def prepare() @data = {}; @data["UserName"] = @UserName @data["Password"] = @Password @data["ExtData"] = '' #fix amounts @amountFields.each do |f| @amountFields[2] = '' if @formData[f] @formData[f] = amountConvert(@formData[f]) end end #Construct ExtData @formData.each do |f , value| if !((@defFileds).include? f) @data['ExtData']<< "<#{f}>#{value}</#{f}>"; @formData.delete(f) else @data[f] = value; end end # set defaults fields @defFileds.each do |f| if @data[f] == nil @data[f] = ''; end end return post(@data) end
returnTrans(opt = null)
click to toggle source
# File lib/risepays.rb, line 95 def returnTrans(opt = null) if opt @formData = opt end @formData["TransType"]="Return" return prepare() end
sale(opt = null)
click to toggle source
# File lib/risepays.rb, line 68 def sale(opt = null) if opt @formData = opt end @formData["TransType"]="Sale" return prepare() end
set_gateway_url(url)
click to toggle source
# File lib/risepays.rb, line 53 def set_gateway_url(url) @url = url end
stringStartsWith(haystack, needle)
click to toggle source
# File lib/risepays.rb, line 133 def stringStartsWith(haystack, needle) return haystack.index(needle) === 0 end
void(opt = null)
click to toggle source
# File lib/risepays.rb, line 108 def void(opt = null) if opt @formData = opt end @formData["TransType"]="Void" return prepare() end