activemerchant 1.120.0 → 1.121.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +10 -1
- data/lib/active_merchant/billing/gateways/adyen.rb +7 -0
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +3 -2
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +10 -0
- data/lib/active_merchant/billing/gateways/orbital.rb +9 -1
- data/lib/active_merchant/billing/gateways/payment_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/paypal_express.rb +1 -0
- data/lib/active_merchant/billing/gateways/vpos.rb +11 -6
- data/lib/active_merchant/version.rb +1 -1
- 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: d8bbedca7a5cfd13a87cfcfc7dd7b2eb59a73e6407e5e4df0d0247e9c7e70e0c
|
4
|
+
data.tar.gz: 8ca081c01c837adae8a76bdc357c28753cd899cae9b4467b1c390048c4a2794f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2115a9d6a83597cef54510ce37cb4f3fbf7afecfc9c3662462c554b16e221fec07c1b6ffd622d2f103daf6b2eea7b03899b7a705d04118579833e1c548bb82ed
|
7
|
+
data.tar.gz: 2c8c426554798d1f91ece60ea4de4013ba79283a0f2171c4e54976d2c561ad9e0f74ade0ca3af144f24596151ba82910f83ab42bf6c943acca32d97f366e8517
|
data/CHANGELOG
CHANGED
@@ -3,6 +3,15 @@
|
|
3
3
|
== HEAD
|
4
4
|
|
5
5
|
|
6
|
+
== Version 1.121 (June 8th, 2021)
|
7
|
+
* Braintree: Lift restriction on gem version to allow for backwards compatibility [naashton] #3993
|
8
|
+
* Payment Express/Windcave: Send amount on verify calls [cdmackeyfree] #3995
|
9
|
+
* Orbital: Use billing_address name as fallback [curiousepic] #3966
|
10
|
+
* vPOS: handle shop_process_id correctly [therufs] #3996
|
11
|
+
* Checkout v2: Support metadata field [saschakala] #3992
|
12
|
+
* Adyen: Support networkTxReference field [naashton] #3997
|
13
|
+
* Paypal Express: Enable PayPal express reference transaction request to send merchant session id [janees-e] #3994
|
14
|
+
|
6
15
|
== Version 1.120.0 (May 28th, 2021)
|
7
16
|
* Braintree: Bump required braintree gem version to 3.0.1
|
8
17
|
* Stripe PI: ensure `setup_future_sage` and `off_session` work when using SetupIntents.
|
@@ -67,7 +76,7 @@
|
|
67
76
|
* Payeezy: support general credit [cdmackeyfree] #3977
|
68
77
|
* Ripley and Hipercard: Add BIN ranges [naashton] #3978
|
69
78
|
* Adyen: Default card holder name for credit cards [shasum] #3980
|
70
|
-
* PaywayDotCom: make `source_id` a required field [dsmcclain] # 3981
|
79
|
+
* PaywayDotCom: make `source_id` a required field [dsmcclain] # 3981
|
71
80
|
* Qvalent: remove `pem_password` from required credentials [dsmcclain] #3982
|
72
81
|
* Authorize.net: Fix stored credentials [tatsianaclifton] #3971
|
73
82
|
* CyberSource: Add support for multiple new fields [dsmcclain] #3984
|
@@ -397,6 +397,7 @@ module ActiveMerchant #:nodoc:
|
|
397
397
|
def add_reference(post, authorization, options = {})
|
398
398
|
_, psp_reference, = authorization.split('#')
|
399
399
|
post[:originalReference] = single_reference(authorization) || psp_reference
|
400
|
+
post[:networkTxReference] = options[:network_transaction_id] if options[:network_transaction_id]
|
400
401
|
end
|
401
402
|
|
402
403
|
def add_original_reference(post, authorization, options = {})
|
@@ -511,6 +512,7 @@ module ActiveMerchant #:nodoc:
|
|
511
512
|
raw_response = e.response.body
|
512
513
|
response = parse(raw_response)
|
513
514
|
end
|
515
|
+
|
514
516
|
success = success_from(action, response, options)
|
515
517
|
Response.new(
|
516
518
|
success,
|
@@ -519,6 +521,7 @@ module ActiveMerchant #:nodoc:
|
|
519
521
|
authorization: authorization_from(action, parameters, response),
|
520
522
|
test: test?,
|
521
523
|
error_code: success ? nil : error_code_from(response),
|
524
|
+
network_transaction_id: network_transaction_id_from(response),
|
522
525
|
avs_result: AVSResult.new(code: avs_code_from(response)),
|
523
526
|
cvv_result: CVVResult.new(cvv_result_from(response))
|
524
527
|
)
|
@@ -621,6 +624,10 @@ module ActiveMerchant #:nodoc:
|
|
621
624
|
STANDARD_ERROR_CODE_MAPPING[response['errorCode']]
|
622
625
|
end
|
623
626
|
|
627
|
+
def network_transaction_id_from(response)
|
628
|
+
response.dig('additionalData', 'networkTxReference')
|
629
|
+
end
|
630
|
+
|
624
631
|
def add_browser_info(browser_info, post)
|
625
632
|
return unless browser_info
|
626
633
|
|
@@ -7,7 +7,7 @@ rescue LoadError
|
|
7
7
|
raise 'Could not load the braintree gem. Use `gem install braintree` to install it.'
|
8
8
|
end
|
9
9
|
|
10
|
-
raise
|
10
|
+
raise 'Need braintree gem >= 2.0.0.' unless Braintree::Version::Major >= 2 && Braintree::Version::Minor >= 0
|
11
11
|
|
12
12
|
module ActiveMerchant #:nodoc:
|
13
13
|
module Billing #:nodoc:
|
@@ -801,7 +801,8 @@ module ActiveMerchant #:nodoc:
|
|
801
801
|
eci_indicator: credit_card_or_vault_id.eci
|
802
802
|
}
|
803
803
|
elsif credit_card_or_vault_id.source == :android_pay || credit_card_or_vault_id.source == :google_pay
|
804
|
-
|
804
|
+
Braintree::Version::Major < 3 ? pay_card = :android_pay_card : pay_card = :google_pay_card
|
805
|
+
parameters[pay_card] = {
|
805
806
|
number: credit_card_or_vault_id.number,
|
806
807
|
cryptogram: credit_card_or_vault_id.payment_cryptogram,
|
807
808
|
expiration_month: credit_card_or_vault_id.month.to_s.rjust(2, '0'),
|
@@ -37,12 +37,15 @@ module ActiveMerchant #:nodoc:
|
|
37
37
|
post = {}
|
38
38
|
add_invoice(post, amount, options)
|
39
39
|
add_customer_data(post, options)
|
40
|
+
add_metadata(post, options)
|
40
41
|
|
41
42
|
commit(:capture, post, authorization)
|
42
43
|
end
|
43
44
|
|
44
45
|
def void(authorization, _options = {})
|
45
46
|
post = {}
|
47
|
+
add_metadata(post, options)
|
48
|
+
|
46
49
|
commit(:void, post, authorization)
|
47
50
|
end
|
48
51
|
|
@@ -50,6 +53,7 @@ module ActiveMerchant #:nodoc:
|
|
50
53
|
post = {}
|
51
54
|
add_invoice(post, amount, options)
|
52
55
|
add_customer_data(post, options)
|
56
|
+
add_metadata(post, options)
|
53
57
|
|
54
58
|
commit(:refund, post, authorization)
|
55
59
|
end
|
@@ -82,6 +86,7 @@ module ActiveMerchant #:nodoc:
|
|
82
86
|
add_stored_credential_options(post, options)
|
83
87
|
add_transaction_data(post, options)
|
84
88
|
add_3ds(post, options)
|
89
|
+
add_metadata(post, options)
|
85
90
|
end
|
86
91
|
|
87
92
|
def add_invoice(post, money, options)
|
@@ -97,6 +102,11 @@ module ActiveMerchant #:nodoc:
|
|
97
102
|
post[:metadata][:udf5] = application_id || 'ActiveMerchant'
|
98
103
|
end
|
99
104
|
|
105
|
+
def add_metadata(post, options)
|
106
|
+
post[:metadata] = {} unless post[:metadata]
|
107
|
+
post[:metadata].merge!(options[:metadata]) if options[:metadata]
|
108
|
+
end
|
109
|
+
|
100
110
|
def add_payment_method(post, payment_method, options)
|
101
111
|
post[:source] = {}
|
102
112
|
if payment_method.is_a?(NetworkTokenizationCreditCard) && payment_method.source == :network_token
|
@@ -464,7 +464,7 @@ module ActiveMerchant #:nodoc:
|
|
464
464
|
xml.tag! :AVSphoneNum, (address[:phone] ? address[:phone].scan(/\d/).join.to_s[0..13] : nil)
|
465
465
|
end
|
466
466
|
|
467
|
-
xml.tag! :AVSname, (payment_source
|
467
|
+
xml.tag! :AVSname, billing_name(payment_source, options)
|
468
468
|
xml.tag! :AVScountryCode, (avs_supported ? byte_limit(format_address_field(address[:country]), 2) : '')
|
469
469
|
|
470
470
|
# Needs to come after AVScountryCode
|
@@ -472,6 +472,14 @@ module ActiveMerchant #:nodoc:
|
|
472
472
|
end
|
473
473
|
end
|
474
474
|
|
475
|
+
def billing_name(payment_source, options)
|
476
|
+
if payment_source&.name.present?
|
477
|
+
payment_source.name[0..29]
|
478
|
+
elsif options[:billing_address][:name].present?
|
479
|
+
options[:billing_address][:name][0..29]
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
475
483
|
def add_destination_address(xml, address)
|
476
484
|
if address[:dest_zip]
|
477
485
|
avs_supported = AVS_SUPPORTED_COUNTRIES.include?(address[:dest_country].to_s)
|
@@ -86,8 +86,8 @@ module ActiveMerchant #:nodoc:
|
|
86
86
|
refund(money, identification, options)
|
87
87
|
end
|
88
88
|
|
89
|
-
def verify(payment_source, options = {})
|
90
|
-
request = build_purchase_or_authorization_request(
|
89
|
+
def verify(money, payment_source, options = {})
|
90
|
+
request = build_purchase_or_authorization_request(money, payment_source, options)
|
91
91
|
commit(:validate, request)
|
92
92
|
end
|
93
93
|
|
@@ -250,6 +250,7 @@ module ActiveMerchant #:nodoc:
|
|
250
250
|
xml.tag! 'n2:PaymentType', options[:payment_type] || 'Any'
|
251
251
|
add_payment_details(xml, money, currency_code, options)
|
252
252
|
xml.tag! 'n2:IPAddress', options[:ip]
|
253
|
+
xml.tag! 'n2:MerchantSessionId', options[:merchant_session_id] if options[:merchant_session_id].present?
|
253
254
|
end
|
254
255
|
end
|
255
256
|
end
|
@@ -34,14 +34,15 @@ module ActiveMerchant #:nodoc:
|
|
34
34
|
def purchase(money, payment, options = {})
|
35
35
|
commerce = options[:commerce] || @options[:commerce]
|
36
36
|
commerce_branch = options[:commerce_branch] || @options[:commerce_branch]
|
37
|
+
shop_process_id = options[:shop_process_id] || @shop_process_id
|
37
38
|
|
38
|
-
token = generate_token(
|
39
|
+
token = generate_token(shop_process_id, 'pay_pci', commerce, commerce_branch, amount(money), currency(money))
|
39
40
|
|
40
41
|
post = {}
|
41
42
|
post[:token] = token
|
42
43
|
post[:commerce] = commerce.to_s
|
43
44
|
post[:commerce_branch] = commerce_branch.to_s
|
44
|
-
post[:shop_process_id] =
|
45
|
+
post[:shop_process_id] = shop_process_id
|
45
46
|
post[:number_of_payments] = options[:number_of_payments] || 1
|
46
47
|
post[:recursive] = options[:recursive] || false
|
47
48
|
|
@@ -52,11 +53,12 @@ module ActiveMerchant #:nodoc:
|
|
52
53
|
commit(:pay_pci_buy_encrypted, post)
|
53
54
|
end
|
54
55
|
|
55
|
-
def void(
|
56
|
-
|
56
|
+
def void(authorization, options = {})
|
57
|
+
_, shop_process_id = authorization.to_s.split('#')
|
58
|
+
token = generate_token(shop_process_id, 'rollback', '0.00')
|
57
59
|
post = {
|
58
60
|
token: token,
|
59
|
-
shop_process_id:
|
61
|
+
shop_process_id: shop_process_id
|
60
62
|
}
|
61
63
|
commit(:pci_buy_rollback, post)
|
62
64
|
end
|
@@ -151,7 +153,10 @@ module ActiveMerchant #:nodoc:
|
|
151
153
|
end
|
152
154
|
|
153
155
|
def authorization_from(response)
|
154
|
-
response.dig('confirmation', 'authorization_number')
|
156
|
+
authorization_number = response.dig('confirmation', 'authorization_number')
|
157
|
+
shop_process_id = response.dig('confirmation', 'shop_process_id')
|
158
|
+
|
159
|
+
"#{authorization_number}##{shop_process_id}"
|
155
160
|
end
|
156
161
|
|
157
162
|
def error_code_from(response)
|
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.121.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: 2021-
|
11
|
+
date: 2021-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|