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