Class: ActiveMerchant::Billing::BarclaysEpdqGateway::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/active_merchant/billing/gateways/barclays_epdq.rb

Instance Method Summary collapse

Constructor Details

#initialize(response) ⇒ Parser

Returns a new instance of Parser.



128
129
130
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 128

def initialize(response)
  @response = response
end

Instance Method Details

#find(doc, xpath) ⇒ Object



160
161
162
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 160

def find(doc, xpath)
  REXML::XPath.first(doc, xpath).try(:text)
end

#parseObject



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 132

def parse
  doc = REXML::Document.new(@response)
  auth_type = find(doc, "//Transaction/Type").to_sym

  message = find(doc, "//Message/Text")
  if message.blank?
    message = find(doc, "//Transaction/CardProcResp/CcReturnMsg")
  end

  case auth_type.to_sym
  when :Credit, :Void
    success = find(doc, "//CcReturnMsg") == "Approved."
  else
    success = find(doc, "//Transaction/AuthCode").present?
  end

  {       
    :success => success,
    :message => message,
    :authorization =>
      [find(doc, "//OrderFormDoc/Id"), find(doc, "//Transaction/Id")].join(":"),
    :avs_result => find(doc, "//Transaction/AvsRespCode"),
    :cvv_result => find(doc, "//Transaction/Cvv2Resp"),
    :order_id => find(doc, "//OrderFormDoc/Transaction/Id"),
    :raw_response => @response
  }
end