activemerchant 1.100.0 → 1.101.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 +4 -4
- data/CHANGELOG +10 -0
- data/lib/active_merchant/billing/check.rb +2 -6
- data/lib/active_merchant/billing/credit_card.rb +1 -3
- data/lib/active_merchant/billing/gateway.rb +4 -7
- data/lib/active_merchant/billing/gateways/authorize_net.rb +3 -9
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +1 -3
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +4 -12
- data/lib/active_merchant/billing/gateways/axcessms.rb +1 -3
- data/lib/active_merchant/billing/gateways/balanced.rb +12 -11
- data/lib/active_merchant/billing/gateways/blue_pay.rb +2 -6
- data/lib/active_merchant/billing/gateways/blue_snap.rb +1 -3
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +7 -21
- data/lib/active_merchant/billing/gateways/cecabank.rb +1 -3
- data/lib/active_merchant/billing/gateways/checkout.rb +1 -3
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +1 -3
- data/lib/active_merchant/billing/gateways/clearhaus.rb +9 -12
- data/lib/active_merchant/billing/gateways/credorax.rb +1 -1
- data/lib/active_merchant/billing/gateways/culqi.rb +6 -5
- data/lib/active_merchant/billing/gateways/cyber_source.rb +1 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +1 -3
- data/lib/active_merchant/billing/gateways/decidir.rb +1 -3
- data/lib/active_merchant/billing/gateways/ebanx.rb +1 -3
- data/lib/active_merchant/billing/gateways/elavon.rb +2 -6
- data/lib/active_merchant/billing/gateways/element.rb +1 -3
- data/lib/active_merchant/billing/gateways/eway_managed.rb +6 -5
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +7 -6
- data/lib/active_merchant/billing/gateways/forte.rb +2 -6
- data/lib/active_merchant/billing/gateways/garanti.rb +1 -3
- data/lib/active_merchant/billing/gateways/global_collect.rb +1 -3
- data/lib/active_merchant/billing/gateways/hdfc.rb +1 -3
- data/lib/active_merchant/billing/gateways/hps.rb +6 -5
- data/lib/active_merchant/billing/gateways/inspire.rb +2 -6
- data/lib/active_merchant/billing/gateways/instapay.rb +1 -3
- data/lib/active_merchant/billing/gateways/iridium.rb +1 -3
- data/lib/active_merchant/billing/gateways/iveri.rb +7 -8
- data/lib/active_merchant/billing/gateways/jetpay.rb +3 -9
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +2 -6
- data/lib/active_merchant/billing/gateways/kushki.rb +7 -8
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +6 -5
- data/lib/active_merchant/billing/gateways/merchant_one.rb +1 -3
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +1 -3
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +1 -3
- data/lib/active_merchant/billing/gateways/mercury.rb +2 -6
- data/lib/active_merchant/billing/gateways/metrics_global.rb +4 -12
- data/lib/active_merchant/billing/gateways/migs.rb +1 -3
- data/lib/active_merchant/billing/gateways/moneris.rb +1 -3
- data/lib/active_merchant/billing/gateways/moneris_us.rb +1 -3
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +1 -3
- data/lib/active_merchant/billing/gateways/netbanx.rb +24 -9
- data/lib/active_merchant/billing/gateways/netbilling.rb +1 -3
- data/lib/active_merchant/billing/gateways/network_merchants.rb +1 -3
- data/lib/active_merchant/billing/gateways/opp.rb +12 -13
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +1 -3
- data/lib/active_merchant/billing/gateways/orbital.rb +8 -11
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +1 -3
- data/lib/active_merchant/billing/gateways/pagarme.rb +4 -12
- data/lib/active_merchant/billing/gateways/pago_facil.rb +1 -3
- data/lib/active_merchant/billing/gateways/pay_conex.rb +1 -3
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +1 -3
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +6 -5
- data/lib/active_merchant/billing/gateways/payflow.rb +2 -6
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +1 -3
- data/lib/active_merchant/billing/gateways/paymentez.rb +1 -3
- data/lib/active_merchant/billing/gateways/paymill.rb +1 -3
- data/lib/active_merchant/billing/gateways/pro_pay.rb +1 -3
- data/lib/active_merchant/billing/gateways/quickbooks.rb +104 -31
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +2 -6
- data/lib/active_merchant/billing/gateways/realex.rb +1 -3
- data/lib/active_merchant/billing/gateways/redsys.rb +17 -27
- data/lib/active_merchant/billing/gateways/safe_charge.rb +1 -3
- data/lib/active_merchant/billing/gateways/sage_pay.rb +1 -3
- data/lib/active_merchant/billing/gateways/secure_net.rb +2 -6
- data/lib/active_merchant/billing/gateways/secure_pay.rb +4 -12
- data/lib/active_merchant/billing/gateways/smart_ps.rb +2 -6
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +2 -6
- data/lib/active_merchant/billing/gateways/stripe.rb +3 -9
- data/lib/active_merchant/billing/gateways/telr.rb +2 -6
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +6 -5
- data/lib/active_merchant/billing/gateways/transact_pro.rb +1 -3
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +1 -3
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +4 -12
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +3 -9
- data/lib/active_merchant/billing/gateways/viaklix.rb +2 -6
- data/lib/active_merchant/billing/gateways/wepay.rb +2 -6
- data/lib/active_merchant/billing/gateways/wirecard.rb +2 -6
- data/lib/active_merchant/billing/gateways/worldpay.rb +5 -15
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +2 -6
- data/lib/active_merchant/version.rb +1 -1
- data/lib/support/ssl_verify.rb +1 -3
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cadecd1cc8fe450e59061eac7cf2c2ce023513d1338858809fe828df46a1b745
|
|
4
|
+
data.tar.gz: cc7e81f49b5b4b0f17cbd73c921a7b73cbd4c8f468d70722dc844a4973191ffa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d3889d6325099cff6ffef0dc9de3259afac3ff6d86292cd5dfa9e85208e9eae671436222ec84e08ad1104e77ede4ab475519229f5121c61498f79adaf7da104
|
|
7
|
+
data.tar.gz: 3e0b7935750ab8d772d62d78d6c359187d287835e997076ba0a1d66a3586424e63897892a736cbf7b720aa7e04633112aca6fb4cad57a8bcbee2885f13701ea7
|
data/CHANGELOG
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
|
2
2
|
|
|
3
3
|
== HEAD
|
|
4
|
+
== Version 1.101.0 (Nov 4, 2019)
|
|
5
|
+
* Add UYI to list of currencies without fractions [curiousepic] #3416
|
|
6
|
+
* Quickbooks: Add OAuth 2.0 support and void action [britth] #3397
|
|
7
|
+
* Credorax: Stop always sending r1 parameter [molbrown] #3415
|
|
8
|
+
* Rubocop: Layout/RescueEnsureAlignment fix [leila-alderman] #3411
|
|
9
|
+
* CyberSource: Send issuer data on capture [leila-alderman] #3404
|
|
10
|
+
* Rubocop: Style/IfUnlessModifier [nfarve] #3390
|
|
11
|
+
* Redsys: Updates to parse method for non-3DS responses [britth] #3391
|
|
12
|
+
* Netbanx: Add 3DS2 Support [Jujhar] #3394
|
|
13
|
+
|
|
4
14
|
== Version 1.100.0 (Oct 16, 2019)
|
|
5
15
|
* Stripe: Restore non-auto capture behaviour for card present transactions [PatrickFang] #3258
|
|
6
16
|
* Revert "Revert "Worldpay: Switch to Nokogiri"" [curiousepic] #3373
|
|
@@ -35,13 +35,9 @@ module ActiveMerchant #:nodoc:
|
|
|
35
35
|
|
|
36
36
|
errors << [:routing_number, 'is invalid'] unless valid_routing_number?
|
|
37
37
|
|
|
38
|
-
if
|
|
39
|
-
errors << [:account_holder_type, 'must be personal or business']
|
|
40
|
-
end
|
|
38
|
+
errors << [:account_holder_type, 'must be personal or business'] if !empty?(account_holder_type) && !%w[business personal].include?(account_holder_type.to_s)
|
|
41
39
|
|
|
42
|
-
if
|
|
43
|
-
errors << [:account_type, 'must be checking or savings']
|
|
44
|
-
end
|
|
40
|
+
errors << [:account_type, 'must be checking or savings'] if !empty?(account_type) && !%w[checking savings].include?(account_type.to_s)
|
|
45
41
|
|
|
46
42
|
errors_hash(errors)
|
|
47
43
|
end
|
|
@@ -367,9 +367,7 @@ module ActiveMerchant #:nodoc:
|
|
|
367
367
|
errors = []
|
|
368
368
|
|
|
369
369
|
if verification_value?
|
|
370
|
-
unless valid_card_verification_value?(verification_value, brand)
|
|
371
|
-
errors << [:verification_value, "should be #{card_verification_value_length(brand)} digits"]
|
|
372
|
-
end
|
|
370
|
+
errors << [:verification_value, "should be #{card_verification_value_length(brand)} digits"] unless valid_card_verification_value?(verification_value, brand)
|
|
373
371
|
elsif requires_verification_value? && !valid_card_verification_value?(verification_value, brand)
|
|
374
372
|
errors << [:verification_value, 'is required']
|
|
375
373
|
end
|
|
@@ -123,8 +123,9 @@ module ActiveMerchant #:nodoc:
|
|
|
123
123
|
class_attribute :supported_cardtypes
|
|
124
124
|
self.supported_cardtypes = []
|
|
125
125
|
|
|
126
|
+
# This default list of currencies without fractions are from https://en.wikipedia.org/wiki/ISO_4217
|
|
126
127
|
class_attribute :currencies_without_fractions, :currencies_with_three_decimal_places
|
|
127
|
-
self.currencies_without_fractions = %w(BIF BYR CLP CVE DJF GNF ISK JPY KMF KRW PYG RWF UGX VND VUV XAF XOF XPF)
|
|
128
|
+
self.currencies_without_fractions = %w(BIF BYR CLP CVE DJF GNF ISK JPY KMF KRW PYG RWF UGX UYI VND VUV XAF XOF XPF)
|
|
128
129
|
self.currencies_with_three_decimal_places = %w()
|
|
129
130
|
|
|
130
131
|
class_attribute :homepage_url
|
|
@@ -155,9 +156,7 @@ module ActiveMerchant #:nodoc:
|
|
|
155
156
|
|
|
156
157
|
def self.supported_countries=(country_codes)
|
|
157
158
|
country_codes.each do |country_code|
|
|
158
|
-
unless ActiveMerchant::Country.find(country_code)
|
|
159
|
-
raise ActiveMerchant::InvalidCountryCodeError, "No country could be found for the country #{country_code}"
|
|
160
|
-
end
|
|
159
|
+
raise ActiveMerchant::InvalidCountryCodeError, "No country could be found for the country #{country_code}" unless ActiveMerchant::Country.find(country_code)
|
|
161
160
|
end
|
|
162
161
|
@supported_countries = country_codes.dup
|
|
163
162
|
end
|
|
@@ -257,9 +256,7 @@ module ActiveMerchant #:nodoc:
|
|
|
257
256
|
money
|
|
258
257
|
end
|
|
259
258
|
|
|
260
|
-
if money.is_a?(String)
|
|
261
|
-
raise ArgumentError, 'money amount must be a positive Integer in cents.'
|
|
262
|
-
end
|
|
259
|
+
raise ArgumentError, 'money amount must be a positive Integer in cents.' if money.is_a?(String)
|
|
263
260
|
|
|
264
261
|
if self.money_format == :cents
|
|
265
262
|
cents.to_s
|
|
@@ -157,9 +157,7 @@ module ActiveMerchant
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
def credit(amount, payment, options={})
|
|
160
|
-
if payment.is_a?(String)
|
|
161
|
-
raise ArgumentError, 'Reference credits are not supported. Please supply the original credit card or use the #refund method.'
|
|
162
|
-
end
|
|
160
|
+
raise ArgumentError, 'Reference credits are not supported. Please supply the original credit card or use the #refund method.' if payment.is_a?(String)
|
|
163
161
|
|
|
164
162
|
commit(:credit) do |xml|
|
|
165
163
|
add_order_id(xml, options)
|
|
@@ -479,12 +477,8 @@ module ActiveMerchant
|
|
|
479
477
|
xml.creditCard do
|
|
480
478
|
xml.cardNumber(truncate(credit_card.number, 16))
|
|
481
479
|
xml.expirationDate(format(credit_card.month, :two_digits) + '/' + format(credit_card.year, :four_digits))
|
|
482
|
-
if credit_card.valid_card_verification_value?(credit_card.verification_value, credit_card.brand)
|
|
483
|
-
|
|
484
|
-
end
|
|
485
|
-
if credit_card.is_a?(NetworkTokenizationCreditCard) && action != :credit
|
|
486
|
-
xml.cryptogram(credit_card.payment_cryptogram)
|
|
487
|
-
end
|
|
480
|
+
xml.cardCode(credit_card.verification_value) if credit_card.valid_card_verification_value?(credit_card.verification_value, credit_card.brand)
|
|
481
|
+
xml.cryptogram(credit_card.payment_cryptogram) if credit_card.is_a?(NetworkTokenizationCreditCard) && action != :credit
|
|
488
482
|
end
|
|
489
483
|
end
|
|
490
484
|
end
|
|
@@ -147,9 +147,7 @@ module ActiveMerchant #:nodoc:
|
|
|
147
147
|
|
|
148
148
|
# Builds recurring billing request
|
|
149
149
|
def build_recurring_request(action, options = {})
|
|
150
|
-
unless RECURRING_ACTIONS.include?(action)
|
|
151
|
-
raise StandardError, "Invalid Automated Recurring Billing Action: #{action}"
|
|
152
|
-
end
|
|
150
|
+
raise StandardError, "Invalid Automated Recurring Billing Action: #{action}" unless RECURRING_ACTIONS.include?(action)
|
|
153
151
|
|
|
154
152
|
xml = Builder::XmlMarkup.new(:indent => 2)
|
|
155
153
|
xml.instruct!(:xml, :version => '1.0', :encoding => 'utf-8')
|
|
@@ -485,9 +485,7 @@ module ActiveMerchant #:nodoc:
|
|
|
485
485
|
end
|
|
486
486
|
|
|
487
487
|
def build_request(action, options = {})
|
|
488
|
-
unless CIM_ACTIONS.include?(action)
|
|
489
|
-
raise StandardError, "Invalid Customer Information Manager Action: #{action}"
|
|
490
|
-
end
|
|
488
|
+
raise StandardError, "Invalid Customer Information Manager Action: #{action}" unless CIM_ACTIONS.include?(action)
|
|
491
489
|
|
|
492
490
|
xml = Builder::XmlMarkup.new(:indent => 2)
|
|
493
491
|
xml.instruct!(:xml, :version => '1.0', :encoding => 'utf-8')
|
|
@@ -657,9 +655,7 @@ module ActiveMerchant #:nodoc:
|
|
|
657
655
|
end
|
|
658
656
|
|
|
659
657
|
def add_transaction(xml, transaction)
|
|
660
|
-
unless CIM_TRANSACTION_TYPES.include?(transaction[:type])
|
|
661
|
-
raise StandardError, "Invalid Customer Information Manager Transaction Type: #{transaction[:type]}"
|
|
662
|
-
end
|
|
658
|
+
raise StandardError, "Invalid Customer Information Manager Transaction Type: #{transaction[:type]}" unless CIM_TRANSACTION_TYPES.include?(transaction[:type])
|
|
663
659
|
|
|
664
660
|
xml.tag!('transaction') do
|
|
665
661
|
xml.tag!(CIM_TRANSACTION_TYPES[transaction[:type]]) do
|
|
@@ -698,9 +694,7 @@ module ActiveMerchant #:nodoc:
|
|
|
698
694
|
if [:auth_capture, :auth_only, :capture_only].include?(transaction[:type])
|
|
699
695
|
xml.tag!('recurringBilling', transaction[:recurring_billing]) if transaction.has_key?(:recurring_billing)
|
|
700
696
|
end
|
|
701
|
-
unless [:void, :refund, :prior_auth_capture].include?(transaction[:type])
|
|
702
|
-
tag_unless_blank(xml, 'cardCode', transaction[:card_code])
|
|
703
|
-
end
|
|
697
|
+
tag_unless_blank(xml, 'cardCode', transaction[:card_code]) unless [:void, :refund, :prior_auth_capture].include?(transaction[:type])
|
|
704
698
|
end
|
|
705
699
|
end
|
|
706
700
|
end
|
|
@@ -942,9 +936,7 @@ module ActiveMerchant #:nodoc:
|
|
|
942
936
|
xml = REXML::Document.new(xml)
|
|
943
937
|
root = REXML::XPath.first(xml, "//#{CIM_ACTIONS[action]}Response") ||
|
|
944
938
|
REXML::XPath.first(xml, '//ErrorResponse')
|
|
945
|
-
if root
|
|
946
|
-
response = parse_element(root)
|
|
947
|
-
end
|
|
939
|
+
response = parse_element(root) if root
|
|
948
940
|
|
|
949
941
|
response
|
|
950
942
|
end
|
|
@@ -93,9 +93,7 @@ module ActiveMerchant #:nodoc:
|
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
def parse_element(response, node)
|
|
96
|
-
if node.has_attributes?
|
|
97
|
-
node.attributes.each { |name, value| response["#{node.name}_#{name}".underscore.to_sym] = value }
|
|
98
|
-
end
|
|
96
|
+
node.attributes.each { |name, value| response["#{node.name}_#{name}".underscore.to_sym] = value } if node.has_attributes?
|
|
99
97
|
|
|
100
98
|
if node.has_elements?
|
|
101
99
|
node.elements.each { |element| parse_element(response, element) }
|
|
@@ -155,17 +155,18 @@ module ActiveMerchant #:nodoc:
|
|
|
155
155
|
end
|
|
156
156
|
|
|
157
157
|
def commit(entity_name, path, post, method=:post)
|
|
158
|
-
raw_response =
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
158
|
+
raw_response =
|
|
159
|
+
begin
|
|
160
|
+
parse(ssl_request(
|
|
161
|
+
method,
|
|
162
|
+
live_url + "/#{path}",
|
|
163
|
+
post_data(post),
|
|
164
|
+
headers
|
|
165
|
+
))
|
|
166
|
+
rescue ResponseError => e
|
|
167
|
+
raise unless(e.response.code.to_s =~ /4\d\d/)
|
|
168
|
+
parse(e.response.body)
|
|
169
|
+
end
|
|
169
170
|
|
|
170
171
|
Response.new(
|
|
171
172
|
success_from(entity_name, raw_response),
|
|
@@ -351,9 +351,7 @@ module ActiveMerchant #:nodoc:
|
|
|
351
351
|
# The bp20api has max one value per form field.
|
|
352
352
|
response_fields = Hash[CGI::parse(body).map { |k, v| [k.upcase, v.first] }]
|
|
353
353
|
|
|
354
|
-
if response_fields.include? 'REBILL_ID'
|
|
355
|
-
return parse_recurring(response_fields)
|
|
356
|
-
end
|
|
354
|
+
return parse_recurring(response_fields) if response_fields.include? 'REBILL_ID'
|
|
357
355
|
|
|
358
356
|
parsed = {}
|
|
359
357
|
response_fields.each do |k, v|
|
|
@@ -514,9 +512,7 @@ module ActiveMerchant #:nodoc:
|
|
|
514
512
|
end
|
|
515
513
|
|
|
516
514
|
def handle_response(response)
|
|
517
|
-
if ignore_http_status || (200...300).cover?(response.code.to_i)
|
|
518
|
-
return response.body
|
|
519
|
-
end
|
|
515
|
+
return response.body if ignore_http_status || (200...300).cover?(response.code.to_i)
|
|
520
516
|
raise ResponseError.new(response)
|
|
521
517
|
end
|
|
522
518
|
end
|
|
@@ -307,9 +307,7 @@ module ActiveMerchant
|
|
|
307
307
|
vaulted_shopper_id = payment_method_details.vaulted_shopper_id
|
|
308
308
|
doc.send('vaulted-shopper-id', vaulted_shopper_id) if vaulted_shopper_id
|
|
309
309
|
|
|
310
|
-
if payment_method_details.check?
|
|
311
|
-
add_echeck_transaction(doc, payment_method_details.payment_method, options, vaulted_shopper_id.present?)
|
|
312
|
-
end
|
|
310
|
+
add_echeck_transaction(doc, payment_method_details.payment_method, options, vaulted_shopper_id.present?) if payment_method_details.check?
|
|
313
311
|
|
|
314
312
|
add_fraud_info(doc, options)
|
|
315
313
|
add_description(doc, options)
|
|
@@ -6,9 +6,7 @@ rescue LoadError
|
|
|
6
6
|
raise 'Could not load the braintree gem. Use `gem install braintree` to install it.'
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
unless Braintree::Version::Major == 2 && Braintree::Version::Minor >= 78
|
|
10
|
-
raise "Need braintree gem >= 2.78.0. Run `gem install braintree --version '~>2.78'` to get the correct version."
|
|
11
|
-
end
|
|
9
|
+
raise "Need braintree gem >= 2.78.0. Run `gem install braintree --version '~>2.78'` to get the correct version." unless Braintree::Version::Major == 2 && Braintree::Version::Minor >= 78
|
|
12
10
|
|
|
13
11
|
module ActiveMerchant #:nodoc:
|
|
14
12
|
module Billing #:nodoc:
|
|
@@ -302,9 +300,7 @@ module ActiveMerchant #:nodoc:
|
|
|
302
300
|
valid_options[key] = value if [:update_existing_token, :verify_card, :verification_merchant_account_id].include?(key)
|
|
303
301
|
end
|
|
304
302
|
|
|
305
|
-
if valid_options.include?(:verify_card) && @merchant_account_id
|
|
306
|
-
valid_options[:verification_merchant_account_id] ||= @merchant_account_id
|
|
307
|
-
end
|
|
303
|
+
valid_options[:verification_merchant_account_id] ||= @merchant_account_id if valid_options.include?(:verify_card) && @merchant_account_id
|
|
308
304
|
|
|
309
305
|
parameters[:credit_card] ||= {}
|
|
310
306
|
parameters[:credit_card][:options] = valid_options
|
|
@@ -328,9 +324,7 @@ module ActiveMerchant #:nodoc:
|
|
|
328
324
|
mapped[:country_code_alpha2] = (address[:country] || address[:country_code_alpha2]) if address[:country] || address[:country_code_alpha2]
|
|
329
325
|
mapped[:country_name] = address[:country_name] if address[:country_name]
|
|
330
326
|
mapped[:country_code_alpha3] = address[:country_code_alpha3] if address[:country_code_alpha3]
|
|
331
|
-
unless address[:country].blank?
|
|
332
|
-
mapped[:country_code_alpha3] ||= Country.find(address[:country]).code(:alpha3).value
|
|
333
|
-
end
|
|
327
|
+
mapped[:country_code_alpha3] ||= Country.find(address[:country]).code(:alpha3).value unless address[:country].blank?
|
|
334
328
|
mapped[:country_code_numeric] = address[:country_code_numeric] if address[:country_code_numeric]
|
|
335
329
|
|
|
336
330
|
mapped
|
|
@@ -494,9 +488,7 @@ module ActiveMerchant #:nodoc:
|
|
|
494
488
|
end
|
|
495
489
|
|
|
496
490
|
def transaction_hash(result)
|
|
497
|
-
unless result.success?
|
|
498
|
-
return { 'processor_response_code' => response_code_from_result(result) }
|
|
499
|
-
end
|
|
491
|
+
return { 'processor_response_code' => response_code_from_result(result) } unless result.success?
|
|
500
492
|
|
|
501
493
|
transaction = result.transaction
|
|
502
494
|
if transaction.vault_customer
|
|
@@ -588,17 +580,11 @@ module ActiveMerchant #:nodoc:
|
|
|
588
580
|
}
|
|
589
581
|
}
|
|
590
582
|
|
|
591
|
-
if options[:skip_advanced_fraud_checking]
|
|
592
|
-
parameters[:options][:skip_advanced_fraud_checking] = options[:skip_advanced_fraud_checking]
|
|
593
|
-
end
|
|
583
|
+
parameters[:options][:skip_advanced_fraud_checking] = options[:skip_advanced_fraud_checking] if options[:skip_advanced_fraud_checking]
|
|
594
584
|
|
|
595
|
-
if options[:skip_avs]
|
|
596
|
-
parameters[:options][:skip_avs] = options[:skip_avs]
|
|
597
|
-
end
|
|
585
|
+
parameters[:options][:skip_avs] = options[:skip_avs] if options[:skip_avs]
|
|
598
586
|
|
|
599
|
-
if options[:skip_cvv]
|
|
600
|
-
parameters[:options][:skip_cvv] = options[:skip_cvv]
|
|
601
|
-
end
|
|
587
|
+
parameters[:options][:skip_cvv] = options[:skip_cvv] if options[:skip_cvv]
|
|
602
588
|
|
|
603
589
|
parameters[:custom_fields] = options[:custom_fields]
|
|
604
590
|
parameters[:device_data] = options[:device_data] if options[:device_data]
|
|
@@ -143,9 +143,7 @@ module ActiveMerchant #:nodoc:
|
|
|
143
143
|
response[:error_message] = root.elements['ERROR/descripcion'].text
|
|
144
144
|
else
|
|
145
145
|
if root.elements['OPERACION'].attributes['numeroOperacion'] == '000'
|
|
146
|
-
if
|
|
147
|
-
response[:authorization] = root.elements['OPERACION/numeroAutorizacion'].text
|
|
148
|
-
end
|
|
146
|
+
response[:authorization] = root.elements['OPERACION/numeroAutorizacion'].text if root.elements['OPERACION/numeroAutorizacion']
|
|
149
147
|
else
|
|
150
148
|
response[:authorization] = root.attributes['numeroOperacion']
|
|
151
149
|
end
|
|
@@ -107,9 +107,7 @@ module ActiveMerchant #:nodoc:
|
|
|
107
107
|
xml.bill_cc_ payment_method.number
|
|
108
108
|
xml.bill_expmonth_ format(payment_method.month, :two_digits)
|
|
109
109
|
xml.bill_expyear_ format(payment_method.year, :four_digits)
|
|
110
|
-
if payment_method.verification_value?
|
|
111
|
-
xml.bill_cvv2_ payment_method.verification_value
|
|
112
|
-
end
|
|
110
|
+
xml.bill_cvv2_ payment_method.verification_value if payment_method.verification_value?
|
|
113
111
|
end
|
|
114
112
|
|
|
115
113
|
def add_billing_info(xml, options)
|
|
@@ -152,9 +152,7 @@ module ActiveMerchant #:nodoc:
|
|
|
152
152
|
begin
|
|
153
153
|
raw_response = (action == :verify_payment ? ssl_get("#{base_url}/payments/#{post}", headers) : ssl_post(url(post, action, authorization), post.to_json, headers))
|
|
154
154
|
response = parse(raw_response)
|
|
155
|
-
if action == :capture && response.key?('_links')
|
|
156
|
-
response['id'] = response['_links']['payment']['href'].split('/')[-1]
|
|
157
|
-
end
|
|
155
|
+
response['id'] = response['_links']['payment']['href'].split('/')[-1] if action == :capture && response.key?('_links')
|
|
158
156
|
rescue ResponseError => e
|
|
159
157
|
raise unless e.response.code.to_s =~ /4\d\d/
|
|
160
158
|
response = parse(e.response.body)
|
|
@@ -130,9 +130,7 @@ module ActiveMerchant #:nodoc:
|
|
|
130
130
|
card[:expire_month] = '%02d'% payment.month
|
|
131
131
|
card[:expire_year] = payment.year
|
|
132
132
|
|
|
133
|
-
if payment.verification_value?
|
|
134
|
-
card[:csc] = payment.verification_value
|
|
135
|
-
end
|
|
133
|
+
card[:csc] = payment.verification_value if payment.verification_value?
|
|
136
134
|
|
|
137
135
|
post[:card] = card if card.any?
|
|
138
136
|
end
|
|
@@ -161,12 +159,13 @@ module ActiveMerchant #:nodoc:
|
|
|
161
159
|
end
|
|
162
160
|
end
|
|
163
161
|
|
|
164
|
-
response =
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
response =
|
|
163
|
+
begin
|
|
164
|
+
parse(ssl_post(url, body, headers))
|
|
165
|
+
rescue ResponseError => e
|
|
166
|
+
raise unless(e.response.code.to_s =~ /400/)
|
|
167
|
+
parse(e.response.body)
|
|
168
|
+
end
|
|
170
169
|
|
|
171
170
|
Response.new(
|
|
172
171
|
success_from(response),
|
|
@@ -211,9 +210,7 @@ module ActiveMerchant #:nodoc:
|
|
|
211
210
|
end
|
|
212
211
|
|
|
213
212
|
def error_code_from(response)
|
|
214
|
-
unless success_from(response)
|
|
215
|
-
response['status']['code']
|
|
216
|
-
end
|
|
213
|
+
response['status']['code'] unless success_from(response)
|
|
217
214
|
end
|
|
218
215
|
end
|
|
219
216
|
end
|
|
@@ -358,7 +358,7 @@ module ActiveMerchant #:nodoc:
|
|
|
358
358
|
end
|
|
359
359
|
|
|
360
360
|
def add_processor(post, options)
|
|
361
|
-
post[:r1] = options[:processor]
|
|
361
|
+
post[:r1] = options[:processor] if options[:processor]
|
|
362
362
|
post[:r2] = options[:processor_merchant_id] if options[:processor_merchant_id]
|
|
363
363
|
end
|
|
364
364
|
|
|
@@ -208,11 +208,12 @@ module ActiveMerchant #:nodoc:
|
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
def commit(action, params)
|
|
211
|
-
response =
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
211
|
+
response =
|
|
212
|
+
begin
|
|
213
|
+
parse(ssl_post(url + ACTIONS[action], post_data(action, params), headers))
|
|
214
|
+
rescue ResponseError => e
|
|
215
|
+
parse(e.response.body)
|
|
216
|
+
end
|
|
216
217
|
|
|
217
218
|
success = success_from(response)
|
|
218
219
|
|
|
@@ -290,6 +290,7 @@ module ActiveMerchant #:nodoc:
|
|
|
290
290
|
add_purchase_data(xml, money, true, options)
|
|
291
291
|
add_capture_service(xml, request_id, request_token)
|
|
292
292
|
add_business_rules_data(xml, authorization, options)
|
|
293
|
+
add_issuer_additional_data(xml, options)
|
|
293
294
|
xml.target!
|
|
294
295
|
end
|
|
295
296
|
|
|
@@ -123,9 +123,7 @@ module ActiveMerchant
|
|
|
123
123
|
add_authentication(xml)
|
|
124
124
|
|
|
125
125
|
xml.tag! :Transaction do
|
|
126
|
-
if options[:set_up_continuous_authority]
|
|
127
|
-
xml.tag! :ContAuthTxn, :type => 'setup'
|
|
128
|
-
end
|
|
126
|
+
xml.tag! :ContAuthTxn, :type => 'setup' if options[:set_up_continuous_authority]
|
|
129
127
|
xml.tag! :CardTxn do
|
|
130
128
|
xml.tag! :method, type
|
|
131
129
|
add_credit_card(xml, credit_card, options[:billing_address])
|
|
@@ -211,9 +211,7 @@ module ActiveMerchant #:nodoc:
|
|
|
211
211
|
if error = response.dig('status_details', 'error')
|
|
212
212
|
message = error.dig('reason', 'description')
|
|
213
213
|
elsif response['error_type']
|
|
214
|
-
if response['validation_errors']
|
|
215
|
-
message = response['validation_errors'].map { |errors| "#{errors['code']}: #{errors['param']}" }.join(', ')
|
|
216
|
-
end
|
|
214
|
+
message = response['validation_errors'].map { |errors| "#{errors['code']}: #{errors['param']}" }.join(', ') if response['validation_errors']
|
|
217
215
|
message ||= response['error_type']
|
|
218
216
|
end
|
|
219
217
|
|