Class | ActiveMerchant::Billing::AuthorizeNetGateway
In: | lib/active_merchant/billing/gateways/authorize_net.rb
Parent: | Gateway

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

#### Automated Recurring Billing (ARB)

Automated Recurring Billing (ARB) is an optional service for submitting and managing recurring, or subscription-based, transactions.

To use recurring, update_recurring, and cancel_recurring ARB must be enabled for your account.

Information about ARB is available on the Authorize.Net website. Information about the ARB API is available at the Authorize.Net Integration Center

### Methods

authorize cancel_recurring capture credit new purchase recurring update_recurring void

### Constants

API_VERSION | = | '3.1'
FRAUD_REVIEW | = | 1, 2, 3, 4
RESPONSE_REASON_TEXT | = | 0, 2, 3
CARD_CODE_RESPONSE_CODE | = | 5, 6, 38
CARD_CODE_ERRORS | = | %w( N S )
AVS_ERRORS | = | %w( A E N R W Z )
AUTHORIZE_NET_ARB_NAMESPACE | = | 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'
RECURRING_ACTIONS | = | { :create => 'ARBCreateSubscription', :update => 'ARBUpdateSubscription', :cancel => 'ARBCancelSubscription'

### Public Class methods

new(options = {})

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)
- `:test` — `true` or `false`. If true, perform transactions against the test server. Otherwise, perform transactions against the production server.

### Public Instance methods

authorize(money, creditcard, options = {})

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. Either an Integer value in cents or a Money object.
- `creditcard` — The CreditCard details for the transaction.
- `options` — A hash of optional parameters.

cancel_recurring(subscription_id)

Cancel a recurring payment.

This transaction cancels an existing Automated Recurring Billing (ARB) subscription. Your account must have ARB enabled and the subscription must have already been created previously by calling recurring()

#### Parameters

- `subscription_id` — A string containing the `subscription_id` of the recurring payment already in place for a given credit card. (REQUIRED)

capture(money, authorization, options = {})

Captures the funds from an authorized transaction.

#### Parameters

- `money` — The amount to be captured. Either an Integer value in cents or a Money object.
- `authorization` — The authorization returned from the previous authorize request.

credit(money, identification, options = {})

Credit an account.

This transaction is also referred to as a Refund and indicates to the gateway that money should flow from the merchant to the customer.

#### Parameters

- `money` — The amount to be credited to the customer. Either an Integer value in cents or a Money object.
- `identification` — The ID of the original transaction against which the credit is being issued.
- `options` — A hash of parameters.

#### Options

- `:card_number` — The credit card number the credit is being issued to. (REQUIRED)

purchase(money, creditcard, options = {})

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

#### Parameters

- `money` — The amount to be purchased. Either an Integer value in cents or a Money object.
- `creditcard` — The CreditCard details for the transaction.
- `options` — A hash of optional parameters.

recurring(money, creditcard, options={})

Create a recurring payment.

This transaction creates a new Automated Recurring Billing (ARB) subscription. Your account must have ARB enabled.

#### Parameters

- `money` — The amount to be charged to the customer at each interval. Either an Integer value in cents or a Money object.
- `creditcard` — The CreditCard details for the transaction.
- `options` — A hash of parameters.

#### Options

- `:interval` — A hash containing information about the interval of time between payments. Must contain the keys `:length` and `:unit`. `:unit` can be either `:months` or `:days`. If `:unit` is `:months` then `:interval` must be an integer between 1 and 12 inclusive. If `:unit` is `:days` then `:interval` must be an integer between 7 and 365 inclusive. For example, to charge the customer once every three months the hash would be +{ :unit => :months, :interval => 3 }+ (REQUIRED)
- `:duration` — A hash containing keys for the `:start_date` the subscription begins (also the date the initial billing occurs) and the total number of billing `:occurences` or payments for the subscription. (REQUIRED)

update_recurring(options={})

Update a recurring payment‘s details.

This transaction updates an existing Automated Recurring Billing (ARB) subscription. Your account must have ARB enabled and the subscription must have already been created previously by calling +recurring()+. The ability to change certain details about a recurring payment is dependent on transaction history and cannot be determined until after calling +update_recurring()+. See the ARB XML Guide for such conditions.

#### Parameters

- `options` — A hash of parameters.

#### Options

- `:subscription_id` — A string containing the `:subscription_id` of the recurring payment already in place for a given credit card. (REQUIRED)

void(authorization, options = {})

Void a previous transaction

#### Parameters

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

[Validate]