Class: ActiveMerchant::Billing::AuthorizeNetGateway

Inherits:
Gateway
  • Object
show all
Defined in:
lib/active_merchant/billing/gateways/authorize_net.rb

Overview

For more information on the Authorize.Net Gateway please visit their Integration Center

The login and password are not the username and password you use to login to the Authorize.Net Merchant Interface. Instead, you will use the API Login ID as the login and Transaction Key as the password.

How to Get Your API Login ID and Transaction Key

  1. Log into the Merchant Interface

  2. Select Settings from the Main Menu

  3. Click on API Login ID and Transaction Key in the Security section

  4. Type in the answer to the secret question configured on setup

  5. Click Submit

Direct Known Subclasses

NmiGateway, SecurePayGateway

Constant Summary collapse

API_VERSION =
'3.1'
CARD_CODE_ERRORS =
%w( N S )
AVS_ERRORS =
%w( A E N R W Z )
AVS_REASON_CODES =
%w(27 45)
TRANSACTION_ALREADY_ACTIONED =
%w(310 311)

Constants inherited from Gateway

Gateway::CREDIT_DEPRECATION_MESSAGE, Gateway::CURRENCIES_WITHOUT_FRACTIONS, Gateway::DEBIT_CARDS, Gateway::RECURRING_DEPRECATION_MESSAGE

Instance Attribute Summary

Attributes inherited from Gateway

#options

Instance Method Summary collapse

Methods inherited from Gateway

#card_brand, card_brand, #generate_unique_id, inherited, supported_countries, #supported_countries, supported_countries=, supports?, #test?

Methods included from CreditCardFormatting

#expdate, #format

Constructor Details

#initialize(options = {}) ⇒ AuthorizeNetGateway

Creates a new AuthorizeNetGateway

The gateway requires that a valid login and password be passed in the options hash.

Options

  • :login – The Authorize.Net API Login ID (REQUIRED)

  • :password – The Authorize.Net Transaction Key. (REQUIRED)

  • :testtrue or false. If true, perform transactions against the test server. Otherwise, perform transactions against the production server.



54
55
56
57
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 54

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

Instance Method Details

#authorize(money, paysource, options = {}) ⇒ Object

Performs an authorization, which reserves the funds on the customer’s credit card, but does not charge the card.

Parameters

  • money – The amount to be authorized as an Integer value in cents.

  • paysource – The CreditCard or Check details for the transaction.

  • options – A hash of optional parameters.



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 67

def authorize(money, paysource, options = {})
  post = {}
  add_currency_code(post, money, options)
  add_invoice(post, options)
  add_payment_source(post, paysource, options)
  add_address(post, options)
  add_customer_data(post, options)
  add_duplicate_window(post)

  commit('AUTH_ONLY', money, post)
end

#capture(money, authorization, options = {}) ⇒ Object

Captures the funds from an authorized transaction.

Parameters

  • money – The amount to be captured as an Integer value in cents.

  • authorization – The authorization returned from the previous authorize request.



104
105
106
107
108
109
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 104

def capture(money, authorization, options = {})
  post = {:trans_id => authorization}
  add_customer_data(post, options)
  add_invoice(post, options)
  commit('PRIOR_AUTH_CAPTURE', money, post)
end

#credit(money, identification, options = {}) ⇒ Object



157
158
159
160
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 157

def credit(money, identification, options = {})
  ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
  refund(money, identification, options)
end

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

Perform a purchase, which is essentially an authorization and capture in a single operation.

Parameters

  • money – The amount to be purchased as an Integer value in cents.

  • paysource – The CreditCard or Check details for the transaction.

  • options – A hash of optional parameters.



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 86

def purchase(money, paysource, options = {})
  post = {}
  add_currency_code(post, money, options)
  add_invoice(post, options)
  add_payment_source(post, paysource, options)
  add_address(post, options)
  add_customer_data(post, options)
  add_duplicate_window(post)

  commit('AUTH_CAPTURE', money, post)
end

#refund(money, identification, options = {}) ⇒ Object

Refund a transaction.

This transaction indicates to the gateway that money should flow from the merchant to the customer.

Parameters

  • money – The amount to be credited to the customer as an Integer value in cents.

  • identification – The ID of the original transaction against which the refund is being issued.

  • options – A hash of parameters.

Options

  • :card_number – The credit card number the refund is being issued to. (REQUIRED) You can either pass the last four digits of the card number or the full card number.

  • :first_name – The first name of the account being refunded.

  • :last_name – The last name of the account being refunded.

  • :zip – The postal code of the account being refunded.



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 140

def refund(money, identification, options = {})
  requires!(options, :card_number)

  post = { :trans_id => identification,
           :card_num => options[:card_number]
         }

  post[:first_name] = options[:first_name] if options[:first_name]
  post[:last_name] = options[:last_name] if options[:last_name]
  post[:zip] = options[:zip] if options[:zip]

  add_invoice(post, options)
  add_duplicate_window(post)

  commit('CREDIT', money, post)
end

#verify(credit_card, options = {}) ⇒ Object



162
163
164
165
166
167
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 162

def verify(credit_card, options = {})
  MultiResponse.run(:use_first_response) do |r|
    r.process { authorize(100, credit_card, options) }
    r.process(:ignore_result) { void(r.authorization, options) }
  end
end

#void(authorization, options = {}) ⇒ Object

Void a previous transaction

Parameters

  • authorization - The authorization returned from the previous authorize request.



116
117
118
119
120
# File 'lib/active_merchant/billing/gateways/authorize_net.rb', line 116

def void(authorization, options = {})
  post = {:trans_id => authorization}
  add_duplicate_window(post)
  commit('VOID', nil, post)
end