Class: ActiveMerchant::Billing::OgoneGateway

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

Overview

Ogone DirectLink Gateway

DirectLink is the API version of the Ogone Payment Platform. It allows server to server communication between Ogone systems and your e-commerce website.

This implementation follows the specification provided in the DirectLink integration guide version 4.2.0 (26 October 2011), available here: secure.ogone.com/ncol/Ogone_DirectLink_EN.pdf

It also features aliases, which allow to store/unstore credit cards, as specified in the Alias Manager Option guide version 3.2.0 (26 October 2011) available here: secure.ogone.com/ncol/Ogone_Alias_EN.pdf

It was last tested on Release 4.89 of Ogone DirectLink + AliasManager (26 October 2011).

For any questions or comments, please contact one of the following:

Usage

gateway = ActiveMerchant::Billing::OgoneGateway.new(
            :login                     => "my_ogone_psp_id",
            :user                      => "my_ogone_user_id",
            :password                  => "my_ogone_pswd",
            :signature                 => "my_ogone_sha_signature", # Only if you configured your Ogone environment so.
            :signature_encryptor       => "sha512", # Can be "sha1" (default), "sha256" or "sha512".
                                                    # Must be the same as the one configured in your Ogone account.
         )

# set up credit card object 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, :order_id => "1") # charge 10 EUR

If you don't provide an :order_id, the gateway will generate a random one for you.

puts response.success?      # Check whether the transaction was successful
puts response.message       # Retrieve the message returned by Ogone
puts response.authorization # Retrieve the unique transaction ID returned by Ogone

Alias feature

To use the alias feature, simply add :store in the options hash:

# Associate the alias to that credit card
gateway.purchase(1000, creditcard, :order_id => "1", :store => "myawesomecustomer")

# You can use the alias instead of the credit card for subsequent orders
gateway.purchase(2000, "myawesomecustomer", :order_id => "2")

Constant Summary collapse

URLS =
{
  :order       => 'https://secure.ogone.com/ncol/%s/orderdirect.asp',
  :maintenance => 'https://secure.ogone.com/ncol/%s/maintenancedirect.asp'
}
CVV_MAPPING =
{ 'OK' => 'M',
'KO' => 'N',
'NO' => 'P' }
AVS_MAPPING =
{ 'OK' => 'M',
'KO' => 'N',
'NO' => 'R' }
SUCCESS_MESSAGE =
"The transaction was successful"
OGONE_NO_SIGNATURE_DEPRECATION_MESSAGE =
"Signature usage will be required from a future release of ActiveMerchant's Ogone Gateway. Please update your Ogone account to use it."
OGONE_LOW_ENCRYPTION_DEPRECATION_MESSAGE =
"SHA512 signature encryptor will be required from a future release of ActiveMerchant's Ogone Gateway. Please update your Ogone account to use it."

Constants inherited from Gateway

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

Instance Attribute Summary

Attributes inherited from Gateway

#options

Instance Method Summary collapse

Methods inherited from Gateway

#card_brand, card_brand, inherited, supports?

Methods included from CreditCardFormatting

#format

Constructor Details

#initialize(options = {}) ⇒ OgoneGateway

Returns a new instance of OgoneGateway.



94
95
96
97
98
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 94

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

Instance Method Details

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

Verify and reserve the specified amount on the account, without actually doing the transaction.



101
102
103
104
105
106
107
108
109
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 101

def authorize(money, payment_source, options = {})
  post = {}
  add_invoice(post, options)
  add_payment_source(post, payment_source, options)
  add_address(post, payment_source, options)
  add_customer_data(post, options)
  add_money(post, money, options)
  commit('RES', post)
end

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

Complete a previously authorized transaction.



123
124
125
126
127
128
129
130
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 123

def capture(money, authorization, options = {})
  post = {}
  add_authorization(post, reference_from(authorization))
  add_invoice(post, options)
  add_customer_data(post, options)
  add_money(post, money, options)
  commit('SAL', post)
end

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

Credit the specified account by a specific amount.



140
141
142
143
144
145
146
147
148
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 140

def credit(money, identification_or_credit_card, options = {})
  if reference_transaction?(identification_or_credit_card)
    deprecated CREDIT_DEPRECATION_MESSAGE
    # Referenced credit: refund of a settled transaction
    refund(money, identification_or_credit_card, options)
  else # must be a credit card or card reference
    perform_non_referenced_credit(money, identification_or_credit_card, options)
  end
end

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

Verify and transfer the specified amount.



112
113
114
115
116
117
118
119
120
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 112

def purchase(money, payment_source, options = {})
  post = {}
  add_invoice(post, options)
  add_payment_source(post, payment_source, options)
  add_address(post, payment_source, options)
  add_customer_data(post, options)
  add_money(post, money, options)
  commit('SAL', post)
end

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

Refund of a settled transaction



151
152
153
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 151

def refund(money, reference, options = {})
  perform_reference_credit(money, reference, options)
end

#test?Boolean

Returns:

  • (Boolean)


155
156
157
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 155

def test?
  @options[:test] || super
end

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

Cancels a previously authorized transaction.



133
134
135
136
137
# File 'lib/active_merchant/billing/gateways/ogone.rb', line 133

def void(identification, options = {})
  post = {}
  add_authorization(post, reference_from(identification))
  commit('DES', post)
end