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 =
[: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"})
- 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::DEBIT_CARDS, 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
#card_brand, card_brand, #generate_unique_id, inherited, supported_countries, #supported_countries, supported_countries=, supports?, #test?
#format
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)
74
75
76
77
78
79
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 74
def initialize(options = {})
requires!(options, :login, :password)
@options = options
super
end
|
Instance Method Details
#authorize(money, credit_card_or_store_authorization, options = {}) ⇒ Object
81
82
83
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 81
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
89
90
91
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 89
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
85
86
87
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 85
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
97
98
99
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 97
def refund(money, authorization, options = {})
commit(:credit, build_capture_or_credit_request(money, authorization, options))
end
|
#scrub(transcript) ⇒ Object
141
142
143
144
145
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 141
def scrub(transcript)
transcript.
gsub(%r((<Card_Number>).+(</Card_Number>)), '\1[FILTERED]\2').
gsub(%r((<VerificationStr2>).+(</VerificationStr2>)), '\1[FILTERED]\2')
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
128
129
130
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 128
def store(credit_card, options = {})
commit(:store, build_store_request(credit_card, options), credit_card)
end
|
#supports_network_tokenization? ⇒ Boolean
147
148
149
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 147
def supports_network_tokenization?
true
end
|
#supports_scrubbing? ⇒ Boolean
137
138
139
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 137
def supports_scrubbing?
true
end
|
#verify(credit_card, options = {}) ⇒ Object
101
102
103
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 101
def verify(credit_card, options = {})
commit(:verify, build_sale_or_authorization_request(0, credit_card, options))
end
|
#verify_credentials ⇒ Object
132
133
134
135
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 132
def verify_credentials
response = void("0")
response.message != "Unauthorized Request. Bad or missing credentials."
end
|
#void(authorization, options = {}) ⇒ Object
93
94
95
|
# File 'lib/active_merchant/billing/gateways/firstdata_e4.rb', line 93
def void(authorization, options = {})
commit(:void, build_capture_or_credit_request(money_from_authorization(authorization), authorization, options))
end
|