Class: ActiveMerchant::Billing::FirstdataE4Gateway
- Defined in:
- lib/active_merchant/billing/gateways/firstdata_e4.rb
Constant Summary collapse
- TRANSACTIONS =
{ sale: '00', authorization: '01', verify: '05', capture: '32', void: '33', credit: '34', store: '05' }
- POST_HEADERS =
{ 'Accepts' => 'application/xml', 'Content-Type' => 'application/xml' }
- SUCCESS =
'true'
- SENSITIVE_FIELDS =
%i[verification_str2 expiry_date card_number]
- BRANDS =
{ visa: 'Visa', master: 'Mastercard', american_express: 'American Express', jcb: 'JCB', discover: 'Discover' }
- E4_BRANDS =
BRANDS.merge({ mastercard: 'Mastercard' })
- DEFAULT_ECI =
'07'
- STANDARD_ERROR_CODE_MAPPING =
{ # Bank error codes: https://firstdata.zendesk.com/entries/471297-First-Data-Global-Gateway-e4-Bank-Response-Codes '201' => STANDARD_ERROR_CODE[:incorrect_number], '531' => STANDARD_ERROR_CODE[:invalid_cvc], '503' => STANDARD_ERROR_CODE[:invalid_cvc], '811' => STANDARD_ERROR_CODE[:invalid_cvc], '605' => STANDARD_ERROR_CODE[:invalid_expiry_date], '522' => STANDARD_ERROR_CODE[:expired_card], '303' => STANDARD_ERROR_CODE[:card_declined], '530' => STANDARD_ERROR_CODE[:card_declined], '401' => STANDARD_ERROR_CODE[:call_issuer], '402' => STANDARD_ERROR_CODE[:call_issuer], '501' => STANDARD_ERROR_CODE[:pickup_card], # Ecommerce error codes -- https://firstdata.zendesk.com/entries/451980-ecommerce-response-codes-etg-codes '22' => STANDARD_ERROR_CODE[:invalid_number], '25' => STANDARD_ERROR_CODE[:invalid_expiry_date], '31' => STANDARD_ERROR_CODE[:incorrect_cvc], '44' => STANDARD_ERROR_CODE[:incorrect_zip], '42' => STANDARD_ERROR_CODE[:processing_error] }
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, credit_card_or_store_authorization, options = {}) ⇒ Object
- #capture(money, authorization, options = {}) ⇒ Object
-
#initialize(options = {}) ⇒ FirstdataE4Gateway
constructor
Create a new FirstdataE4Gateway.
- #purchase(money, credit_card_or_store_authorization, options = {}) ⇒ Object
- #refund(money, authorization, options = {}) ⇒ Object
- #scrub(transcript) ⇒ Object
-
#store(credit_card, options = {}) ⇒ Object
Tokenize a credit card with TransArmor.
- #supports_network_tokenization? ⇒ Boolean
- #supports_scrubbing? ⇒ Boolean
- #verify(credit_card, options = {}) ⇒ Object
- #verify_credentials ⇒ Object
- #void(authorization, options = {}) ⇒ Object
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?, #test?
Methods included from Versionable
Methods included from CreditCardFormatting
#format, #strftime_yyyymm, #strftime_yyyymmdd_last_day
Methods included from PostsData
included, #raw_ssl_request, #ssl_get, #ssl_post, #ssl_request
Constructor Details
#initialize(options = {}) ⇒ FirstdataE4Gateway
Create a new FirstdataE4Gateway
The gateway requires that a valid login and password be passed in the options
hash.
Options
-
:login
– The EXACT ID. Also known as the Gateway ID.(Found in your administration terminal settings)
-
:password
– The terminal password (not your account password)
76 77 78 79 80 81 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 76 def initialize( = {}) requires!(, :login, :password) @options = super end |
Instance Method Details
#authorize(money, credit_card_or_store_authorization, options = {}) ⇒ Object
83 84 85 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 83 def (money, , = {}) commit(:authorization, (money, , )) end |
#capture(money, authorization, options = {}) ⇒ Object
91 92 93 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 91 def capture(money, , = {}) commit(:capture, build_capture_or_credit_request(money, , )) end |
#purchase(money, credit_card_or_store_authorization, options = {}) ⇒ Object
87 88 89 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 87 def purchase(money, , = {}) commit(:sale, (money, , )) end |
#refund(money, authorization, options = {}) ⇒ Object
99 100 101 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 99 def refund(money, , = {}) commit(:credit, build_capture_or_credit_request(money, , )) end |
#scrub(transcript) ⇒ Object
143 144 145 146 147 148 149 150 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 143 def scrub(transcript) transcript. gsub(%r((<Card_Number>).+(</Card_Number>)), '\1[FILTERED]\2'). gsub(%r((<VerificationStr2>).+(</VerificationStr2>)), '\1[FILTERED]\2'). gsub(%r((<Password>).+(</Password>))i, '\1[FILTERED]\2'). gsub(%r((<CAVV>).+(</CAVV>)), '\1[FILTERED]\2'). gsub(%r((Card Number : ).*\d)i, '\1[FILTERED]') end |
#store(credit_card, options = {}) ⇒ Object
Tokenize a credit card with TransArmor
The TransArmor token and other card data necessary for subsequent transactions is stored in the response’s authorization
attribute. The authorization string may be passed to authorize
and purchase
instead of a ActiveMerchant::Billing::CreditCard
instance.
TransArmor support must be explicitly activated on your gateway account by FirstData. If your authorization string is empty, contact FirstData support for account setup assistance.
Example
# Generate token
result = gateway.store(credit_card)
if result.success?
my_record.update_attributes(:authorization => result.)
end
# Use token
result = gateway.purchase(1000, my_record.)
firstdata.zendesk.com/entries/21303361-transarmor-tokenization
130 131 132 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 130 def store(credit_card, = {}) commit(:store, build_store_request(credit_card, ), credit_card) end |
#supports_network_tokenization? ⇒ Boolean
152 153 154 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 152 def supports_network_tokenization? true end |
#supports_scrubbing? ⇒ Boolean
139 140 141 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 139 def supports_scrubbing? true end |
#verify(credit_card, options = {}) ⇒ Object
103 104 105 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 103 def verify(credit_card, = {}) commit(:verify, (0, credit_card, )) end |
#verify_credentials ⇒ Object
134 135 136 137 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 134 def verify_credentials response = void('0') response. != 'Unauthorized Request. Bad or missing credentials.' end |
#void(authorization, options = {}) ⇒ Object
95 96 97 |
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 95 def void(, = {}) commit(:void, build_capture_or_credit_request((), , )) end |