Class: ActiveMerchant::Billing::MonerisGateway

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

Overview

To learn more about the Moneris gateway, please contact [email protected] for a copy of their integration guide. For information on remote testing, please see “Test Environment Penny Value Response Table”, and “Test Environment eFraud (AVS and CVD) Penny Response Values”, available at Moneris’ eSelect Plus Documentation Centre.

Constant Summary

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 = {}) ⇒ MonerisGateway

login is your Store ID password is your API Token



23
24
25
26
27
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 23

def initialize(options = {})
  requires!(options, :login, :password)
  @options = { :crypt_type => 7 }.update(options)
  super      
end

Instance Method Details

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

Referred to as “PreAuth” in the Moneris integration guide, this action verifies and locks funds on a customer’s card, which then must be captured at a later date.

Pass in order_id and optionally a customer parameter.



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 34

def authorize(money, creditcard_or_datakey, options = {})
  requires!(options, :order_id)
  post = {}
  add_payment_source(post, creditcard_or_datakey)
  post[:amount]     = amount(money)
  post[:order_id]   = options[:order_id]
  post[:cust_id]    = options[:customer]
  post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
  action = (post[:data_key].blank?) ? 'preauth' : 'res_preauth_cc'
  commit(action, post)
end

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

This method retrieves locked funds from a customer’s account (from a PreAuth) and prepares them for deposit in a merchant’s account.

Note: Moneris requires both the order_id and the transaction number of the original authorization. To maintain the same interface as the other gateways the two numbers are concatenated together with a ; separator as the authorization number returned by authorization



69
70
71
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 69

def capture(money, authorization, options = {})
  commit 'completion', crediting_params(authorization, :comp_amount => amount(money))
end

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

Performs a refund. This method requires that the original transaction number and order number be included. Concatenate your transaction number and order_id by using a semicolon (‘;’). This is to keep the Moneris interface consistent with other gateways. (See capture for details.)



89
90
91
92
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 89

def credit(money, authorization, options = {})
  deprecated CREDIT_DEPRECATION_MESSAGE
  refund(money, authorization, options)
end

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

This action verifies funding on a customer’s card and readies them for deposit in a merchant’s account.

Pass in order_id and optionally a customer parameter



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 50

def purchase(money, creditcard_or_datakey, options = {})
  requires!(options, :order_id)
  post = {}
  add_payment_source(post, creditcard_or_datakey)
  post[:amount]     = amount(money)
  post[:order_id]   = options[:order_id]
  post[:cust_id]    = options[:customer]
  post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
  action = (post[:data_key].blank?) ? 'purchase' : 'res_purchase_cc'
  commit(action, post)
end

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



94
95
96
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 94

def refund(money, authorization, options = {})
  commit 'refund', crediting_params(authorization, :amount => amount(money))
end

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



98
99
100
101
102
103
104
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 98

def store(credit_card, options = {})
  post = {}
  post[:pan] = credit_card.number
  post[:expdate] = expdate(credit_card)
  post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
  commit('res_add_cc', post)
end

#test?Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 121

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

#unstore(data_key) ⇒ Object



106
107
108
109
110
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 106

def unstore(data_key)
  post = {}
  post[:data_key] = data_key
  commit('res_delete', post)
end

#update(data_key, credit_card, options = {}) ⇒ Object



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

def update(data_key, credit_card, options = {})
  post = {}
  post[:pan] = credit_card.number
  post[:expdate] = expdate(credit_card)
  post[:data_key] = data_key
  post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
  commit('res_update_cc', post)
end

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

Voiding requires the original transaction ID and order ID of some open transaction. Closed transactions must be refunded. Note that the only methods which may be voided are capture and purchase.

Concatenate your transaction number and order_id by using a semicolon (‘;’). This is to keep the Moneris interface consistent with other gateways. (See capture for details.)



80
81
82
# File 'lib/active_merchant/billing/gateways/moneris.rb', line 80

def void(authorization, options = {})
  commit 'purchasecorrection', crediting_params(authorization)
end