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
- Check whether the transaction was successful
response.success?
- Retrieve the message returned by PayJunction
response.message
- Retrieve the unique transaction ID returned by PayGateXML
response.authorization
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) = 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? [:test] || (Base.gateway_mode == :test) end |