Class: MerbMerchant::Billing::EwayGateway

Inherits:
Gateway
  • Object
show all
Defined in:
lib/merb_merchant/billing/gateways/eway.rb

Overview

First, make sure you have everything setup correctly and all of your dependencies in place with:

require 'rubygems'
require 'merb_merchant'

MerbMerchant expects the amounts to be given as an Integer in cents. In this case, $10 US becomes 1000.

tendollar = 1000

Next, create a credit card object using a TC approved test card.

creditcard = MerbMerchant::Billing::CreditCard.new(
  :number => '4111111111111111',
  :month => 8,
  :year => 2006,
  :first_name => 'Longbob',
  :last_name => 'Longsen'
)
options = {
  :order_id => '1230123',
  :email => '[email protected]',
  :address => { :address1 => '47 Bobway',
                :city => 'Bobville', 
                :state => 'WA',
                :country => 'Australia',
                :zip => '2000'
              }
  :description => 'purchased items'
}

To finish setting up, create the merb_merchant object you will be using, with the eWay gateway. If you have a functional eWay account, replace :login with your account info.

gateway = MerbMerchant::Billing::Base.gateway(:eway).new(:login => '87654321')

Now we are ready to process our transaction

response = gateway.purchase(tendollar, creditcard, options)

Sending a transaction to TrustCommerce with merb_merchant returns a Response object, which consistently allows you to:

1) Check whether the transaction was successful

response.success?

2) Retrieve any message returned by eWay, either a “transaction was successful” note or an explanation of why the transaction was rejected.

response.message

3) Retrieve and store the unique transaction ID returned by eWway, for use in referencing the transaction in the future.

response.authorization

This should be enough to get you started with eWay and merb_merchant. For further information, review the methods below and the rest of merb_merchant’s documentation.

Constant Summary collapse

TEST_URL =
'https://www.eway.com.au/gateway/xmltest/testpage.asp'
LIVE_URL =
'https://www.eway.com.au/gateway/xmlpayment.asp'
TEST_CVN_URL =
'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp'
LIVE_CVN_URL =
'https://www.eway.com.au/gateway_cvn/xmlpayment.asp'
MESSAGES =
{
  "00" => "Transaction Approved",
  "01" => "Refer to Issuer",
  "02" => "Refer to Issuer, special",	
  "03" => "No Merchant",
  "04" => "Pick Up Card",	
  "05" => "Do Not Honour",	
  "06" => "Error",
  "07" => "Pick Up Card, Special",	
  "08" => "Honour With Identification",	
  "09" => "Request In Progress",
  "10" => "Approved For Partial Amount",	
  "11" => "Approved, VIP",	
  "12" => "Invalid Transaction",	
  "13" => "Invalid Amount",
  "14" => "Invalid Card Number",	
  "15" => "No Issuer",	
  "16" => "Approved, Update Track 3",	
  "19" => "Re-enter Last Transaction",	
  "21" => "No Action Taken",	
  "22" => "Suspected Malfunction",	
  "23" => "Unacceptable Transaction Fee",	
  "25" => "Unable to Locate Record On File",	
  "30" => "Format Error",	
  "31" => "Bank Not Supported By Switch",	
  "33" => "Expired Card, Capture",	
  "34" => "Suspected Fraud, Retain Card",	
  "35" => "Card Acceptor, Contact Acquirer, Retain Card",	
  "36" => "Restricted Card, Retain Card",	
  "37" => "Contact Acquirer Security Department, Retain Card",	
  "38" => "PIN Tries Exceeded, Capture",	
  "39" => "No Credit Account",	
  "40" => "Function Not Supported",	
  "41" => "Lost Card",	
  "42" => "No Universal Account",	
  "43" => "Stolen Card",	
  "44" => "No Investment Account",	
  "51" => "Insufficient Funds",	
  "52" => "No Cheque Account",	
  "53" => "No Savings Account",	
  "54" => "Expired Card",	
  "55" => "Incorrect PIN",	
  "56" => "No Card Record",	
  "57" => "Function Not Permitted to Cardholder",	
  "58" => "Function Not Permitted to Terminal",	
  "59" => "Suspected Fraud",	
  "60" => "Acceptor Contact Acquirer",	
  "61" => "Exceeds Withdrawal Limit",	
  "62" => "Restricted Card",	
  "63" => "Security Violation",	
  "64" => "Original Amount Incorrect",	
  "66" => "Acceptor Contact Acquirer, Security",	
  "67" => "Capture Card",	
  "75" => "PIN Tries Exceeded",	
  "82" => "CVV Validation Error",	
  "90" => "Cutoff In Progress",	
  "91" => "Card Issuer Unavailable",	
  "92" => "Unable To Route Transaction",	
  "93" => "Cannot Complete, Violation Of The Law",	
  "94" => "Duplicate Transaction",	
  "96" => "System Error"
}

Constants inherited from Gateway

Gateway::DEBIT_CARDS

Constants included from PostsData

PostsData::MAX_RETRIES, PostsData::OPEN_TIMEOUT, PostsData::READ_TIMEOUT

Instance Attribute Summary

Attributes inherited from Gateway

#options

Instance Method Summary collapse

Methods inherited from Gateway

#card_brand, card_brand, inherited, supports?, #test?

Methods included from Utils

generate_unique_id

Methods included from CreditCardFormatting

#format

Methods included from RequiresParameters

#requires!

Methods included from PostsData

included, #ssl_get, #ssl_post

Constructor Details

#initialize(options = {}) ⇒ EwayGateway

Returns a new instance of EwayGateway.



138
139
140
141
142
# File 'lib/merb_merchant/billing/gateways/eway.rb', line 138

def initialize(options = {})
   requires!(options, :login)
   @options = options
   super
end

Instance Method Details

#purchase(money, creditcard, options = {}) ⇒ Object

ewayCustomerEmail, ewayCustomerAddress, ewayCustomerPostcode



145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/merb_merchant/billing/gateways/eway.rb', line 145

def purchase(money, creditcard, options = {})
  requires!(options, :order_id)

  post = {}
  add_creditcard(post, creditcard)
  add_address(post, options)  
  add_customer_data(post, options)
  add_invoice_data(post, options)
  # The request fails if all of the fields aren't present
  add_optional_data(post)
    
  commit(money, post)
end