class ActiveMerchant::Billing::MaxipagoGateway
Constants
- API_VERSION
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
ActiveMerchant::Billing::Gateway::new
# File lib/active_merchant/billing/gateways/maxipago.rb, line 18 def initialize(options = {}) requires!(options, :login, :password) super end
Public Instance Methods
capture(money, authorization, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 35 def capture(money, authorization, options = {}) commit(:capture) do |xml| add_order_id(xml, authorization) add_reference_num(xml, options) xml.payment do add_amount(xml, money, options) end end end
purchase(money, creditcard, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 23 def purchase(money, creditcard, options = {}) commit(:sale) do |xml| add_auth_purchase(xml, money, creditcard, options) end end
refund(money, authorization, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 52 def refund(money, authorization, options = {}) commit(:return) do |xml| add_order_id(xml, authorization) add_reference_num(xml, options) xml.payment do add_amount(xml, money, options) end end end
scrub(transcript)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 73 def scrub(transcript) transcript. gsub(%r((<merchantKey>)[^<]*(</merchantKey>))i, '\1[FILTERED]\2'). gsub(%r((<number>)[^<]*(</number>))i, '\1[FILTERED]\2'). gsub(%r((<cvvNumber>)[^<]*(</cvvNumber>))i, '\1[FILTERED]\2') end
supports_scrubbing?()
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 69 def supports_scrubbing? true end
verify(creditcard, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 62 def verify(creditcard, options = {}) MultiResponse.run(:use_first_response) do |r| r.process { authorize(100, creditcard, options) } r.process(:ignore_result) { void(r.authorization, options) } end end
void(authorization, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 45 def void(authorization, options = {}) _, transaction_id = split_authorization(authorization) commit(:void) do |xml| xml.transactionID transaction_id end end
Private Instance Methods
add_amount(xml, money, options)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 176 def add_amount(xml, money, options) xml.chargeTotal(amount(money)) xml.currencyCode(options[:currency] || currency(money) || default_currency) end
add_auth_purchase(xml, money, creditcard, options)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 151 def add_auth_purchase(xml, money, creditcard, options) add_processor_id(xml) xml.fraudCheck('N') add_reference_num(xml, options) xml.transactionDetail do xml.payType do xml.creditCard do xml.number(creditcard.number) xml.expMonth(creditcard.month) xml.expYear(creditcard.year) xml.cvvNumber(creditcard.verification_value) end end end xml.payment do add_amount(xml, money, options) add_installments(xml, options) end add_billing_address(xml, creditcard, options) end
add_billing_address(xml, creditcard, options)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 198 def add_billing_address(xml, creditcard, options) address = options[:billing_address] return unless address xml.billing do xml.name creditcard.name xml.address address[:address1] if address[:address1] xml.address2 address[:address2] if address[:address2] xml.city address[:city] if address[:city] xml.state address[:state] if address[:state] xml.postalcode address[:zip] if address[:zip] xml.country address[:country] if address[:country] xml.phone address[:phone] if address[:phone] end end
add_installments(xml, options)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 189 def add_installments(xml, options) if options.has_key?(:installments) && options[:installments] > 1 xml.creditInstallment do xml.numberOfInstallments options[:installments] xml.chargeInterest 'N' end end end
add_order_id(xml, authorization)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 214 def add_order_id(xml, authorization) order_id, _ = split_authorization(authorization) xml.orderID order_id end
add_processor_id(xml)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 181 def add_processor_id(xml) if test? xml.processorID(1) else xml.processorID(@options[:processor_id] || 4) end end
add_reference_num(xml, options)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 172 def add_reference_num(xml, options) xml.referenceNum(options[:order_id] || generate_unique_id) end
build_xml_request(action) { |xml| ... }
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 99 def build_xml_request(action) builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') builder.send('transaction-request') do |xml| xml.version '3.1.1.15' xml.verification do xml.merchantId @options[:login] xml.merchantKey @options[:password] end xml.order do xml.send("#{action}!") do yield(xml) end end end builder.to_xml(indent: 2) end
commit(action) { |doc| ... }
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 82 def commit(action) request = build_xml_request(action) { |doc| yield(doc) } response = parse(ssl_post(url, request, 'Content-Type' => 'text/xml')) Response.new( success?(response), message_from(response), response, test: test?, authorization: authorization_from(response) ) end
message_from(response)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 121 def message_from(response) response[:error_message] || response[:response_message] || response[:processor_message] || response[:error_msg] end
parse(body)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 133 def parse(body) xml = REXML::Document.new(body) response = {} xml.root.elements.to_a.each do |node| parse_element(response, node) end response end
parse_element(response, node)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 143 def parse_element(response, node) if node.has_elements? node.elements.each { |element| parse_element(response, element) } else response[node.name.underscore.to_sym] = node.text end end
success?(response)
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 117 def success?(response) response[:response_code] == '0' end
url()
click to toggle source
# File lib/active_merchant/billing/gateways/maxipago.rb, line 95 def url test? ? self.test_url : self.live_url end