class ActiveMerchant::Billing::EwayGateway
Public: For more information on the Eway Gateway
please visit their Developers Area
Constants
- MESSAGES
Public Class Methods
new(options = {})
click to toggle source
Public: Create a new Eway Gateway
. options - A hash of options:
:login - Your Customer ID. :password - Your XML Refund Password that you specified on the Eway site. (optional)
Calls superclass method
ActiveMerchant::Billing::Gateway::new
# File lib/active_merchant/billing/gateways/eway.rb, line 21 def initialize(options = {}) requires!(options, :login) super end
Public Instance Methods
purchase(money, creditcard, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 26 def purchase(money, creditcard, options = {}) requires_address!(options) post = {} add_creditcard(post, creditcard) add_address(post, options) add_customer_id(post) add_invoice_data(post, options) add_non_optional_data(post) add_amount(post, money) post[:CustomerEmail] = options[:email] commit(purchase_url(post[:CVN]), money, post) end
refund(money, authorization, options = {})
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 41 def refund(money, authorization, options = {}) post = {} add_customer_id(post) add_amount(post, money) add_non_optional_data(post) post[:OriginalTrxnNumber] = authorization post[:RefundPassword] = @options[:password] post[:CardExpiryMonth] = nil post[:CardExpiryYear] = nil commit(refund_url, money, post) end
scrub(transcript)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 59 def scrub(transcript) transcript. gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]'). gsub(%r((<ewayCardNumber>)\d+(</ewayCardNumber>))i, '\1[FILTERED]\2'). gsub(%r((<ewayCVN>)\d+(</ewayCVN>))i, '\1[FILTERED]\2') end
supports_scrubbing()
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 55 def supports_scrubbing true end
Private Instance Methods
add_address(post, options)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 83 def add_address(post, options) if address = options[:billing_address] || options[:address] post[:CustomerAddress] = [address[:address1], address[:address2], address[:city], address[:state], address[:country]].compact.join(', ') post[:CustomerPostcode] = address[:zip] end end
add_amount(post, money)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 99 def add_amount(post, money) post[:TotalAmount] = amount(money) end
add_creditcard(post, creditcard)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 72 def add_creditcard(post, creditcard) post[:CardNumber] = creditcard.number post[:CardExpiryMonth] = sprintf('%.2i', creditcard.month) post[:CardExpiryYear] = sprintf('%.4i', creditcard.year)[-2..-1] post[:CustomerFirstName] = creditcard.first_name post[:CustomerLastName] = creditcard.last_name post[:CardHoldersName] = creditcard.name post[:CVN] = creditcard.verification_value if creditcard.verification_value? end
add_customer_id(post)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 90 def add_customer_id(post) post[:CustomerID] = @options[:login] end
add_invoice_data(post, options)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 94 def add_invoice_data(post, options) post[:CustomerInvoiceRef] = options[:order_id] post[:CustomerInvoiceDescription] = options[:description] end
add_non_optional_data(post)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 103 def add_non_optional_data(post) post[:Option1] = nil post[:Option2] = nil post[:Option3] = nil post[:TrxnNumber] = nil end
commit(url, money, parameters)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 110 def commit(url, money, parameters) raw_response = ssl_post(url, post_data(parameters)) response = parse(raw_response) Response.new( success?(response), message_from(response[:ewaytrxnerror]), response, authorization: response[:ewaytrxnnumber], test: test? ) end
message_from(message)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 147 def message_from(message) return '' if message.blank? MESSAGES[message[0, 2]] || message end
parse(xml)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 127 def parse(xml) response = {} xml = REXML::Document.new(xml) xml.elements.each('//ewayResponse/*') do |node| response[node.name.downcase.to_sym] = normalize(node.text) end unless xml.root.nil? response end
post_data(parameters = {})
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 137 def post_data(parameters = {}) xml = REXML::Document.new root = xml.add_element('ewaygateway') parameters.each do |key, value| root.add_element("eway#{key}").text = value end xml.to_s end
purchase_url(cvn)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 153 def purchase_url(cvn) suffix = test? ? 'xmltest/testpage.asp' : 'xmlpayment.asp' gateway_part = cvn ? 'gateway_cvn' : 'gateway' "#{live_url}/#{gateway_part}/#{suffix}" end
refund_url()
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 159 def refund_url suffix = test? ? 'xmltest/refund_test.asp' : 'xmlpaymentrefund.asp' "#{live_url}/gateway/#{suffix}" end
requires_address!(options)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 68 def requires_address!(options) raise ArgumentError.new('Missing eWay required parameters: address or billing_address') unless options.has_key?(:address) || options.has_key?(:billing_address) end
success?(response)
click to toggle source
# File lib/active_merchant/billing/gateways/eway.rb, line 123 def success?(response) response[:ewaytrxnstatus] == 'True' end