Class: AbtainBilling::Billing::Gateway

Inherits:
Object
  • Object
show all
Includes:
CreditCardFormatting, PostsData, RequiresParameters, Utils
Defined in:
lib/abtain_billing/billing/gateway.rb

Overview

Description

The Gateway class is the base class for all AbtainBilling 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 AbtainBilling Guide to Contributing

Constant Summary collapse

DEBIT_CARDS =
[ :switch, :solo ]
@@implementations =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utils

generate_unique_id

Methods included from CreditCardFormatting

#format

Methods included from RequiresParameters

#requires!

Methods included from PostsData

included, #ssl_get, #ssl_post

Constructor Details

#initialize(options = {}) ⇒ Gateway

Initialize a new gateway.

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



119
120
# File 'lib/abtain_billing/billing/gateway.rb', line 119

def initialize(options = {})
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



99
100
101
# File 'lib/abtain_billing/billing/gateway.rb', line 99

def options
  @options
end

Class Method Details

.card_brand(source) ⇒ Object



106
107
108
109
# File 'lib/abtain_billing/billing/gateway.rb', line 106

def self.card_brand(source)
  result = source.respond_to?(:brand) ? source.brand : source.type
  result.to_s.downcase
end

.inherited(subclass) ⇒ Object



69
70
71
72
# File 'lib/abtain_billing/billing/gateway.rb', line 69

def self.inherited(subclass)
  super
  @@implementations << subclass
end

.supports?(card_type) ⇒ Boolean

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

Returns:

  • (Boolean)


102
103
104
# File 'lib/abtain_billing/billing/gateway.rb', line 102

def self.supports?(card_type)
  supported_cardtypes.include?(card_type.to_sym)
end

Instance Method Details

#card_brand(source) ⇒ Object



111
112
113
# File 'lib/abtain_billing/billing/gateway.rb', line 111

def card_brand(source)
  self.class.card_brand(source)
end

#test?Boolean

Are we running in test mode?

Returns:

  • (Boolean)


123
124
125
# File 'lib/abtain_billing/billing/gateway.rb', line 123

def test?
  Base.gateway_mode == :test
end