Class | ActiveMerchant::Billing::Gateway
In: | lib/active_merchant/billing/gateway.rb
Parent: | Object

## Description

The Gateway class is the base class for all ActiveMerchant gateway implementations.

The standard list of gateway functions that most concrete gateway subclasses implement is:

- `purchase(money, creditcard, options = {})`
- `authorize(money, creditcard, options = {})`
- `capture(money, authorization, options = {})`
- `void(identification, options = {})`
- `credit(money, identification, options = {})`

Some gateways include features for recurring billing

- `recurring(money, creditcard, options = {})`

Some gateways also support features for storing credit cards:

- `store(creditcard, options = {})`
- `unstore(identification, options = {})`

### Gateway Options

The options hash consists of the following options:

- `:order_id` - The order number
- `:ip` - The IP address of the customer making the purchase
- `:customer` - The name, customer number, or other information that identifies the customer
- `:invoice` - The invoice number
- `:merchant` - The name or description of the merchant offering the product
- `:description` - A description of the transaction
- `:email` - The email address of the customer
- `:currency` - The currency of the transaction. Only important when you are using a currency that is not the default with a gateway that supports multiple currencies.
- `:billing_address` - A hash containing the billing address of the customer.
- `:shipping_address` - A hash containing the shipping address of the customer.

The `:billing_address`, and `:shipping_address` hashes can have the following keys:

- `:name` - The full name of the customer.
- `:company` - The company name of the customer.
- `:address1` - The primary street address of the customer.
- `:address2` - Additional line of address information.
- `:city` - The city of the customer.
- `:state` - The state of the customer. The 2 digit code for US and Canadian addresses. The full name of the state or province for foreign addresses.
- `:country` - The [ISO 3166-1-alpha-2 code](www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm) for the customer.
- `:zip` - The zip or postal code of the customer.
- `:phone` - The phone number of the customer.

## Implmenting new gateways

See the ActiveMerchant Guide to Contributing

### Methods

card_brand card_brand inherited new supports? test?

### Included Modules

PostsData RequiresParameters CreditCardFormatting Utils

### Constants

DEBIT_CARDS | = | [ :switch, :solo ]

### Attributes

options | [R] |

### Public Class methods

card_brand(source)
inherited(subclass)
new(options = {})

Initialize a new gateway.

See the documentation for the gateway you will be using to make sure there are no other required options.

supports?(card_type)

Use this method to check if your gateway of interest supports a credit card of some type

### Public Instance methods

card_brand(source)
test?()

Are we running in test mode?

[Validate]