Class: ActiveMerchant::Billing::MonerisUsGateway
- Defined in:
- lib/active_merchant/billing/gateways/moneris_us.rb
Overview
To learn more about the Moneris (US) 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::RECURRING_DEPRECATION_MESSAGE, Gateway::STANDARD_ERROR_CODE
Instance Attribute Summary
Attributes inherited from Gateway
Instance Method Summary collapse
-
#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.
-
#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.
-
#credit(money, authorization, options = {}) ⇒ Object
Performs a refund.
-
#initialize(options = {}) ⇒ MonerisUsGateway
constructor
Initialize the Gateway.
-
#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.
- #refund(money, authorization, options = {}) ⇒ Object
- #scrub(transcript) ⇒ Object
- #store(payment_source, options = {}) ⇒ Object
- #supports_scrubbing? ⇒ Boolean
- #unstore(data_key, options = {}) ⇒ Object
- #update(data_key, payment_source, options = {}) ⇒ Object
- #verify(creditcard_or_datakey, options = {}) ⇒ Object
-
#void(authorization, options = {}) ⇒ Object
Voiding requires the original transaction ID and order ID of some open transaction.
Methods inherited from Gateway
#add_field_to_post_if_present, #add_fields_to_post_if_present, #card_brand, card_brand, #generate_unique_id, inherited, #supported_countries, supported_countries, supported_countries=, supports?, #supports_network_tokenization?, #test?
Methods included from CreditCardFormatting
Methods included from PostsData
included, #raw_ssl_request, #ssl_get, #ssl_post, #ssl_request
Constructor Details
#initialize(options = {}) ⇒ MonerisUsGateway
Initialize the Gateway
The gateway requires that a valid login and password be passed in the options
hash.
Options
-
:login
– Your Store ID -
:password
– Your API Token -
:cvv_enabled
– Specify that you would like the CVV passed to the gateway.Only particular account types at Moneris will allow this. Defaults to false. (optional)
32 33 34 35 36 37 38 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 32 def initialize( = {}) requires!(, :login, :password) @cvv_enabled = [:cvv_enabled] @avs_enabled = [:avs_enabled] = { :crypt_type => 7 }.merge() 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.
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 52 def (money, creditcard_or_datakey, = {}) requires!(, :order_id) post = {} add_payment_source(post, creditcard_or_datakey, ) post[:amount] = amount(money) post[:order_id] = [:order_id] post[:address] = [:billing_address] || [:address] post[:crypt_type] = [:crypt_type] || @options[:crypt_type] action = post[:data_key].blank? ? 'us_preauth' : 'us_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
93 94 95 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 93 def capture(money, , = {}) commit 'us_completion', crediting_params(, :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.)
113 114 115 116 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 113 def credit(money, , = {}) ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE refund(money, , ) 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
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 68 def purchase(money, creditcard_or_datakey, = {}) requires!(, :order_id) post = {} add_payment_source(post, creditcard_or_datakey, ) post[:amount] = amount(money) post[:order_id] = [:order_id] add_address(post, creditcard_or_datakey, ) post[:crypt_type] = [:crypt_type] || @options[:crypt_type] action = if creditcard_or_datakey.is_a?(String) 'us_res_purchase_cc' elsif card_brand(creditcard_or_datakey) == 'check' 'us_ach_debit' elsif post[:data_key].blank? 'us_purchase' end commit(action, post) end |
#refund(money, authorization, options = {}) ⇒ Object
118 119 120 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 118 def refund(money, , = {}) commit 'us_refund', crediting_params(, :amount => amount(money)) end |
#scrub(transcript) ⇒ Object
146 147 148 149 150 151 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 146 def scrub(transcript) transcript. gsub(%r((<pan>)[^<]*(</pan>))i, '\1[FILTERED]\2'). gsub(%r((<api_token>)[^<]*(</api_token>))i, '\1[FILTERED]\2'). gsub(%r((<cvd_value>)[^<]*(</cvd_value>))i, '\1[FILTERED]\2') end |
#store(payment_source, options = {}) ⇒ Object
122 123 124 125 126 127 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 122 def store(payment_source, = {}) post = {} add_payment_source(post, payment_source, ) post[:crypt_type] = [:crypt_type] || @options[:crypt_type] card_brand(payment_source) == 'check' ? commit('us_res_add_ach', post) : commit('us_res_add_cc', post) end |
#supports_scrubbing? ⇒ Boolean
142 143 144 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 142 def supports_scrubbing? true end |
#unstore(data_key, options = {}) ⇒ Object
129 130 131 132 133 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 129 def unstore(data_key, = {}) post = {} post[:data_key] = data_key commit('us_res_delete', post) end |
#update(data_key, payment_source, options = {}) ⇒ Object
135 136 137 138 139 140 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 135 def update(data_key, payment_source, = {}) post = {} add_payment_source(post, payment_source, ) post[:data_key] = data_key card_brand(payment_source) == 'check' ? commit('us_res_update_ach', post) : commit('us_res_update_cc', post) end |
#verify(creditcard_or_datakey, options = {}) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 40 def verify(creditcard_or_datakey, = {}) MultiResponse.run(:use_first_response) do |r| r.process { (100, creditcard_or_datakey, ) } r.process(:ignore_result) { capture(0, r.) } end 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.)
104 105 106 |
# File 'lib/active_merchant/billing/gateways/moneris_us.rb', line 104 def void(, = {}) commit 'us_purchasecorrection', crediting_params() end |