activemerchant 1.86.0 → 1.87.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG +22 -0
- data/lib/active_merchant/billing/avs_result.rb +0 -1
- data/lib/active_merchant/billing/check.rb +1 -1
- data/lib/active_merchant/billing/compatibility.rb +3 -3
- data/lib/active_merchant/billing/credit_card.rb +1 -1
- data/lib/active_merchant/billing/credit_card_formatting.rb +3 -3
- data/lib/active_merchant/billing/credit_card_methods.rb +6 -4
- data/lib/active_merchant/billing/gateway.rb +9 -9
- data/lib/active_merchant/billing/gateways/adyen.rb +48 -7
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +1 -1
- data/lib/active_merchant/billing/gateways/authorize_net.rb +8 -8
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +1 -1
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +15 -15
- data/lib/active_merchant/billing/gateways/axcessms.rb +2 -2
- data/lib/active_merchant/billing/gateways/balanced.rb +11 -11
- data/lib/active_merchant/billing/gateways/bank_frick.rb +1 -1
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +5 -5
- data/lib/active_merchant/billing/gateways/beanstream.rb +3 -2
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +5 -5
- data/lib/active_merchant/billing/gateways/blue_pay.rb +5 -5
- data/lib/active_merchant/billing/gateways/blue_snap.rb +5 -5
- data/lib/active_merchant/billing/gateways/bogus.rb +3 -3
- data/lib/active_merchant/billing/gateways/borgun.rb +5 -6
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +18 -12
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/cams.rb +12 -12
- data/lib/active_merchant/billing/gateways/card_stream.rb +9 -9
- data/lib/active_merchant/billing/gateways/cardknox.rb +4 -4
- data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
- data/lib/active_merchant/billing/gateways/cashnet.rb +2 -2
- data/lib/active_merchant/billing/gateways/cc5.rb +2 -2
- data/lib/active_merchant/billing/gateways/cenpos.rb +2 -2
- data/lib/active_merchant/billing/gateways/checkout.rb +1 -1
- data/lib/active_merchant/billing/gateways/clearhaus.rb +12 -12
- data/lib/active_merchant/billing/gateways/commercegate.rb +3 -3
- data/lib/active_merchant/billing/gateways/creditcall.rb +2 -2
- data/lib/active_merchant/billing/gateways/credorax.rb +13 -3
- data/lib/active_merchant/billing/gateways/ct_payment.rb +6 -6
- data/lib/active_merchant/billing/gateways/culqi.rb +1 -1
- data/lib/active_merchant/billing/gateways/cyber_source.rb +8 -8
- data/lib/active_merchant/billing/gateways/data_cash.rb +2 -2
- data/lib/active_merchant/billing/gateways/dibs.rb +2 -2
- data/lib/active_merchant/billing/gateways/digitzs.rb +5 -5
- data/lib/active_merchant/billing/gateways/ebanx.rb +1 -1
- data/lib/active_merchant/billing/gateways/efsnet.rb +4 -4
- data/lib/active_merchant/billing/gateways/elavon.rb +3 -3
- data/lib/active_merchant/billing/gateways/element.rb +4 -4
- data/lib/active_merchant/billing/gateways/epay.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway.rb +2 -2
- data/lib/active_merchant/billing/gateways/eway_managed.rb +5 -5
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +1 -1
- data/lib/active_merchant/billing/gateways/exact.rb +1 -1
- data/lib/active_merchant/billing/gateways/federated_canada.rb +1 -1
- data/lib/active_merchant/billing/gateways/first_giving.rb +1 -1
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +7 -7
- data/lib/active_merchant/billing/gateways/flo2cash.rb +2 -2
- data/lib/active_merchant/billing/gateways/forte.rb +11 -7
- data/lib/active_merchant/billing/gateways/garanti.rb +5 -5
- data/lib/active_merchant/billing/gateways/global_collect.rb +2 -3
- data/lib/active_merchant/billing/gateways/hdfc.rb +2 -2
- data/lib/active_merchant/billing/gateways/hps.rb +3 -3
- data/lib/active_merchant/billing/gateways/inspire.rb +7 -7
- data/lib/active_merchant/billing/gateways/iridium.rb +14 -14
- data/lib/active_merchant/billing/gateways/itransact.rb +4 -4
- data/lib/active_merchant/billing/gateways/iveri.rb +3 -3
- data/lib/active_merchant/billing/gateways/jetpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/latitude19.rb +1 -1
- data/lib/active_merchant/billing/gateways/linkpoint.rb +3 -3
- data/lib/active_merchant/billing/gateways/litle.rb +2 -2
- data/lib/active_merchant/billing/gateways/maxipago.rb +1 -1
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +7 -13
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +3 -3
- data/lib/active_merchant/billing/gateways/merchant_one.rb +4 -4
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +3 -3
- data/lib/active_merchant/billing/gateways/mercury.rb +2 -2
- data/lib/active_merchant/billing/gateways/metrics_global.rb +2 -2
- data/lib/active_merchant/billing/gateways/micropayment.rb +1 -1
- data/lib/active_merchant/billing/gateways/migs.rb +4 -6
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +2 -2
- data/lib/active_merchant/billing/gateways/moneris.rb +85 -56
- data/lib/active_merchant/billing/gateways/moneris_us.rb +9 -9
- data/lib/active_merchant/billing/gateways/money_movers.rb +1 -1
- data/lib/active_merchant/billing/gateways/mundipagg.rb +1 -1
- data/lib/active_merchant/billing/gateways/nab_transact.rb +1 -1
- data/lib/active_merchant/billing/gateways/net_registry.rb +2 -2
- data/lib/active_merchant/billing/gateways/netaxept.rb +6 -6
- data/lib/active_merchant/billing/gateways/netbanx.rb +36 -36
- data/lib/active_merchant/billing/gateways/netbilling.rb +2 -2
- data/lib/active_merchant/billing/gateways/netpay.rb +1 -1
- data/lib/active_merchant/billing/gateways/nmi.rb +2 -2
- data/lib/active_merchant/billing/gateways/ogone.rb +7 -7
- data/lib/active_merchant/billing/gateways/omise.rb +6 -6
- data/lib/active_merchant/billing/gateways/opp.rb +1 -1
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +5 -0
- data/lib/active_merchant/billing/gateways/orbital.rb +9 -7
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +6 -6
- data/lib/active_merchant/billing/gateways/pagarme.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_conex.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +8 -5
- data/lib/active_merchant/billing/gateways/pay_hub.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_junction.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_secure.rb +3 -3
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +8 -8
- data/lib/active_merchant/billing/gateways/payeezy.rb +1 -1
- data/lib/active_merchant/billing/gateways/payex.rb +8 -8
- data/lib/active_merchant/billing/gateways/payflow.rb +13 -13
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +4 -4
- data/lib/active_merchant/billing/gateways/payflow_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/payment_express.rb +10 -10
- data/lib/active_merchant/billing/gateways/paymentez.rb +3 -0
- data/lib/active_merchant/billing/gateways/paymill.rb +4 -4
- data/lib/active_merchant/billing/gateways/payscout.rb +1 -1
- data/lib/active_merchant/billing/gateways/paystation.rb +1 -1
- data/lib/active_merchant/billing/gateways/payu_in.rb +3 -3
- data/lib/active_merchant/billing/gateways/payu_latam.rb +1 -1
- data/lib/active_merchant/billing/gateways/payway.rb +2 -2
- data/lib/active_merchant/billing/gateways/plugnpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/pro_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/psigate.rb +1 -1
- data/lib/active_merchant/billing/gateways/psl_card.rb +3 -3
- data/lib/active_merchant/billing/gateways/qbms.rb +1 -1
- data/lib/active_merchant/billing/gateways/quantum.rb +7 -7
- data/lib/active_merchant/billing/gateways/quickbooks.rb +6 -6
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +1 -1
- data/lib/active_merchant/billing/gateways/qvalent.rb +2 -2
- data/lib/active_merchant/billing/gateways/realex.rb +33 -13
- data/lib/active_merchant/billing/gateways/redsys.rb +2 -2
- data/lib/active_merchant/billing/gateways/safe_charge.rb +2 -2
- data/lib/active_merchant/billing/gateways/sage.rb +6 -6
- data/lib/active_merchant/billing/gateways/sage_pay.rb +7 -7
- data/lib/active_merchant/billing/gateways/secure_net.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +1 -1
- data/lib/active_merchant/billing/gateways/skip_jack.rb +5 -6
- data/lib/active_merchant/billing/gateways/smart_ps.rb +7 -7
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/stripe.rb +5 -5
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +2 -2
- data/lib/active_merchant/billing/gateways/telr.rb +1 -1
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/transact_pro.rb +5 -5
- data/lib/active_merchant/billing/gateways/transax.rb +1 -1
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +7 -7
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +17 -16
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +2 -2
- data/lib/active_merchant/billing/gateways/vanco.rb +2 -2
- data/lib/active_merchant/billing/gateways/verifi.rb +1 -1
- data/lib/active_merchant/billing/gateways/viaklix.rb +4 -4
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +4 -4
- data/lib/active_merchant/billing/gateways/wirecard.rb +2 -2
- data/lib/active_merchant/billing/gateways/worldpay.rb +24 -13
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +2 -2
- data/lib/active_merchant/billing/response.rb +7 -7
- data/lib/active_merchant/country.rb +4 -4
- data/lib/active_merchant/network_connection_retries.rb +7 -9
- data/lib/active_merchant/version.rb +1 -1
- data/lib/support/gateway_support.rb +3 -3
- data/lib/support/ssl_verify.rb +1 -1
- metadata +3 -3
@@ -186,7 +186,7 @@ module ActiveMerchant #:nodoc:
|
|
186
186
|
def parse(body)
|
187
187
|
results = {}
|
188
188
|
body.split(/&/).each do |pair|
|
189
|
-
key,val = pair.split(/\=/)
|
189
|
+
key, val = pair.split(/\=/)
|
190
190
|
results[key.to_sym] = CGI.unescape(val)
|
191
191
|
end
|
192
192
|
results
|
@@ -224,7 +224,7 @@ module ActiveMerchant #:nodoc:
|
|
224
224
|
parameters[:pay_type] = 'C'
|
225
225
|
parameters[:tran_type] = TRANSACTIONS[action]
|
226
226
|
|
227
|
-
parameters.reject{|k,v| v.blank?}.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
227
|
+
parameters.reject { |k, v| v.blank? }.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
228
228
|
end
|
229
229
|
|
230
230
|
end
|
@@ -190,7 +190,7 @@ module ActiveMerchant #:nodoc:
|
|
190
190
|
add_login_data(parameters)
|
191
191
|
add_action(parameters, action, options)
|
192
192
|
|
193
|
-
post = parameters.collect{|key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
193
|
+
post = parameters.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
194
194
|
parse(ssl_post(url, post), parameters)
|
195
195
|
end
|
196
196
|
|
@@ -246,7 +246,7 @@ module ActiveMerchant #:nodoc:
|
|
246
246
|
end
|
247
247
|
|
248
248
|
def post_data(action, params)
|
249
|
-
params.map {|k, v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
|
249
|
+
params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
250
250
|
end
|
251
251
|
|
252
252
|
def url
|
@@ -254,7 +254,7 @@ module ActiveMerchant #:nodoc:
|
|
254
254
|
end
|
255
255
|
|
256
256
|
def parse(body)
|
257
|
-
Hash[CGI::parse(body).map { |k,v| [k.intern, v.first] }]
|
257
|
+
Hash[CGI::parse(body).map { |k, v| [k.intern, v.first] }]
|
258
258
|
end
|
259
259
|
|
260
260
|
def success_from(response)
|
@@ -149,7 +149,7 @@ module ActiveMerchant #:nodoc:
|
|
149
149
|
# Verify and reserve the specified amount on the account, without actually doing the transaction.
|
150
150
|
def authorize(money, payment_source, options = {})
|
151
151
|
post = {}
|
152
|
-
action =
|
152
|
+
action = payment_source.brand == 'mastercard' ? 'PAU' : 'RES'
|
153
153
|
add_invoice(post, options)
|
154
154
|
add_payment_source(post, payment_source, options)
|
155
155
|
add_address(post, payment_source, options)
|
@@ -213,7 +213,7 @@ module ActiveMerchant #:nodoc:
|
|
213
213
|
|
214
214
|
# Store a credit card by creating an Ogone Alias
|
215
215
|
def store(payment_source, options = {})
|
216
|
-
options
|
216
|
+
options[:alias_operation] = 'BYPSP' unless(options.has_key?(:billing_id) || options.has_key?(:store))
|
217
217
|
response = authorize(@options[:store_amount] || 1, payment_source, options)
|
218
218
|
void(response.authorization) if response.success?
|
219
219
|
response
|
@@ -301,8 +301,8 @@ module ActiveMerchant #:nodoc:
|
|
301
301
|
add_pair post, 'ECI', eci.to_s
|
302
302
|
end
|
303
303
|
|
304
|
-
def add_alias(post,
|
305
|
-
add_pair post, 'ALIAS',
|
304
|
+
def add_alias(post, alias_name, alias_operation = nil)
|
305
|
+
add_pair post, 'ALIAS', alias_name
|
306
306
|
add_pair post, 'ALIASOPERATION', alias_operation unless alias_operation.nil?
|
307
307
|
end
|
308
308
|
|
@@ -429,9 +429,9 @@ module ActiveMerchant #:nodoc:
|
|
429
429
|
raise "Unknown signature algorithm #{algorithm}"
|
430
430
|
end
|
431
431
|
|
432
|
-
filtered_params = signed_parameters.select{|k,v| !v.blank?}
|
432
|
+
filtered_params = signed_parameters.select { |k, v| !v.blank? }
|
433
433
|
sha_encryptor.hexdigest(
|
434
|
-
filtered_params.sort_by{|k,v| k.upcase}.map{|k, v| "#{k.upcase}=#{v}#{secret}"}.join('')
|
434
|
+
filtered_params.sort_by { |k, v| k.upcase }.map { |k, v| "#{k.upcase}=#{v}#{secret}" }.join('')
|
435
435
|
).upcase
|
436
436
|
end
|
437
437
|
|
@@ -446,7 +446,7 @@ module ActiveMerchant #:nodoc:
|
|
446
446
|
PSPID
|
447
447
|
Operation
|
448
448
|
ALIAS
|
449
|
-
).map{|key| parameters[key]} +
|
449
|
+
).map { |key| parameters[key] } +
|
450
450
|
[secret]
|
451
451
|
).join('')
|
452
452
|
).upcase
|
@@ -164,7 +164,7 @@ module ActiveMerchant #:nodoc:
|
|
164
164
|
transcript.
|
165
165
|
gsub(/(Authorization: Basic )\w+/i, '\1[FILTERED]').
|
166
166
|
gsub(/(\\"number\\":)\\"\d+\\"/, '\1[FILTERED]').
|
167
|
-
gsub(/(\\"security_code\\":)\\"\d+\\"/,'\1[FILTERED]')
|
167
|
+
gsub(/(\\"security_code\\":)\\"\d+\\"/, '\1[FILTERED]')
|
168
168
|
end
|
169
169
|
|
170
170
|
private
|
@@ -246,15 +246,15 @@ module ActiveMerchant #:nodoc:
|
|
246
246
|
def message_to_standard_error_code_from(response)
|
247
247
|
message = response['message'] if response['code'] == 'invalid_card'
|
248
248
|
case message
|
249
|
-
|
249
|
+
when /brand not supported/
|
250
250
|
STANDARD_ERROR_CODE[:invalid_number]
|
251
|
-
|
251
|
+
when /number is invalid/
|
252
252
|
STANDARD_ERROR_CODE[:incorrect_number]
|
253
|
-
|
253
|
+
when /expiration date cannot be in the past/
|
254
254
|
STANDARD_ERROR_CODE[:expired_card]
|
255
|
-
|
255
|
+
when /expiration \w+ is invalid/
|
256
256
|
STANDARD_ERROR_CODE[:invalid_expiry_date]
|
257
|
-
|
257
|
+
else
|
258
258
|
STANDARD_ERROR_CODE[:processing_error]
|
259
259
|
end
|
260
260
|
end
|
@@ -272,7 +272,7 @@ module ActiveMerchant #:nodoc:
|
|
272
272
|
def add_options(post, options)
|
273
273
|
post[:createRegistration] = options[:create_registration] if options[:create_registration] && !options[:registrationId]
|
274
274
|
post[:testMode] = options[:test_mode] if test? && options[:test_mode]
|
275
|
-
options.each {|key, value| post[key] = value if key.to_s.match('customParameters\[[a-zA-Z0-9\._]{3,64}\]') }
|
275
|
+
options.each { |key, value| post[key] = value if key.to_s.match('customParameters\[[a-zA-Z0-9\._]{3,64}\]') }
|
276
276
|
post['customParameters[SHOPPER_pluginId]'] = 'activemerchant'
|
277
277
|
post['customParameters[custom_disable3DSecure]'] = options[:disable_3d_secure] if options[:disable_3d_secure]
|
278
278
|
end
|
@@ -60,6 +60,11 @@ module ActiveMerchant #:nodoc:
|
|
60
60
|
commit('ccSettlement', money, options)
|
61
61
|
end
|
62
62
|
|
63
|
+
def verify(credit_card, options = {})
|
64
|
+
parse_card_or_auth(credit_card, options)
|
65
|
+
commit('ccVerification', 0, options)
|
66
|
+
end
|
67
|
+
|
63
68
|
def supports_scrubbing?
|
64
69
|
true
|
65
70
|
end
|
@@ -273,13 +273,13 @@ module ActiveMerchant #:nodoc:
|
|
273
273
|
# 'MS' - Manual Suspend
|
274
274
|
|
275
275
|
def add_customer_profile(creditcard, options = {})
|
276
|
-
options
|
276
|
+
options[:customer_profile_action] = CREATE
|
277
277
|
order = build_customer_request_xml(creditcard, options)
|
278
278
|
commit(order, :add_customer_profile)
|
279
279
|
end
|
280
280
|
|
281
281
|
def update_customer_profile(creditcard, options = {})
|
282
|
-
options
|
282
|
+
options[:customer_profile_action] = UPDATE
|
283
283
|
order = build_customer_request_xml(creditcard, options)
|
284
284
|
commit(order, :update_customer_profile)
|
285
285
|
end
|
@@ -516,12 +516,12 @@ module ActiveMerchant #:nodoc:
|
|
516
516
|
end
|
517
517
|
end
|
518
518
|
|
519
|
-
response.delete_if { |k,_| SENSITIVE_FIELDS.include?(k) }
|
519
|
+
response.delete_if { |k, _| SENSITIVE_FIELDS.include?(k) }
|
520
520
|
end
|
521
521
|
|
522
522
|
def recurring_parse_element(response, node)
|
523
523
|
if node.has_elements?
|
524
|
-
node.elements.each{|e| recurring_parse_element(response, e) }
|
524
|
+
node.elements.each { |e| recurring_parse_element(response, e) }
|
525
525
|
else
|
526
526
|
response[node.name.underscore.to_sym] = node.text
|
527
527
|
end
|
@@ -529,9 +529,11 @@ module ActiveMerchant #:nodoc:
|
|
529
529
|
|
530
530
|
def commit(order, message_type, trace_number=nil)
|
531
531
|
headers = POST_HEADERS.merge('Content-length' => order.size.to_s)
|
532
|
-
|
533
|
-
|
534
|
-
|
532
|
+
if @options[:retry_logic] && trace_number
|
533
|
+
headers['Trace-number'] = trace_number.to_s
|
534
|
+
headers['Merchant-Id'] = @options[:merchant_id]
|
535
|
+
end
|
536
|
+
request = ->(url) { parse(ssl_post(url, order, headers)) }
|
535
537
|
|
536
538
|
# Failover URL will be attempted in the event of a connection error
|
537
539
|
response = begin
|
@@ -107,7 +107,7 @@ module ActiveMerchant #:nodoc:
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def parse(body)
|
110
|
-
Hash[body.split('&').map{|x| x.split('=').map{|y| CGI.unescape(y)}}]
|
110
|
+
Hash[body.split('&').map { |x| x.split('=').map { |y| CGI.unescape(y) } }]
|
111
111
|
end
|
112
112
|
|
113
113
|
def commit(action, money, parameters)
|
@@ -193,11 +193,11 @@ module ActiveMerchant #:nodoc:
|
|
193
193
|
|
194
194
|
def signature(action, post, parameters = {})
|
195
195
|
string = if %w(cc_settle cc_debit cc_preauth cc_refund).include?(action)
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
196
|
+
post['UserName'] + post['Timestamp'] + post['RequestID'] + post['PymtType'] + parameters['Amount'].to_s + parameters['Currency']
|
197
|
+
elsif action == 'void'
|
198
|
+
post['UserName'] + post['Timestamp'] + post['RequestID'] + parameters['TrackingNumber']
|
199
|
+
else
|
200
|
+
post['UserName']
|
201
201
|
end
|
202
202
|
OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA1.new(@options[:secret]), @options[:secret], string)
|
203
203
|
end
|
@@ -231,7 +231,7 @@ module ActiveMerchant #:nodoc:
|
|
231
231
|
|
232
232
|
def post_data(action, params)
|
233
233
|
params[:transaction_type] = action
|
234
|
-
params.map {|k, v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
|
234
|
+
params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
235
235
|
end
|
236
236
|
|
237
237
|
def unparsable_response(raw_response)
|
@@ -162,29 +162,32 @@ module ActiveMerchant #:nodoc:
|
|
162
162
|
|
163
163
|
def purchase(money, creditcard, options = {})
|
164
164
|
MultiResponse.run do |r|
|
165
|
-
r.process{authorize(money, creditcard, options)}
|
166
|
-
r.process{capture(money, r.authorization, options)}
|
165
|
+
r.process { authorize(money, creditcard, options) }
|
166
|
+
r.process { capture(money, r.authorization, options) }
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
170
|
def authorize(money, creditcard, options = {})
|
171
171
|
action = 'authtx'
|
172
172
|
|
173
|
-
options
|
173
|
+
options[:money] = money
|
174
|
+
options[:creditcard] = creditcard
|
174
175
|
commit(action, build_request(action, options))
|
175
176
|
end
|
176
177
|
|
177
178
|
def capture(money, authorization, options = {})
|
178
179
|
action = 'settletx'
|
179
180
|
|
180
|
-
options
|
181
|
+
options[:money] = money
|
182
|
+
options[:authorization] = authorization
|
181
183
|
commit(action, build_request(action, options), authorization)
|
182
184
|
end
|
183
185
|
|
184
186
|
def refund(money, authorization, options={})
|
185
187
|
action = 'refundtx'
|
186
188
|
|
187
|
-
options
|
189
|
+
options[:money] = money
|
190
|
+
options[:authorization] = authorization
|
188
191
|
commit(action, build_request(action, options))
|
189
192
|
end
|
190
193
|
|
@@ -171,7 +171,7 @@ module ActiveMerchant #:nodoc:
|
|
171
171
|
success = false
|
172
172
|
|
173
173
|
begin
|
174
|
-
raw_response = ssl_post(live_url, post.to_json, {'Content-Type' => 'application/json'}
|
174
|
+
raw_response = ssl_post(live_url, post.to_json, {'Content-Type' => 'application/json'})
|
175
175
|
response = parse(raw_response)
|
176
176
|
success = (response['RESPONSE_CODE'] == '00')
|
177
177
|
rescue ResponseError => e
|
@@ -200,7 +200,7 @@ module ActiveMerchant #:nodoc:
|
|
200
200
|
|
201
201
|
def json_error(raw_response)
|
202
202
|
{
|
203
|
-
error_message: 'Invalid response received from the Payhub API. Please contact wecare@payhub.com if you continue to receive this message.'
|
203
|
+
error_message: 'Invalid response received from the Payhub API. Please contact wecare@payhub.com if you continue to receive this message.' \
|
204
204
|
" (The raw response returned by the API was #{raw_response.inspect})"
|
205
205
|
}
|
206
206
|
end
|
@@ -334,7 +334,7 @@ module ActiveMerchant #:nodoc:
|
|
334
334
|
def commit(action, parameters)
|
335
335
|
url = test? ? self.test_url : self.live_url
|
336
336
|
|
337
|
-
response = parse(
|
337
|
+
response = parse(ssl_post(url, post_data(action, parameters)))
|
338
338
|
|
339
339
|
Response.new(successful?(response), message_from(response), response,
|
340
340
|
:test => test?,
|
@@ -366,7 +366,7 @@ module ActiveMerchant #:nodoc:
|
|
366
366
|
params[:version] = API_VERSION
|
367
367
|
params[:transaction_type] = action
|
368
368
|
|
369
|
-
params.reject{|k,v| v.blank?}.collect{ |k, v| "dc_#{k
|
369
|
+
params.reject { |k, v| v.blank? }.collect { |k, v| "dc_#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
370
370
|
end
|
371
371
|
|
372
372
|
def parse(body)
|
@@ -146,7 +146,7 @@ module ActiveMerchant #:nodoc:
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def post_data(params)
|
149
|
-
params.map {|k, v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
|
149
|
+
params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
150
150
|
end
|
151
151
|
|
152
152
|
def url(params={})
|
@@ -173,7 +173,7 @@ module ActiveMerchant #:nodoc:
|
|
173
173
|
def message_from(response)
|
174
174
|
return response['response']['message'] if response['response']
|
175
175
|
|
176
|
-
response['errors']&.inject(''){ |message,error| error['message'] + '|' + message }
|
176
|
+
response['errors']&.inject('') { |message, error| error['message'] + '|' + message }
|
177
177
|
end
|
178
178
|
|
179
179
|
def authorization_from(response)
|
@@ -52,7 +52,7 @@ module ActiveMerchant #:nodoc:
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def add_invoice(post, options)
|
55
|
-
post[:merchant_transid] = options[:order_id].to_s.slice(0,21)
|
55
|
+
post[:merchant_transid] = options[:order_id].to_s.slice(0, 21)
|
56
56
|
post[:memnum] = options[:invoice]
|
57
57
|
post[:custnum] = options[:customer]
|
58
58
|
post[:clientdata] = options[:description]
|
@@ -66,7 +66,7 @@ module ActiveMerchant #:nodoc:
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def commit(action, money, parameters)
|
69
|
-
response = parse(
|
69
|
+
response = parse(ssl_post(self.live_url, post_data(action, parameters)))
|
70
70
|
|
71
71
|
Response.new(successful?(response), message_from(response), response,
|
72
72
|
:test => test_response?(response),
|
@@ -104,7 +104,7 @@ module ActiveMerchant #:nodoc:
|
|
104
104
|
parameters[:merchant_id] = @options[:login]
|
105
105
|
parameters[:password] = @options[:password]
|
106
106
|
|
107
|
-
parameters.reject{|k,v| v.blank?}.collect { |key, value| "#{key.to_s.upcase}=#{CGI.escape(value.to_s)}" }.join('&')
|
107
|
+
parameters.reject { |k, v| v.blank? }.collect { |key, value| "#{key.to_s.upcase}=#{CGI.escape(value.to_s)}" }.join('&')
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
@@ -86,8 +86,8 @@ module ActiveMerchant #:nodoc:
|
|
86
86
|
post = {}
|
87
87
|
add_invoice(post, options)
|
88
88
|
add_amount(post, money, options)
|
89
|
-
post[:numappel] = authorization[0,10]
|
90
|
-
post[:numtrans] = authorization[10,10]
|
89
|
+
post[:numappel] = authorization[0, 10]
|
90
|
+
post[:numtrans] = authorization[10, 10]
|
91
91
|
|
92
92
|
commit('capture', money, post)
|
93
93
|
end
|
@@ -130,8 +130,8 @@ module ActiveMerchant #:nodoc:
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def add_reference(post, identification)
|
133
|
-
post[:numappel] = identification[0,10]
|
134
|
-
post[:numtrans] = identification[10,10]
|
133
|
+
post[:numappel] = identification[0, 10]
|
134
|
+
post[:numtrans] = identification[10, 10]
|
135
135
|
end
|
136
136
|
|
137
137
|
def add_amount(post, money, options)
|
@@ -142,14 +142,14 @@ module ActiveMerchant #:nodoc:
|
|
142
142
|
def parse(body)
|
143
143
|
results = {}
|
144
144
|
body.split(/&/).each do |pair|
|
145
|
-
key,val = pair.split(/\=/)
|
145
|
+
key, val = pair.split(/\=/)
|
146
146
|
results[key.downcase.to_sym] = CGI.unescape(val) if val
|
147
147
|
end
|
148
148
|
results
|
149
149
|
end
|
150
150
|
|
151
151
|
def commit(action, money = nil, parameters = nil)
|
152
|
-
request_data = post_data(action,parameters)
|
152
|
+
request_data = post_data(action, parameters)
|
153
153
|
response = parse(ssl_post(test? ? self.test_url : self.live_url, request_data))
|
154
154
|
response = parse(ssl_post(self.live_url_backup, request_data)) if service_unavailable?(response) && !test?
|
155
155
|
Response.new(success?(response), message_from(response), response.merge(
|
@@ -157,7 +157,7 @@ module ActiveMerchant #:nodoc:
|
|
157
157
|
:test => test?,
|
158
158
|
:authorization => response[:numappel].to_s + response[:numtrans].to_s,
|
159
159
|
:fraud_review => false,
|
160
|
-
:sent_params => parameters.delete_if{|key,value| ['porteur','dateval','cvv'].include?(key.to_s)}
|
160
|
+
:sent_params => parameters.delete_if { |key, value| ['porteur', 'dateval', 'cvv'].include?(key.to_s) }
|
161
161
|
)
|
162
162
|
end
|
163
163
|
|
@@ -179,7 +179,7 @@ module ActiveMerchant #:nodoc:
|
|
179
179
|
:type => TRANSACTIONS[action.to_sym],
|
180
180
|
:dateq => Time.now.strftime('%d%m%Y%H%M%S'),
|
181
181
|
:numquestion => unique_id(parameters[:order_id]),
|
182
|
-
:site => @options[:login].to_s[0,7],
|
182
|
+
:site => @options[:login].to_s[0, 7],
|
183
183
|
:rang => @options[:rang] || @options[:login].to_s[7..-1],
|
184
184
|
:cle => @options[:password],
|
185
185
|
:pays => '',
|
@@ -135,7 +135,7 @@ module ActiveMerchant
|
|
135
135
|
|
136
136
|
def add_authorization_info(params, authorization, options = {})
|
137
137
|
transaction_id, transaction_tag, method, _ = authorization.split('|')
|
138
|
-
params[:method] =
|
138
|
+
params[:method] = method == 'token' ? 'credit_card' : method
|
139
139
|
|
140
140
|
if options[:reversal_id]
|
141
141
|
params[:reversal_id] = options[:reversal_id]
|
@@ -63,8 +63,8 @@ module ActiveMerchant #:nodoc:
|
|
63
63
|
if payment_method.respond_to?(:number)
|
64
64
|
# credit card authorization
|
65
65
|
MultiResponse.new.tap do |r|
|
66
|
-
r.process {send_initialize(amount, true, options)}
|
67
|
-
r.process {send_purchasecc(payment_method, r.params['orderref'])}
|
66
|
+
r.process { send_initialize(amount, true, options) }
|
67
|
+
r.process { send_purchasecc(payment_method, r.params['orderref']) }
|
68
68
|
end
|
69
69
|
else
|
70
70
|
# stored authorization
|
@@ -91,8 +91,8 @@ module ActiveMerchant #:nodoc:
|
|
91
91
|
if payment_method.respond_to?(:number)
|
92
92
|
# credit card purchase
|
93
93
|
MultiResponse.new.tap do |r|
|
94
|
-
r.process {send_initialize(amount, false, options)}
|
95
|
-
r.process {send_purchasecc(payment_method, r.params['orderref'])}
|
94
|
+
r.process { send_initialize(amount, false, options) }
|
95
|
+
r.process { send_purchasecc(payment_method, r.params['orderref']) }
|
96
96
|
end
|
97
97
|
else
|
98
98
|
# stored purchase
|
@@ -154,10 +154,10 @@ module ActiveMerchant #:nodoc:
|
|
154
154
|
requires!(options, :order_id)
|
155
155
|
amount = amount(1) # 1 cent for authorization
|
156
156
|
MultiResponse.run(:first) do |r|
|
157
|
-
r.process {send_create_agreement(options)}
|
158
|
-
r.process {send_initialize(amount, true, options.merge({agreement_ref: r.authorization}))}
|
157
|
+
r.process { send_create_agreement(options) }
|
158
|
+
r.process { send_initialize(amount, true, options.merge({agreement_ref: r.authorization})) }
|
159
159
|
order_ref = r.params['orderref']
|
160
|
-
r.process {send_purchasecc(creditcard, order_ref)}
|
160
|
+
r.process { send_purchasecc(creditcard, order_ref) }
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
@@ -364,7 +364,7 @@ module ActiveMerchant #:nodoc:
|
|
364
364
|
doc = Nokogiri::XML(body)
|
365
365
|
|
366
366
|
doc.root&.xpath('*')&.each do |node|
|
367
|
-
if
|
367
|
+
if node.elements.size == 0
|
368
368
|
response[node.name.downcase.to_sym] = node.text
|
369
369
|
else
|
370
370
|
node.elements.each do |childnode|
|