activemerchant 1.86.0 → 1.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -234,7 +234,7 @@ module ActiveMerchant #:nodoc:
|
|
|
234
234
|
def parse(body)
|
|
235
235
|
fields = {}
|
|
236
236
|
for line in body.split('&')
|
|
237
|
-
key, value = *line.scan(
|
|
237
|
+
key, value = *line.scan(%r{^(\w+)\=(.*)$}).flatten
|
|
238
238
|
fields[key] = CGI.unescape(value.to_s)
|
|
239
239
|
end
|
|
240
240
|
|
|
@@ -253,7 +253,7 @@ module ActiveMerchant #:nodoc:
|
|
|
253
253
|
:error_code => fields['UMerrorcode'],
|
|
254
254
|
:acs_url => fields['UMacsurl'],
|
|
255
255
|
:payload => fields['UMpayload']
|
|
256
|
-
}.delete_if{|k, v| v.nil?}
|
|
256
|
+
}.delete_if { |k, v| v.nil? }
|
|
257
257
|
end
|
|
258
258
|
|
|
259
259
|
def commit(action, parameters)
|
|
@@ -82,8 +82,8 @@ module ActiveMerchant
|
|
|
82
82
|
response[:error_message] = error['ErrorDescription']
|
|
83
83
|
response[:error_codes] = error['ErrorCode']
|
|
84
84
|
elsif error.kind_of?(Array)
|
|
85
|
-
error_str = error.map { |e| e['ErrorDescription']}.join('. ')
|
|
86
|
-
error_codes = error.map { |e| e['ErrorCode']}.join(', ')
|
|
85
|
+
error_str = error.map { |e| e['ErrorDescription'] }.join('. ')
|
|
86
|
+
error_codes = error.map { |e| e['ErrorCode'] }.join(', ')
|
|
87
87
|
response[:error_message] = "#{error_str}."
|
|
88
88
|
response[:error_codes] = error_codes
|
|
89
89
|
end
|
|
@@ -192,7 +192,7 @@ module ActiveMerchant #:nodoc:
|
|
|
192
192
|
def commit(trx_type, money, post)
|
|
193
193
|
post[:amount] = amount(money)
|
|
194
194
|
|
|
195
|
-
response = parse(
|
|
195
|
+
response = parse(ssl_post(self.live_url, post_data(trx_type, post)))
|
|
196
196
|
|
|
197
197
|
Response.new(response[:response].to_i == SUCCESS, message_from(response), response,
|
|
198
198
|
:test => test?,
|
|
@@ -73,12 +73,12 @@ module ActiveMerchant #:nodoc:
|
|
|
73
73
|
form[:customer_code] = options[:customer].to_s.slice(0, 10) unless options[:customer].blank?
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def add_invoice(form,options)
|
|
76
|
+
def add_invoice(form, options)
|
|
77
77
|
form[:invoice_number] = (options[:order_id] || options[:invoice]).to_s.slice(0, 10)
|
|
78
78
|
form[:description] = options[:description].to_s.slice(0, 255)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
def add_address(form,options)
|
|
81
|
+
def add_address(form, options)
|
|
82
82
|
billing_address = options[:billing_address] || options[:address]
|
|
83
83
|
|
|
84
84
|
if billing_address
|
|
@@ -138,7 +138,7 @@ module ActiveMerchant #:nodoc:
|
|
|
138
138
|
parameters[:amount] = amount(money)
|
|
139
139
|
parameters[:transaction_type] = self.actions[action]
|
|
140
140
|
|
|
141
|
-
response = parse(
|
|
141
|
+
response = parse(ssl_post(test? ? self.test_url : self.live_url, post_data(parameters)))
|
|
142
142
|
|
|
143
143
|
Response.new(response['result'] == APPROVED, message_from(response), response,
|
|
144
144
|
:test => @options[:test] || test?,
|
|
@@ -165,7 +165,7 @@ module ActiveMerchant #:nodoc:
|
|
|
165
165
|
# Parse the response message
|
|
166
166
|
def parse(msg)
|
|
167
167
|
resp = {}
|
|
168
|
-
msg.split(self.delimiter).collect{|li|
|
|
168
|
+
msg.split(self.delimiter).collect { |li|
|
|
169
169
|
key, value = li.split('=')
|
|
170
170
|
resp[key.strip.gsub(/^ssl_/, '')] = value.to_s.strip
|
|
171
171
|
}
|
|
@@ -82,7 +82,7 @@ module ActiveMerchant #:nodoc:
|
|
|
82
82
|
|
|
83
83
|
private
|
|
84
84
|
|
|
85
|
-
CURRENCY_CODES = Hash.new{|h,k| raise ArgumentError.new("Unsupported currency: #{k}")}
|
|
85
|
+
CURRENCY_CODES = Hash.new { |h, k| raise ArgumentError.new("Unsupported currency: #{k}") }
|
|
86
86
|
CURRENCY_CODES['USD'] = 840
|
|
87
87
|
CURRENCY_CODES['PEN'] = 604
|
|
88
88
|
|
|
@@ -166,9 +166,9 @@ module ActiveMerchant #:nodoc:
|
|
|
166
166
|
end
|
|
167
167
|
|
|
168
168
|
def url(action, params, options={})
|
|
169
|
-
if
|
|
169
|
+
if action == 'authorize'
|
|
170
170
|
"#{base_url}/#{@options[:merchant_id]}"
|
|
171
|
-
elsif
|
|
171
|
+
elsif action == 'refund'
|
|
172
172
|
"#{base_url}/#{@options[:merchant_id]}/#{action}/#{options[:transaction_id]}"
|
|
173
173
|
else
|
|
174
174
|
"#{base_url}/#{@options[:merchant_id]}/#{action}/#{params[:purchaseNumber]}"
|
|
@@ -176,7 +176,7 @@ module ActiveMerchant #:nodoc:
|
|
|
176
176
|
end
|
|
177
177
|
|
|
178
178
|
def method(action)
|
|
179
|
-
|
|
179
|
+
%w(authorize refund).include?(action) ? :post : :put
|
|
180
180
|
end
|
|
181
181
|
|
|
182
182
|
def authorization_from(params, response, options)
|
|
@@ -140,7 +140,7 @@ module ActiveMerchant #:nodoc:
|
|
|
140
140
|
private
|
|
141
141
|
|
|
142
142
|
def clean_description(description)
|
|
143
|
-
description.to_s.slice(0,32).encode('US-ASCII', invalid: :replace, undef: :replace, replace: '?')
|
|
143
|
+
description.to_s.slice(0, 32).encode('US-ASCII', invalid: :replace, undef: :replace, replace: '?')
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
def prepare_options_hash(options)
|
|
@@ -343,7 +343,7 @@ module ActiveMerchant #:nodoc:
|
|
|
343
343
|
end
|
|
344
344
|
|
|
345
345
|
status.elements.to_a.each do |node|
|
|
346
|
-
if
|
|
346
|
+
if node.elements.size == 0
|
|
347
347
|
response[node.name.to_sym] = (node.text || '').strip
|
|
348
348
|
else
|
|
349
349
|
node.elements.each do |childnode|
|
|
@@ -30,8 +30,8 @@ module ActiveMerchant #:nodoc:
|
|
|
30
30
|
|
|
31
31
|
def purchase(money, payment_method, options = {})
|
|
32
32
|
MultiResponse.run do |r|
|
|
33
|
-
r.process{authorize(money, payment_method, options)}
|
|
34
|
-
r.process{capture(money, r.authorization, options.merge(:authorization_validated => true))}
|
|
33
|
+
r.process { authorize(money, payment_method, options) }
|
|
34
|
+
r.process { capture(money, r.authorization, options.merge(:authorization_validated => true)) }
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -42,19 +42,19 @@ module ActiveMerchant #:nodoc:
|
|
|
42
42
|
|
|
43
43
|
def capture(money, authorization, options = {})
|
|
44
44
|
MultiResponse.run do |r|
|
|
45
|
-
r.process{inquire_request(authorization, options, 'AUTHORISED')} unless options[:authorization_validated]
|
|
45
|
+
r.process { inquire_request(authorization, options, 'AUTHORISED') } unless options[:authorization_validated]
|
|
46
46
|
if r.params
|
|
47
47
|
authorization_currency = r.params['amount_currency_code']
|
|
48
48
|
options = options.merge(:currency => authorization_currency) if authorization_currency.present?
|
|
49
49
|
end
|
|
50
|
-
r.process{capture_request(money, authorization, options)}
|
|
50
|
+
r.process { capture_request(money, authorization, options) }
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def void(authorization, options = {})
|
|
55
55
|
MultiResponse.run do |r|
|
|
56
|
-
r.process{inquire_request(authorization, options, 'AUTHORISED')} unless options[:authorization_validated]
|
|
57
|
-
r.process{cancel_request(authorization, options)}
|
|
56
|
+
r.process { inquire_request(authorization, options, 'AUTHORISED') } unless options[:authorization_validated]
|
|
57
|
+
r.process { cancel_request(authorization, options) }
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
@@ -67,7 +67,7 @@ module ActiveMerchant #:nodoc:
|
|
|
67
67
|
return response if response.success?
|
|
68
68
|
return response unless options[:force_full_refund_if_unsettled]
|
|
69
69
|
|
|
70
|
-
void(authorization, options
|
|
70
|
+
void(authorization, options) if response.params['last_event'] == 'AUTHORISED'
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
# Credits only function on a Merchant ID/login/profile flagged for Payouts
|
|
@@ -175,7 +175,7 @@ module ActiveMerchant #:nodoc:
|
|
|
175
175
|
end
|
|
176
176
|
|
|
177
177
|
def order_tag_attributes(options)
|
|
178
|
-
{ 'orderCode' => options[:order_id], 'installationId' => options[:inst_id] || @options[:inst_id] }.reject{|_,v| !v}
|
|
178
|
+
{ 'orderCode' => options[:order_id], 'installationId' => options[:inst_id] || @options[:inst_id] }.reject { |_, v| !v }
|
|
179
179
|
end
|
|
180
180
|
|
|
181
181
|
def build_capture_request(money, authorization, options)
|
|
@@ -212,7 +212,7 @@ module ActiveMerchant #:nodoc:
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
if options[:debit_credit_indicator]
|
|
215
|
-
amount_hash
|
|
215
|
+
amount_hash['debitCreditIndicator'] = options[:debit_credit_indicator]
|
|
216
216
|
end
|
|
217
217
|
|
|
218
218
|
xml.tag! 'amount', amount_hash
|
|
@@ -248,10 +248,21 @@ module ActiveMerchant #:nodoc:
|
|
|
248
248
|
xml.tag! 'session', 'shopperIPAddress' => options[:ip] if options[:ip]
|
|
249
249
|
xml.tag! 'session', 'id' => options[:session_id] if options[:session_id]
|
|
250
250
|
end
|
|
251
|
+
add_stored_credential_options(xml, options) if options[:stored_credential_usage]
|
|
251
252
|
end
|
|
252
253
|
end
|
|
253
254
|
end
|
|
254
255
|
|
|
256
|
+
def add_stored_credential_options(xml, options={})
|
|
257
|
+
if options[:stored_credential_initiated_reason]
|
|
258
|
+
xml.tag! 'storedCredentials', 'usage' => options[:stored_credential_usage], 'merchantInitiatedReason' => options[:stored_credential_initiated_reason] do
|
|
259
|
+
xml.tag! 'schemeTransactionIdentifier', options[:stored_credential_transaction_id] if options[:stored_credential_transaction_id]
|
|
260
|
+
end
|
|
261
|
+
else
|
|
262
|
+
xml.tag! 'storedCredentials', 'usage' => options[:stored_credential_usage]
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
|
|
255
266
|
def add_email(xml, options)
|
|
256
267
|
return unless options[:execute_threed] || options[:email]
|
|
257
268
|
xml.tag! 'shopper' do
|
|
@@ -326,7 +337,7 @@ module ActiveMerchant #:nodoc:
|
|
|
326
337
|
end
|
|
327
338
|
if node.has_elements?
|
|
328
339
|
raw[node.name.underscore.to_sym] = true unless node.name.blank?
|
|
329
|
-
node.elements.each{|e| parse_element(raw, e) }
|
|
340
|
+
node.elements.each { |e| parse_element(raw, e) }
|
|
330
341
|
else
|
|
331
342
|
raw[node.name.underscore.to_sym] = node.text unless node.text.nil?
|
|
332
343
|
end
|
|
@@ -339,7 +350,7 @@ module ActiveMerchant #:nodoc:
|
|
|
339
350
|
'Authorization' => encoded_credentials
|
|
340
351
|
}
|
|
341
352
|
if options[:cookie]
|
|
342
|
-
headers
|
|
353
|
+
headers['Set-Cookie'] = options[:cookie] if options[:cookie]
|
|
343
354
|
end
|
|
344
355
|
headers
|
|
345
356
|
end
|
|
@@ -407,12 +418,12 @@ module ActiveMerchant #:nodoc:
|
|
|
407
418
|
|
|
408
419
|
def required_status_message(raw, success_criteria)
|
|
409
420
|
if(!success_criteria.include?(raw[:last_event]))
|
|
410
|
-
"A transaction status of #{success_criteria.collect{|c| "'#{c}'"}.join(" or ")} is required."
|
|
421
|
+
"A transaction status of #{success_criteria.collect { |c| "'#{c}'" }.join(" or ")} is required."
|
|
411
422
|
end
|
|
412
423
|
end
|
|
413
424
|
|
|
414
425
|
def authorization_from(raw)
|
|
415
|
-
pair = raw.detect{|k,v| k.to_s =~ /_order_code$/}
|
|
426
|
+
pair = raw.detect { |k, v| k.to_s =~ /_order_code$/ }
|
|
416
427
|
(pair ? pair.last : nil)
|
|
417
428
|
end
|
|
418
429
|
|
|
@@ -139,7 +139,7 @@ module ActiveMerchant #:nodoc:
|
|
|
139
139
|
|
|
140
140
|
raw_response = ssl_request(method, self.live_url + url, json, headers(options))
|
|
141
141
|
|
|
142
|
-
if
|
|
142
|
+
if raw_response != ''
|
|
143
143
|
response = parse(raw_response)
|
|
144
144
|
if type == 'token'
|
|
145
145
|
success = response.key?('token')
|
|
@@ -163,7 +163,7 @@ module ActiveMerchant #:nodoc:
|
|
|
163
163
|
rescue ResponseError => e
|
|
164
164
|
raw_response = e.response.body
|
|
165
165
|
response = response_error(raw_response)
|
|
166
|
-
rescue JSON::ParserError
|
|
166
|
+
rescue JSON::ParserError
|
|
167
167
|
response = json_error(raw_response)
|
|
168
168
|
end
|
|
169
169
|
|
|
@@ -27,15 +27,15 @@ module ActiveMerchant #:nodoc:
|
|
|
27
27
|
@emv_authorization = options[:emv_authorization]
|
|
28
28
|
|
|
29
29
|
@avs_result = if options[:avs_result].kind_of?(AVSResult)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
options[:avs_result].to_hash
|
|
31
|
+
else
|
|
32
|
+
AVSResult.new(options[:avs_result]).to_hash
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
@cvv_result = if options[:cvv_result].kind_of?(CVVResult)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
options[:cvv_result].to_hash
|
|
37
|
+
else
|
|
38
|
+
CVVResult.new(options[:cvv_result]).to_hash
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
|
@@ -70,7 +70,7 @@ module ActiveMerchant #:nodoc:
|
|
|
70
70
|
|
|
71
71
|
def <<(response)
|
|
72
72
|
if response.is_a?(MultiResponse)
|
|
73
|
-
response.responses.each{|r| @responses << r}
|
|
73
|
+
response.responses.each { |r| @responses << r }
|
|
74
74
|
else
|
|
75
75
|
@responses << response
|
|
76
76
|
end
|
|
@@ -39,11 +39,11 @@ module ActiveMerchant #:nodoc:
|
|
|
39
39
|
|
|
40
40
|
def initialize(options = {})
|
|
41
41
|
@name = options.delete(:name)
|
|
42
|
-
@codes = options.collect{|k,v| CountryCode.new(v)}
|
|
42
|
+
@codes = options.collect { |k, v| CountryCode.new(v) }
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def code(format)
|
|
46
|
-
@codes.detect{|c| c.format == format}
|
|
46
|
+
@codes.detect { |c| c.format == format }
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def ==(other)
|
|
@@ -324,9 +324,9 @@ module ActiveMerchant #:nodoc:
|
|
|
324
324
|
when 2, 3
|
|
325
325
|
upcase_name = name.upcase
|
|
326
326
|
country_code = CountryCode.new(name)
|
|
327
|
-
country = COUNTRIES.detect{|c| c[country_code.format] == upcase_name }
|
|
327
|
+
country = COUNTRIES.detect { |c| c[country_code.format] == upcase_name }
|
|
328
328
|
else
|
|
329
|
-
country = COUNTRIES.detect{|c| c[:name].
|
|
329
|
+
country = COUNTRIES.detect { |c| c[:name].casecmp(name).zero? }
|
|
330
330
|
end
|
|
331
331
|
raise InvalidCountryCodeError, "No country could be found for the country #{name}" if country.nil?
|
|
332
332
|
Country.new(country.dup)
|
|
@@ -28,7 +28,7 @@ module ActiveMerchant
|
|
|
28
28
|
rescue OpenSSL::X509::CertificateError => e
|
|
29
29
|
NetworkConnectionRetries.log(options[:logger], :error, e.message, options[:tag])
|
|
30
30
|
raise ActiveMerchant::ClientCertificateError, 'The remote server did not accept the provided SSL certificate'
|
|
31
|
-
rescue Zlib::BufError
|
|
31
|
+
rescue Zlib::BufError
|
|
32
32
|
raise ActiveMerchant::InvalidResponseError, 'The remote server replied with an invalid response'
|
|
33
33
|
rescue *connection_errors.keys => e
|
|
34
34
|
raise ActiveMerchant::ConnectionError.new(derived_error_message(connection_errors, e.class), e)
|
|
@@ -36,6 +36,12 @@ module ActiveMerchant
|
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
def self.log(logger, level, message, tag=nil)
|
|
40
|
+
tag ||= self.class.to_s
|
|
41
|
+
message = "[#{tag}] #{message}"
|
|
42
|
+
logger&.send(level, message)
|
|
43
|
+
end
|
|
44
|
+
|
|
39
45
|
private
|
|
40
46
|
|
|
41
47
|
def retry_network_exceptions(options = {})
|
|
@@ -62,14 +68,6 @@ module ActiveMerchant
|
|
|
62
68
|
end
|
|
63
69
|
end
|
|
64
70
|
|
|
65
|
-
def self.log(logger, level, message, tag=nil)
|
|
66
|
-
tag ||= self.class.to_s
|
|
67
|
-
message = "[#{tag}] #{message}"
|
|
68
|
-
logger&.send(level, message)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
private
|
|
72
|
-
|
|
73
71
|
def log_with_retry_details(logger, attempts, time, message, tag)
|
|
74
72
|
NetworkConnectionRetries.log(logger, :info, 'connection_attempt=%d connection_request_time=%.4fs connection_msg="%s"' % [attempts, time, message], tag)
|
|
75
73
|
end
|
|
@@ -14,7 +14,7 @@ class GatewaySupport #:nodoc:
|
|
|
14
14
|
filename = File.basename(f, '.rb')
|
|
15
15
|
gateway_name = filename + '_gateway'
|
|
16
16
|
begin
|
|
17
|
-
|
|
17
|
+
('ActiveMerchant::Billing::' + gateway_name.camelize).constantize
|
|
18
18
|
rescue NameError
|
|
19
19
|
puts 'Could not load gateway ' + gateway_name.camelize + ' from ' + f + '.'
|
|
20
20
|
end
|
|
@@ -24,14 +24,14 @@ class GatewaySupport #:nodoc:
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def each_gateway
|
|
27
|
-
@gateways.each{|g| yield g }
|
|
27
|
+
@gateways.each { |g| yield g }
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def features
|
|
31
31
|
width = 15
|
|
32
32
|
|
|
33
33
|
print 'Name'.center(width + 20)
|
|
34
|
-
ACTIONS.each{|f| print f.to_s.capitalize.center(width) }
|
|
34
|
+
ACTIONS.each { |f| print f.to_s.capitalize.center(width) }
|
|
35
35
|
puts
|
|
36
36
|
|
|
37
37
|
each_gateway do |g|
|
data/lib/support/ssl_verify.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activemerchant
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.87.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tobias Luetke
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-11-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -417,7 +417,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
417
417
|
version: '0'
|
|
418
418
|
requirements: []
|
|
419
419
|
rubyforge_project: activemerchant
|
|
420
|
-
rubygems_version: 2.6
|
|
420
|
+
rubygems_version: 2.7.6
|
|
421
421
|
signing_key:
|
|
422
422
|
specification_version: 4
|
|
423
423
|
summary: Framework and tools for dealing with credit card transactions.
|