Class: ActiveMerchant::Billing::FirstdataE4Gateway
- Inherits:
-
Gateway
- Object
- Gateway
- ActiveMerchant::Billing::FirstdataE4Gateway
show all
- 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'
}
{
'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 =
{
'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],
'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
#options
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?
#format, #strftime_yyyymm
Methods included from PostsData
included, #raw_ssl_request, #ssl_get, #ssl_post, #ssl_request
Constructor Details
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(options = {})
requires!(options, :login, :password)
@options = 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 authorize(money, credit_card_or_store_authorization, options = {})
commit(:authorization, build_sale_or_authorization_request(money, credit_card_or_store_authorization, options))
end
|
#capture(money, authorization, options = {}) ⇒ Object
91
92
93
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 91
def capture(money, authorization, options = {})
commit(:capture, build_capture_or_credit_request(money, authorization, options))
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, credit_card_or_store_authorization, options = {})
commit(:sale, build_sale_or_authorization_request(money, credit_card_or_store_authorization, options))
end
|
#refund(money, authorization, options = {}) ⇒ Object
99
100
101
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 99
def refund(money, authorization, options = {})
commit(:credit, build_capture_or_credit_request(money, authorization, options))
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
result = gateway.store(credit_card)
if result.success?
my_record.update_attributes(:authorization => result.authorization)
end
result = gateway.purchase(1000, my_record.authorization)
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, options = {})
commit(:store, build_store_request(credit_card, options), 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, options = {})
commit(:verify, build_sale_or_authorization_request(0, credit_card, options))
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.message != '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(authorization, options = {})
commit(:void, build_capture_or_credit_request(money_from_authorization(authorization), authorization, options))
end
|