activemerchant 1.126.0 → 1.129.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +241 -0
- data/lib/active_merchant/billing/check.rb +40 -8
- data/lib/active_merchant/billing/credit_card.rb +28 -1
- data/lib/active_merchant/billing/credit_card_methods.rb +79 -23
- data/lib/active_merchant/billing/gateways/adyen.rb +67 -8
- data/lib/active_merchant/billing/gateways/airwallex.rb +40 -11
- data/lib/active_merchant/billing/gateways/alelo.rb +256 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +21 -4
- data/lib/active_merchant/billing/gateways/beanstream.rb +18 -0
- data/lib/active_merchant/billing/gateways/blue_snap.rb +22 -1
- data/lib/active_merchant/billing/gateways/bogus.rb +4 -0
- data/lib/active_merchant/billing/gateways/borgun.rb +56 -16
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +64 -17
- data/lib/active_merchant/billing/gateways/card_connect.rb +27 -9
- data/lib/active_merchant/billing/gateways/card_stream.rb +23 -0
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +228 -57
- data/lib/active_merchant/billing/gateways/commerce_hub.rb +361 -0
- data/lib/active_merchant/billing/gateways/credorax.rb +47 -27
- data/lib/active_merchant/billing/gateways/cyber_source/cyber_source_common.rb +36 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +100 -26
- data/lib/active_merchant/billing/gateways/cyber_source_rest.rb +456 -0
- data/lib/active_merchant/billing/gateways/d_local.rb +44 -5
- data/lib/active_merchant/billing/gateways/decidir.rb +15 -4
- data/lib/active_merchant/billing/gateways/ebanx.rb +36 -24
- data/lib/active_merchant/billing/gateways/element.rb +21 -1
- data/lib/active_merchant/billing/gateways/global_collect.rb +73 -22
- data/lib/active_merchant/billing/gateways/ipg.rb +13 -8
- data/lib/active_merchant/billing/gateways/iveri.rb +39 -3
- data/lib/active_merchant/billing/gateways/kushki.rb +21 -1
- data/lib/active_merchant/billing/gateways/litle.rb +25 -5
- data/lib/active_merchant/billing/gateways/mastercard.rb +1 -8
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +17 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +44 -10
- data/lib/active_merchant/billing/gateways/monei.rb +2 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +20 -5
- data/lib/active_merchant/billing/gateways/mundipagg.rb +3 -0
- data/lib/active_merchant/billing/gateways/ogone.rb +35 -7
- data/lib/active_merchant/billing/gateways/openpay.rb +20 -3
- data/lib/active_merchant/billing/gateways/orbital.rb +43 -22
- data/lib/active_merchant/billing/gateways/pay_trace.rb +64 -18
- data/lib/active_merchant/billing/gateways/payeezy.rb +59 -4
- data/lib/active_merchant/billing/gateways/paymentez.rb +18 -6
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +4 -0
- data/lib/active_merchant/billing/gateways/paysafe.rb +22 -14
- data/lib/active_merchant/billing/gateways/payu_latam.rb +3 -0
- data/lib/active_merchant/billing/gateways/plexo.rb +308 -0
- data/lib/active_merchant/billing/gateways/priority.rb +29 -6
- data/lib/active_merchant/billing/gateways/rapyd.rb +110 -49
- data/lib/active_merchant/billing/gateways/reach.rb +277 -0
- data/lib/active_merchant/billing/gateways/redsys.rb +9 -5
- data/lib/active_merchant/billing/gateways/sage_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/securion_pay.rb +40 -0
- data/lib/active_merchant/billing/gateways/shift4.rb +342 -0
- data/lib/active_merchant/billing/gateways/simetrik.rb +28 -22
- data/lib/active_merchant/billing/gateways/stripe.rb +21 -1
- data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +62 -22
- data/lib/active_merchant/billing/gateways/tns.rb +2 -5
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +14 -3
- data/lib/active_merchant/billing/gateways/vanco.rb +12 -3
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +1 -1
- data/lib/active_merchant/billing/gateways/vpos.rb +7 -4
- data/lib/active_merchant/billing/gateways/wompi.rb +8 -4
- data/lib/active_merchant/billing/gateways/worldpay.rb +117 -9
- data/lib/active_merchant/billing/response.rb +15 -1
- data/lib/active_merchant/connection.rb +0 -2
- data/lib/active_merchant/country.rb +1 -0
- data/lib/active_merchant/errors.rb +4 -1
- data/lib/active_merchant/version.rb +1 -1
- metadata +24 -3
@@ -33,7 +33,14 @@ module ActiveMerchant #:nodoc:
|
|
33
33
|
store: 'customer/create',
|
34
34
|
redact: 'customer/delete',
|
35
35
|
level_3_visa: 'level_three/visa',
|
36
|
-
level_3_mastercard: 'level_three/mastercard'
|
36
|
+
level_3_mastercard: 'level_three/mastercard',
|
37
|
+
ach_sale: 'checks/sale/by_account',
|
38
|
+
ach_customer_sale: 'checks/sale/by_customer',
|
39
|
+
ach_authorize: 'checks/hold/by_account',
|
40
|
+
ach_customer_authorize: 'checks/hold/by_customer',
|
41
|
+
ach_refund: 'checks/refund/by_transaction',
|
42
|
+
ach_capture: 'checks/manage/fund',
|
43
|
+
ach_void: 'checks/manage/void'
|
37
44
|
}
|
38
45
|
|
39
46
|
def initialize(options = {})
|
@@ -52,7 +59,15 @@ module ActiveMerchant #:nodoc:
|
|
52
59
|
end
|
53
60
|
else
|
54
61
|
post = build_purchase_request(money, payment_or_customer_id, options)
|
55
|
-
|
62
|
+
endpoint = if payment_or_customer_id.kind_of?(Check)
|
63
|
+
ENDPOINTS[:ach_sale]
|
64
|
+
elsif options[:check_transaction]
|
65
|
+
ENDPOINTS[:ach_customer_sale]
|
66
|
+
elsif post[:customer_id]
|
67
|
+
ENDPOINTS[:customer_id_sale]
|
68
|
+
else
|
69
|
+
ENDPOINTS[:keyed_sale]
|
70
|
+
end
|
56
71
|
response = commit(endpoint, post)
|
57
72
|
check_token_response(response, endpoint, post, options)
|
58
73
|
end
|
@@ -63,12 +78,16 @@ module ActiveMerchant #:nodoc:
|
|
63
78
|
add_amount(post, money, options)
|
64
79
|
if customer_id?(payment_or_customer_id)
|
65
80
|
post[:customer_id] = payment_or_customer_id
|
66
|
-
endpoint =
|
81
|
+
endpoint = if options[:check_transaction]
|
82
|
+
ENDPOINTS[:ach_customer_authorize]
|
83
|
+
else
|
84
|
+
ENDPOINTS[:customer_id_auth]
|
85
|
+
end
|
67
86
|
else
|
68
87
|
add_payment(post, payment_or_customer_id)
|
69
88
|
add_address(post, payment_or_customer_id, options)
|
70
89
|
add_customer_data(post, options)
|
71
|
-
endpoint = ENDPOINTS[:keyed_auth]
|
90
|
+
endpoint = payment_or_customer_id.kind_of?(Check) ? ENDPOINTS[:ach_authorize] : ENDPOINTS[:keyed_auth]
|
72
91
|
end
|
73
92
|
response = commit(endpoint, post)
|
74
93
|
check_token_response(response, endpoint, post, options)
|
@@ -82,8 +101,13 @@ module ActiveMerchant #:nodoc:
|
|
82
101
|
end
|
83
102
|
else
|
84
103
|
post = build_capture_request(money, authorization, options)
|
85
|
-
|
86
|
-
|
104
|
+
endpoint = if options[:check_transaction]
|
105
|
+
ENDPOINTS[:ach_capture]
|
106
|
+
else
|
107
|
+
ENDPOINTS[:capture]
|
108
|
+
end
|
109
|
+
response = commit(endpoint, post)
|
110
|
+
check_token_response(response, endpoint, post, options)
|
87
111
|
end
|
88
112
|
end
|
89
113
|
|
@@ -91,17 +115,29 @@ module ActiveMerchant #:nodoc:
|
|
91
115
|
# currently only support full and partial refunds of settled transactions via a transaction ID
|
92
116
|
post = {}
|
93
117
|
add_amount(post, money, options)
|
94
|
-
|
95
|
-
|
96
|
-
|
118
|
+
if options[:check_transaction]
|
119
|
+
post[:check_transaction_id] = authorization
|
120
|
+
endpoint = ENDPOINTS[:ach_refund]
|
121
|
+
else
|
122
|
+
post[:transaction_id] = authorization
|
123
|
+
endpoint = ENDPOINTS[:transaction_refund]
|
124
|
+
end
|
125
|
+
response = commit(endpoint, post)
|
126
|
+
check_token_response(response, endpoint, post, options)
|
97
127
|
end
|
98
128
|
|
99
129
|
def void(authorization, options = {})
|
100
130
|
post = {}
|
101
|
-
|
131
|
+
if options[:check_transaction]
|
132
|
+
post[:check_transaction_id] = authorization
|
133
|
+
endpoint = ENDPOINTS[:ach_void]
|
134
|
+
else
|
135
|
+
post[:transaction_id] = authorization
|
136
|
+
endpoint = ENDPOINTS[:transaction_void]
|
137
|
+
end
|
102
138
|
|
103
|
-
response = commit(
|
104
|
-
check_token_response(response,
|
139
|
+
response = commit(endpoint, post)
|
140
|
+
check_token_response(response, endpoint, post, options)
|
105
141
|
end
|
106
142
|
|
107
143
|
def verify(credit_card, options = {})
|
@@ -175,7 +211,11 @@ module ActiveMerchant #:nodoc:
|
|
175
211
|
|
176
212
|
def build_capture_request(money, authorization, options)
|
177
213
|
post = {}
|
178
|
-
|
214
|
+
if options[:check_transaction]
|
215
|
+
post[:check_transaction_id] = authorization
|
216
|
+
else
|
217
|
+
post[:transaction_id] = authorization
|
218
|
+
end
|
179
219
|
add_amount(post, money, options)
|
180
220
|
|
181
221
|
post
|
@@ -234,10 +274,16 @@ module ActiveMerchant #:nodoc:
|
|
234
274
|
end
|
235
275
|
|
236
276
|
def add_payment(post, payment)
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
277
|
+
if payment.kind_of?(Check)
|
278
|
+
post[:check] = {}
|
279
|
+
post[:check][:account_number] = payment.account_number
|
280
|
+
post[:check][:routing_number] = payment.routing_number
|
281
|
+
else
|
282
|
+
post[:credit_card] = {}
|
283
|
+
post[:credit_card][:number] = payment.number
|
284
|
+
post[:credit_card][:expiration_month] = payment.month
|
285
|
+
post[:credit_card][:expiration_year] = payment.year
|
286
|
+
end
|
241
287
|
end
|
242
288
|
|
243
289
|
def add_level_3_data(post, options)
|
@@ -380,7 +426,7 @@ module ActiveMerchant #:nodoc:
|
|
380
426
|
if action == ENDPOINTS[:store]
|
381
427
|
response['customer_id']
|
382
428
|
else
|
383
|
-
response['transaction_id']
|
429
|
+
response['transaction_id'] || response['check_transaction_id']
|
384
430
|
end
|
385
431
|
end
|
386
432
|
|
@@ -41,6 +41,7 @@ module ActiveMerchant
|
|
41
41
|
add_soft_descriptors(params, options)
|
42
42
|
add_level2_data(params, options)
|
43
43
|
add_stored_credentials(params, options)
|
44
|
+
add_external_three_ds(params, payment_method, options)
|
44
45
|
|
45
46
|
commit(params, options)
|
46
47
|
end
|
@@ -56,6 +57,7 @@ module ActiveMerchant
|
|
56
57
|
add_soft_descriptors(params, options)
|
57
58
|
add_level2_data(params, options)
|
58
59
|
add_stored_credentials(params, options)
|
60
|
+
add_external_three_ds(params, payment_method, options)
|
59
61
|
|
60
62
|
commit(params, options)
|
61
63
|
end
|
@@ -125,6 +127,7 @@ module ActiveMerchant
|
|
125
127
|
gsub(%r((Apikey: )(\w|-)+), '\1[FILTERED]').
|
126
128
|
gsub(%r((\\?"card_number\\?":\\?")\d+), '\1[FILTERED]').
|
127
129
|
gsub(%r((\\?"cvv\\?":\\?")\d+), '\1[FILTERED]').
|
130
|
+
gsub(%r((\\?"cvv\\?":\\?)\d+), '\1[FILTERED]').
|
128
131
|
gsub(%r((\\?"account_number\\?":\\?")\d+), '\1[FILTERED]').
|
129
132
|
gsub(%r((\\?"routing_number\\?":\\?")\d+), '\1[FILTERED]').
|
130
133
|
gsub(%r((\\?card_number=)\d+(&?)), '\1[FILTERED]').
|
@@ -132,11 +135,33 @@ module ActiveMerchant
|
|
132
135
|
gsub(%r((\\?apikey=)\w+(&?)), '\1[FILTERED]').
|
133
136
|
gsub(%r{(\\?"credit_card\.card_number\\?":)(\\?"[^"]+\\?")}, '\1[FILTERED]').
|
134
137
|
gsub(%r{(\\?"credit_card\.cvv\\?":)(\\?"[^"]+\\?")}, '\1[FILTERED]').
|
135
|
-
gsub(%r{(\\?"apikey\\?":)(\\?"[^"]+\\?")}, '\1[FILTERED]')
|
138
|
+
gsub(%r{(\\?"apikey\\?":)(\\?"[^"]+\\?")}, '\1[FILTERED]').
|
139
|
+
gsub(%r{(\\?"cavv\\?":)(\\?"[^"]+\\?")}, '\1[FILTERED]').
|
140
|
+
gsub(%r{(\\?"xid\\?":)(\\?"[^"]+\\?")}, '\1[FILTERED]')
|
136
141
|
end
|
137
142
|
|
138
143
|
private
|
139
144
|
|
145
|
+
def add_external_three_ds(params, payment_method, options)
|
146
|
+
return unless three_ds = options[:three_d_secure]
|
147
|
+
|
148
|
+
params[:'3DS'] = {
|
149
|
+
program_protocol: three_ds[:version][0],
|
150
|
+
directory_server_transaction_id: three_ds[:ds_transaction_id],
|
151
|
+
cardholder_name: payment_method.name,
|
152
|
+
card_number: payment_method.number,
|
153
|
+
exp_date: format_exp_date(payment_method.month, payment_method.year),
|
154
|
+
cvv: payment_method.verification_value,
|
155
|
+
xid: three_ds[:acs_transaction_id],
|
156
|
+
cavv: three_ds[:cavv],
|
157
|
+
wallet_provider_id: 'NO_WALLET',
|
158
|
+
type: 'D'
|
159
|
+
}.compact
|
160
|
+
|
161
|
+
params[:eci_indicator] = options[:three_d_secure][:eci]
|
162
|
+
params[:method] = '3DS'
|
163
|
+
end
|
164
|
+
|
140
165
|
def add_invoice(params, options)
|
141
166
|
params[:merchant_ref] = options[:order_id]
|
142
167
|
end
|
@@ -152,6 +177,8 @@ module ActiveMerchant
|
|
152
177
|
def add_authorization_info(params, authorization, options = {})
|
153
178
|
transaction_id, transaction_tag, method, = authorization.split('|')
|
154
179
|
params[:method] = method == 'token' ? 'credit_card' : method
|
180
|
+
# If the previous transaction `method` value was 3DS, it needs to be set to `credit_card` on follow up transactions
|
181
|
+
params[:method] = 'credit_card' if method == '3DS'
|
155
182
|
|
156
183
|
if options[:reversal_id]
|
157
184
|
params[:reversal_id] = options[:reversal_id]
|
@@ -178,6 +205,8 @@ module ActiveMerchant
|
|
178
205
|
add_echeck(params, payment_method, options)
|
179
206
|
elsif payment_method.is_a? String
|
180
207
|
add_token(params, payment_method, options)
|
208
|
+
elsif payment_method.is_a? NetworkTokenizationCreditCard
|
209
|
+
add_network_tokenization(params, payment_method, options)
|
181
210
|
else
|
182
211
|
add_creditcard(params, payment_method)
|
183
212
|
end
|
@@ -190,7 +219,7 @@ module ActiveMerchant
|
|
190
219
|
tele_check[:check_type] = 'P'
|
191
220
|
tele_check[:routing_number] = echeck.routing_number
|
192
221
|
tele_check[:account_number] = echeck.account_number
|
193
|
-
tele_check[:accountholder_name] =
|
222
|
+
tele_check[:accountholder_name] = name_from_payment_method(echeck)
|
194
223
|
tele_check[:customer_id_type] = options[:customer_id_type] if options[:customer_id_type]
|
195
224
|
tele_check[:customer_id_number] = options[:customer_id_number] if options[:customer_id_number]
|
196
225
|
tele_check[:client_email] = options[:client_email] if options[:client_email]
|
@@ -233,10 +262,37 @@ module ActiveMerchant
|
|
233
262
|
card
|
234
263
|
end
|
235
264
|
|
265
|
+
def add_network_tokenization(params, payment_method, options)
|
266
|
+
nt_card = {}
|
267
|
+
nt_card[:type] = 'D'
|
268
|
+
nt_card[:cardholder_name] = name_from_payment_method(payment_method) || name_from_address(options)
|
269
|
+
nt_card[:card_number] = payment_method.number
|
270
|
+
nt_card[:exp_date] = format_exp_date(payment_method.month, payment_method.year)
|
271
|
+
nt_card[:cvv] = payment_method.verification_value
|
272
|
+
nt_card[:xid] = payment_method.payment_cryptogram unless payment_method.payment_cryptogram.empty? || payment_method.brand.include?('american_express')
|
273
|
+
nt_card[:cavv] = payment_method.payment_cryptogram unless payment_method.payment_cryptogram.empty?
|
274
|
+
nt_card[:wallet_provider_id] = 'APPLE_PAY'
|
275
|
+
|
276
|
+
params['3DS'] = nt_card
|
277
|
+
params[:method] = '3DS'
|
278
|
+
params[:eci_indicator] = payment_method.eci.nil? ? '5' : payment_method.eci
|
279
|
+
end
|
280
|
+
|
236
281
|
def format_exp_date(month, year)
|
237
282
|
"#{format(month, :two_digits)}#{format(year, :two_digits)}"
|
238
283
|
end
|
239
284
|
|
285
|
+
def name_from_address(options)
|
286
|
+
return unless address = options[:billing_address]
|
287
|
+
return address[:name] if address[:name]
|
288
|
+
end
|
289
|
+
|
290
|
+
def name_from_payment_method(payment_method)
|
291
|
+
return unless payment_method.first_name && payment_method.last_name
|
292
|
+
|
293
|
+
return "#{payment_method.first_name} #{payment_method.last_name}"
|
294
|
+
end
|
295
|
+
|
240
296
|
def add_address(params, options)
|
241
297
|
address = options[:billing_address]
|
242
298
|
return unless address
|
@@ -279,8 +335,7 @@ module ActiveMerchant
|
|
279
335
|
end
|
280
336
|
|
281
337
|
def original_transaction_id(options)
|
282
|
-
return options[:cardbrand_original_transaction_id]
|
283
|
-
return options[:stored_credential][:network_transaction_id] if options.dig(:stored_credential, :network_transaction_id)
|
338
|
+
return options[:cardbrand_original_transaction_id] || options.dig(:stored_credential, :network_transaction_id)
|
284
339
|
end
|
285
340
|
|
286
341
|
def initiator(options)
|
@@ -137,6 +137,10 @@ module ActiveMerchant #:nodoc:
|
|
137
137
|
commit_card('delete', post)
|
138
138
|
end
|
139
139
|
|
140
|
+
def inquire(authorization, options = {})
|
141
|
+
commit_transaction('inquire', authorization)
|
142
|
+
end
|
143
|
+
|
140
144
|
def supports_scrubbing?
|
141
145
|
true
|
142
146
|
end
|
@@ -232,12 +236,20 @@ module ActiveMerchant #:nodoc:
|
|
232
236
|
end
|
233
237
|
|
234
238
|
def commit_raw(object, action, parameters)
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
239
|
+
if action == 'inquire'
|
240
|
+
url = "#{(test? ? test_url : live_url)}#{object}/#{parameters}"
|
241
|
+
begin
|
242
|
+
raw_response = ssl_get(url, headers)
|
243
|
+
rescue ResponseError => e
|
244
|
+
raw_response = e.response.body
|
245
|
+
end
|
246
|
+
else
|
247
|
+
url = "#{(test? ? test_url : live_url)}#{object}/#{action}"
|
248
|
+
begin
|
249
|
+
raw_response = ssl_post(url, post_data(parameters), headers)
|
250
|
+
rescue ResponseError => e
|
251
|
+
raw_response = e.response.body
|
252
|
+
end
|
241
253
|
end
|
242
254
|
|
243
255
|
begin
|
@@ -13,6 +13,10 @@ module ActiveMerchant #:nodoc:
|
|
13
13
|
(@params['PaymentDetails']||{})
|
14
14
|
end
|
15
15
|
|
16
|
+
def checkout_status
|
17
|
+
(@params['CheckoutStatus']||{})
|
18
|
+
end
|
19
|
+
|
16
20
|
def name
|
17
21
|
payer = (info['PayerName']||{})
|
18
22
|
[payer['FirstName'], payer['MiddleName'], payer['LastName']].compact.join(' ')
|
@@ -17,14 +17,8 @@ module ActiveMerchant #:nodoc:
|
|
17
17
|
|
18
18
|
def purchase(money, payment, options = {})
|
19
19
|
post = {}
|
20
|
-
|
21
|
-
add_payment(post, payment)
|
22
|
-
add_billing_address(post, options)
|
23
|
-
add_merchant_details(post, options)
|
20
|
+
add_auth_purchase_params(post, money, payment, options)
|
24
21
|
add_airline_travel_details(post, options)
|
25
|
-
add_customer_data(post, payment, options) unless payment.is_a?(String)
|
26
|
-
add_three_d_secure(post, payment, options) if options[:three_d_secure]
|
27
|
-
add_stored_credential(post, options) if options[:stored_credential]
|
28
22
|
add_split_pay_details(post, options)
|
29
23
|
post[:settleWithAuth] = true
|
30
24
|
|
@@ -33,13 +27,7 @@ module ActiveMerchant #:nodoc:
|
|
33
27
|
|
34
28
|
def authorize(money, payment, options = {})
|
35
29
|
post = {}
|
36
|
-
|
37
|
-
add_payment(post, payment)
|
38
|
-
add_billing_address(post, options)
|
39
|
-
add_merchant_details(post, options)
|
40
|
-
add_customer_data(post, payment, options) unless payment.is_a?(String)
|
41
|
-
add_three_d_secure(post, payment, options) if options[:three_d_secure]
|
42
|
-
add_stored_credential(post, options) if options[:stored_credential]
|
30
|
+
add_auth_purchase_params(post, money, payment, options)
|
43
31
|
|
44
32
|
commit(:post, 'auths', post, options)
|
45
33
|
end
|
@@ -111,6 +99,17 @@ module ActiveMerchant #:nodoc:
|
|
111
99
|
|
112
100
|
private
|
113
101
|
|
102
|
+
def add_auth_purchase_params(post, money, payment, options)
|
103
|
+
add_invoice(post, money, options)
|
104
|
+
add_payment(post, payment)
|
105
|
+
add_billing_address(post, options)
|
106
|
+
add_merchant_details(post, options)
|
107
|
+
add_customer_data(post, payment, options) unless payment.is_a?(String)
|
108
|
+
add_three_d_secure(post, payment, options) if options[:three_d_secure]
|
109
|
+
add_stored_credential(post, options) if options[:stored_credential]
|
110
|
+
add_funding_transaction(post, options)
|
111
|
+
end
|
112
|
+
|
114
113
|
# Customer data can be included in transactions where the payment method is a credit card
|
115
114
|
# but should not be sent when the payment method is a token
|
116
115
|
def add_customer_data(post, creditcard, options)
|
@@ -286,6 +285,15 @@ module ActiveMerchant #:nodoc:
|
|
286
285
|
post[:splitpay] = split_pay
|
287
286
|
end
|
288
287
|
|
288
|
+
def add_funding_transaction(post, options)
|
289
|
+
return unless options[:funding_transaction]
|
290
|
+
|
291
|
+
post[:fundingTransaction] = {}
|
292
|
+
post[:fundingTransaction][:type] = options[:funding_transaction]
|
293
|
+
post[:profile] ||= {}
|
294
|
+
post[:profile][:merchantCustomerId] = options[:customer_id] || SecureRandom.hex(12)
|
295
|
+
end
|
296
|
+
|
289
297
|
def add_stored_credential(post, options)
|
290
298
|
return unless options[:stored_credential]
|
291
299
|
|
@@ -313,6 +313,9 @@ module ActiveMerchant #:nodoc:
|
|
313
313
|
def add_extra_parameters(post, options)
|
314
314
|
extra_parameters = {}
|
315
315
|
extra_parameters[:INSTALLMENTS_NUMBER] = options[:installments_number] || 1
|
316
|
+
extra_parameters[:EXTRA1] = options[:extra_1] if options[:extra_1]
|
317
|
+
extra_parameters[:EXTRA2] = options[:extra_2] if options[:extra_2]
|
318
|
+
extra_parameters[:EXTRA3] = options[:extra_3] if options[:extra_3]
|
316
319
|
post[:transaction][:extraParameters] = extra_parameters
|
317
320
|
end
|
318
321
|
|