class ActiveMerchant::Billing::BarclaysEpdqGateway::Parser
Public Class Methods
new(response)
click to toggle source
# File lib/active_merchant/billing/gateways/barclays_epdq.rb, line 132 def initialize(response) @response = response end
Public Instance Methods
find(doc, xpath)
click to toggle source
# File lib/active_merchant/billing/gateways/barclays_epdq.rb, line 170 def find(doc, xpath) REXML::XPath.first(doc, xpath).try(:text) end
parse()
click to toggle source
# File lib/active_merchant/billing/gateways/barclays_epdq.rb, line 136 def parse require 'iconv' unless String.method_defined?(:encode) if String.method_defined?(:encode) doc = REXML::Document.new(@response.encode("UTF-8", "ISO-8859-1")) else ic = Iconv.new('UTF-8', 'ISO-8859-1') doc = REXML::Document.new(ic.iconv(@response)) end auth_type = find(doc, "//Transaction/Type").to_s message = find(doc, "//Message/Text") if message.blank? message = find(doc, "//Transaction/CardProcResp/CcReturnMsg") end case auth_type when 'Credit', 'Void' success = find(doc, "//CcReturnMsg") == "Approved." else success = find(doc, "//Transaction/AuthCode").present? end { :success => success, :message => message, :transaction_id => find(doc, "//Transaction/Id"), :avs_result => find(doc, "//Transaction/AvsRespCode"), :cvv_result => find(doc, "//Transaction/Cvv2Resp"), :authorization => find(doc, "//OrderFormDoc/Id"), :raw_response => @response } end