Class: ActiveMerchant::Billing::PayGateXmlGateway
- Defined in:
- lib/active_merchant/billing/gateways/pay_gate_xml.rb
Overview
This gateway accepts the following arguments:
:login => your PayJunction username
:password => your PayJunction pass
Example use:
gateway = ActiveMerchant::Billing::Base.gateway(:pay_gate_xml).new(
:login => "my_account",
:password => "my_pass"
)
# set up credit card obj as in main ActiveMerchant example
creditcard = ActiveMerchant::Billing::CreditCard.new(
:type => 'visa',
:number => '4242424242424242',
:month => 8,
:year => 2009,
:first_name => 'Bob',
:last_name => 'Bobsen'
)
# run request
response = gateway.purchase(1000, creditcard) # charge 10 dollars
1) Check whether the transaction was successful
response.success?
2) Retrieve the message returned by PayJunction
response.
3) Retrieve the unique transaction ID returned by PayGateXML
response.
This gateway has many other features which are not implemented here yet The basic setup here only supports auth/capture transactions.
Test Transactions
PayGateXML has a global test user/pass, but you can also sign up for your own. The class and the test come equipped with the global test creds
Usage Details
Below is a map of only SOME of the values accepted by PayGateXML and how you should submit each to ActiveMerchant
PayGateXML Field ActiveMerchant Use
pgid use :login value to gateway instantation pwd use :password value to gateway instantiation
cname credit_card.name cc credit_card.number exp credit_card values formatted to YYYYMMDD budp South Africa only - set to 0 if purchase is not on budget amt include as argument to method for your transaction type ver do nothing, always set to current API version
cref provide as :invoice in options, varchar(80) cur 3 char field, currently only ZAR cvv credit_card.verification bno batch processing number, i.e. you supply this
others – not used in this implementation nurl, rurl - must remain blank or absent or they will use an alternative authentication mechanism email, ip - must remain blank or absent or they will use a PayGate extra service call PayProtector threed - must remain blank unless you are using your own 3D Secure server
Constant Summary collapse
- TEST_ID_3DSECURE =
PayGateXML public test account - you can get a private one too
'10011013800'
- TEST_ID =
'10011021600'
- TEST_PWD =
'test'
- API_VERSION =
'4.0'
- DECLINE_CODES =
{ # Credit Card Errors - These RESULT_CODEs are returned if the transaction cannot be authorized due to a problem with the card. The TRANSACTION_STATUS will be 2 900001 => "Call for Approval", 900002 => "Card Expired", 900003 => "Insufficient Funds", 900004 => "Invalid Card Number", 900005 => "Bank Interface Timeout", # indicates a communications failure between the banks systems 900006 => "Invalid Card", 900007 => "Declined", 900009 => "Lost Card", 900010 => "Invalid Card Length", 900011 => "Suspected Fraud", 900012 => "Card Reported As Stolen", 900013 => "Restricted Card", 900014 => "Excessive Card Usage", 900015 => "Card Blacklisted", 900207 => "Declined; authentication failed", # indicates the cardholder did not enter their MasterCard SecureCode / Verified by Visa password correctly 990020 => "Auth Declined", 991001 => "Invalid expiry date", 991002 => "Invalid amount", # Communication Errors - These RESULT_CODEs are returned if the transaction cannot be completed due to an unexpected error. TRANSACTION_STATUS will be 0. 900205 => "Unexpected authentication result (phase 1)", 900206 => "Unexpected authentication result (phase 1)", 990001 => "Could not insert into Database", 990022 => "Bank not available", 990053 => "Error processing transaction", # Miscellaneous - Unless otherwise noted, the TRANSACTION_STATUS will be 0. 900209 => "Transaction verification failed (phase 2)", # Indicates the verification data returned from MasterCard SecureCode / Verified by Visa has been altered 900210 => "Authentication complete; transaction must be restarted", # Indicates that the MasterCard SecuerCode / Verified by Visa transaction has already been completed. Most likely caused by the customer clicking the refresh button 990024 => "Duplicate Transaction Detected. Please check before submitting", 990028 => "Transaction cancelled" # Customer clicks the 'Cancel' button on the payment page }
- SUCCESS_CODES =
%w( 990004 990005 990017 990012 990018 990031 )
- TRANSACTION_CODES =
{ 0 => 'Not Done', 1 => 'Approved', 2 => 'Declined', 3 => 'Paid', 4 => 'Refunded', 5 => 'Received by PayGate', 6 => 'Replied to Client' }
Constants inherited from Gateway
Gateway::CREDIT_DEPRECATION_MESSAGE, Gateway::CURRENCIES_WITHOUT_FRACTIONS, Gateway::DEBIT_CARDS
Instance Attribute Summary
Attributes inherited from Gateway
Instance Method Summary collapse
- #authorize(money, creditcard, options = {}) ⇒ Object
- #capture(money, authorization, options = {}) ⇒ Object
-
#initialize(options = {}) ⇒ PayGateXmlGateway
constructor
A new instance of PayGateXmlGateway.
- #purchase(money, creditcard, options = {}) ⇒ Object
- #test? ⇒ Boolean
Methods inherited from Gateway
#card_brand, card_brand, inherited, supports?
Methods included from CreditCardFormatting
Constructor Details
#initialize(options = {}) ⇒ PayGateXmlGateway
Returns a new instance of PayGateXmlGateway.
158 159 160 161 162 |
# File 'lib/active_merchant/billing/gateways/pay_gate_xml.rb', line 158 def initialize( = {}) requires!(, :login, :password) @options = super end |
Instance Method Details
#authorize(money, creditcard, options = {}) ⇒ Object
171 172 173 174 175 176 |
# File 'lib/active_merchant/billing/gateways/pay_gate_xml.rb', line 171 def (money, creditcard, = {}) action = 'authtx' .merge!(:money => money, :creditcard => creditcard) commit(action, build_request(action, )) end |
#capture(money, authorization, options = {}) ⇒ Object
178 179 180 181 182 183 |
# File 'lib/active_merchant/billing/gateways/pay_gate_xml.rb', line 178 def capture(money, , = {}) action = 'settletx' .merge!(:money => money, :authorization => ) commit(action, build_request(action, )) end |
#purchase(money, creditcard, options = {}) ⇒ Object
164 165 166 167 168 169 |
# File 'lib/active_merchant/billing/gateways/pay_gate_xml.rb', line 164 def purchase(money, creditcard, = {}) MultiResponse.new.tap do |r| r.process{(money, creditcard, )} r.process{capture(money, r., )} end end |
#test? ⇒ Boolean
185 186 187 |
# File 'lib/active_merchant/billing/gateways/pay_gate_xml.rb', line 185 def test? @options[:test] || (Base.gateway_mode == :test) end |