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.



133
134
135
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 133

def initialize(response)
  @response = response
end

Instance Method Details

#find(doc, xpath) ⇒ Object



165
166
167
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 165

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

#parseObject



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/active_merchant/billing/gateways/barclays_epdq.rb', line 137

def parse
  doc = REXML::Document.new(@response)
  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,
    :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