braintree 4.14.0 → 4.15.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/lib/braintree/credit_card.rb +13 -0
- data/lib/braintree/credit_card_gateway.rb +15 -3
- data/lib/braintree/payment_method_gateway.rb +15 -3
- data/lib/braintree/test/nonce.rb +1 -0
- data/lib/braintree/test/venmo_sdk.rb +2 -0
- data/lib/braintree/transaction/credit_card_details.rb +3 -0
- data/lib/braintree/transaction/local_payment_details.rb +2 -0
- data/lib/braintree/transaction.rb +5 -4
- data/lib/braintree/transaction_gateway.rb +15 -3
- data/lib/braintree/transaction_search.rb +6 -5
- data/lib/braintree/version.rb +1 -1
- data/lib/braintree/webhook_notification.rb +1 -0
- data/lib/braintree/webhook_testing_gateway.rb +17 -0
- data/spec/integration/braintree/add_on_spec.rb +9 -9
- data/spec/integration/braintree/address_spec.rb +69 -69
- data/spec/integration/braintree/advanced_search_spec.rb +45 -45
- data/spec/integration/braintree/apple_pay_spec.rb +8 -8
- data/spec/integration/braintree/client_api/client_token_spec.rb +15 -15
- data/spec/integration/braintree/credit_card_spec.rb +223 -223
- data/spec/integration/braintree/credit_card_verification_search_spec.rb +16 -16
- data/spec/integration/braintree/credit_card_verification_spec.rb +52 -52
- data/spec/integration/braintree/customer_search_spec.rb +20 -20
- data/spec/integration/braintree/customer_spec.rb +313 -313
- data/spec/integration/braintree/disbursement_spec.rb +2 -2
- data/spec/integration/braintree/discount_spec.rb +9 -9
- data/spec/integration/braintree/dispute_spec.rb +87 -87
- data/spec/integration/braintree/document_upload_spec.rb +17 -17
- data/spec/integration/braintree/error_codes_spec.rb +2 -2
- data/spec/integration/braintree/http_spec.rb +28 -28
- data/spec/integration/braintree/merchant_account_spec.rb +127 -127
- data/spec/integration/braintree/merchant_spec.rb +103 -103
- data/spec/integration/braintree/oauth_spec.rb +61 -61
- data/spec/integration/braintree/payment_method_nonce_spec.rb +73 -73
- data/spec/integration/braintree/payment_method_spec.rb +389 -389
- data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +78 -78
- data/spec/integration/braintree/paypal_account_spec.rb +38 -38
- data/spec/integration/braintree/plan_spec.rb +15 -15
- data/spec/integration/braintree/samsung_pay_card_spec.rb +65 -65
- data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +51 -51
- data/spec/integration/braintree/settlement_batch_summary_spec.rb +11 -11
- data/spec/integration/braintree/subscription_spec.rb +364 -364
- data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
- data/spec/integration/braintree/test_transaction_spec.rb +19 -19
- data/spec/integration/braintree/transaction_line_item_spec.rb +6 -6
- data/spec/integration/braintree/transaction_search_spec.rb +198 -165
- data/spec/integration/braintree/transaction_spec.rb +1315 -1149
- data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -32
- data/spec/integration/braintree/us_bank_account_spec.rb +30 -30
- data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +18 -18
- data/spec/integration/braintree/us_bank_account_verification_spec.rb +33 -33
- data/spec/integration/braintree/visa_checkout_card_spec.rb +57 -57
- data/spec/spec_helper.rb +9 -8
- data/spec/unit/braintree/address_spec.rb +8 -8
- data/spec/unit/braintree/base_module_spec.rb +4 -4
- data/spec/unit/braintree/client_token_spec.rb +2 -2
- data/spec/unit/braintree/configuration_spec.rb +57 -57
- data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
- data/spec/unit/braintree/credit_card_spec.rb +31 -29
- data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +28 -28
- data/spec/unit/braintree/credit_card_verification_search_spec.rb +9 -9
- data/spec/unit/braintree/credit_card_verification_spec.rb +17 -17
- data/spec/unit/braintree/customer_spec.rb +41 -40
- data/spec/unit/braintree/digest_spec.rb +5 -5
- data/spec/unit/braintree/disbursement_spec.rb +11 -11
- data/spec/unit/braintree/dispute_search_spec.rb +2 -2
- data/spec/unit/braintree/dispute_spec.rb +56 -56
- data/spec/unit/braintree/document_upload_spec.rb +8 -8
- data/spec/unit/braintree/enriched_customer_data_spec.rb +2 -2
- data/spec/unit/braintree/error_result_spec.rb +5 -5
- data/spec/unit/braintree/errors_spec.rb +9 -9
- data/spec/unit/braintree/http_spec.rb +8 -8
- data/spec/unit/braintree/local_payment_completed_spec.rb +11 -11
- data/spec/unit/braintree/local_payment_expired_spec.rb +2 -2
- data/spec/unit/braintree/local_payment_funded_spec.rb +6 -6
- data/spec/unit/braintree/merchant_account_spec.rb +4 -4
- data/spec/unit/braintree/modification_spec.rb +1 -1
- data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +6 -6
- data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +7 -7
- data/spec/unit/braintree/payment_method_nonce_details_spec.rb +14 -14
- data/spec/unit/braintree/payment_method_spec.rb +19 -19
- data/spec/unit/braintree/paypal_account_spec.rb +4 -4
- data/spec/unit/braintree/resource_collection_spec.rb +7 -7
- data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +1 -1
- data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
- data/spec/unit/braintree/signature_service_spec.rb +2 -2
- data/spec/unit/braintree/subscription_search_spec.rb +17 -17
- data/spec/unit/braintree/subscription_spec.rb +8 -8
- data/spec/unit/braintree/successful_result_spec.rb +5 -5
- data/spec/unit/braintree/three_d_secure_info_spec.rb +20 -20
- data/spec/unit/braintree/transaction/credit_card_details_spec.rb +5 -5
- data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
- data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
- data/spec/unit/braintree/transaction/local_payment_details_spec.rb +30 -0
- data/spec/unit/braintree/transaction_gateway_spec.rb +9 -6
- data/spec/unit/braintree/transaction_search_spec.rb +2 -2
- data/spec/unit/braintree/transaction_spec.rb +101 -93
- data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
- data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
- data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
- data/spec/unit/braintree/us_bank_account_verification_spec.rb +7 -7
- data/spec/unit/braintree/util_spec.rb +27 -27
- data/spec/unit/braintree/validation_error_collection_spec.rb +34 -34
- data/spec/unit/braintree/validation_error_spec.rb +4 -4
- data/spec/unit/braintree/venmo_profile_data_spec.rb +5 -5
- data/spec/unit/braintree/webhook_notification_spec.rb +206 -191
- data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
- data/spec/unit/braintree/xml/parser_spec.rb +8 -8
- data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
- data/spec/unit/braintree/xml_spec.rb +17 -17
- data/spec/unit/braintree_spec.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 71fab9e9404ac3f2c30216aca3642baecbd01c942a25c16c70b6748563f32435
|
|
4
|
+
data.tar.gz: b8900d8aa7aac3716db035478510532bb82edd40ba599626d7cbe770fa939849
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9470b1e652814a7ae2fda1250b2c9f670069f1ef98a601ce2a382a4e3430017eaeaeaf7dabe4bc1b456c755d1b0fb258b06fc0593432d2b35c2ce9fc02671d5a
|
|
7
|
+
data.tar.gz: e376876f7c6ae2c5a1ce588c847d3494e828b29c4f2aee273d5e2c97348577db364b4bcc48ba0588074d87644a39f771b45c7eb56e7865be1cec730a76e72162
|
|
@@ -23,6 +23,16 @@ module Braintree
|
|
|
23
23
|
All = constants.map { |c| const_get(c) }
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
module DebitNetwork
|
|
27
|
+
Accel = "ACCEL"
|
|
28
|
+
Nyce = "NYCE"
|
|
29
|
+
Pulse = "PULSE"
|
|
30
|
+
Star = "STAR"
|
|
31
|
+
Star_Access = "STAR_ACCESS"
|
|
32
|
+
|
|
33
|
+
All = constants.map { |c| const_get(c) }
|
|
34
|
+
end
|
|
35
|
+
|
|
26
36
|
module CustomerLocation
|
|
27
37
|
International = "international"
|
|
28
38
|
US = "us"
|
|
@@ -160,7 +170,10 @@ module Braintree
|
|
|
160
170
|
end
|
|
161
171
|
|
|
162
172
|
# Returns true if the card is associated with Venmo SDK
|
|
173
|
+
# NEXT_MAJOR_VERSION Remove this method
|
|
174
|
+
# The old venmo SDK class has been deprecated
|
|
163
175
|
def venmo_sdk?
|
|
176
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
164
177
|
@venmo_sdk
|
|
165
178
|
end
|
|
166
179
|
|
|
@@ -12,6 +12,10 @@ module Braintree
|
|
|
12
12
|
if attributes.has_key?(:expiration_date) && (attributes.has_key?(:expiration_month) || attributes.has_key?(:expiration_year))
|
|
13
13
|
raise ArgumentError.new("create with both expiration_month and expiration_year or only expiration_date")
|
|
14
14
|
end
|
|
15
|
+
# NEXT_MAJOR_VERSION remove this check
|
|
16
|
+
if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
|
|
17
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
18
|
+
end
|
|
15
19
|
Util.verify_keys(CreditCardGateway._create_signature, attributes)
|
|
16
20
|
_do_create("/payment_methods", :credit_card => attributes)
|
|
17
21
|
end
|
|
@@ -61,6 +65,10 @@ module Braintree
|
|
|
61
65
|
end
|
|
62
66
|
|
|
63
67
|
def update(token, attributes)
|
|
68
|
+
# NEXT_MAJOR_VERSION remove this check
|
|
69
|
+
if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
|
|
70
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
71
|
+
end
|
|
64
72
|
Util.verify_keys(CreditCardGateway._update_signature, attributes)
|
|
65
73
|
_do_update(:put, "/payment_methods/credit_card/#{token}", :credit_card => attributes)
|
|
66
74
|
end
|
|
@@ -79,21 +87,25 @@ module Braintree
|
|
|
79
87
|
|
|
80
88
|
def self._signature(type) # :nodoc:
|
|
81
89
|
billing_address_params = AddressGateway._shared_signature
|
|
90
|
+
# NEXT_MAJOR_VERSION Remove venmo_sdk_session
|
|
91
|
+
# The old venmo SDK class has been deprecated
|
|
82
92
|
options = [
|
|
83
93
|
:fail_on_duplicate_payment_method,
|
|
84
94
|
:make_default,
|
|
85
95
|
:skip_advanced_fraud_checking,
|
|
86
|
-
:venmo_sdk_session,
|
|
96
|
+
:venmo_sdk_session, # Deprecated
|
|
87
97
|
:verification_account_type,
|
|
88
98
|
:verification_amount,
|
|
89
99
|
:verification_currency_iso_code,
|
|
90
100
|
:verification_merchant_account_id,
|
|
91
101
|
:verify_card
|
|
92
102
|
]
|
|
103
|
+
# NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code
|
|
104
|
+
# The old venmo SDK class has been deprecated
|
|
93
105
|
signature = [
|
|
94
106
|
:billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
|
|
95
|
-
:expiration_year, :number, :token, :venmo_sdk_payment_method_code,
|
|
96
|
-
:payment_method_nonce,
|
|
107
|
+
:expiration_year, :number, :token, :venmo_sdk_payment_method_code, # Deprecated
|
|
108
|
+
:device_data, :payment_method_nonce,
|
|
97
109
|
{:external_vault => [:network_transaction_id]},
|
|
98
110
|
{:options => options},
|
|
99
111
|
{:billing_address => billing_address_params}
|
|
@@ -9,6 +9,10 @@ module Braintree
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def create(attributes)
|
|
12
|
+
# NEXT_MAJOR_VERSION remove this check
|
|
13
|
+
if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
|
|
14
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
15
|
+
end
|
|
12
16
|
Util.verify_keys(PaymentMethodGateway._create_signature, attributes)
|
|
13
17
|
_do_create("/payment_methods", :payment_method => attributes)
|
|
14
18
|
end
|
|
@@ -60,6 +64,10 @@ module Braintree
|
|
|
60
64
|
end
|
|
61
65
|
|
|
62
66
|
def update(token, attributes)
|
|
67
|
+
# NEXT_MAJOR_VERSION remove this check
|
|
68
|
+
if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
|
|
69
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
70
|
+
end
|
|
63
71
|
Util.verify_keys(PaymentMethodGateway._update_signature, attributes)
|
|
64
72
|
_do_update(:put, "/payment_methods/any/#{token}", :payment_method => attributes)
|
|
65
73
|
end
|
|
@@ -149,11 +157,13 @@ module Braintree
|
|
|
149
157
|
def self._signature(type) # :nodoc:
|
|
150
158
|
billing_address_params = AddressGateway._shared_signature
|
|
151
159
|
paypal_options_shipping_signature = AddressGateway._shared_signature
|
|
160
|
+
# NEXT_MAJOR_VERSION Remove venmo_sdk_session
|
|
161
|
+
# The old venmo SDK class has been deprecated
|
|
152
162
|
options = [
|
|
153
163
|
:make_default,
|
|
154
164
|
:skip_advanced_fraud_checking,
|
|
155
165
|
:us_bank_account_verification_method,
|
|
156
|
-
:venmo_sdk_session,
|
|
166
|
+
:venmo_sdk_session, # Deprecated
|
|
157
167
|
:verification_account_type,
|
|
158
168
|
:verification_amount,
|
|
159
169
|
:verification_currency_iso_code,
|
|
@@ -168,10 +178,12 @@ module Braintree
|
|
|
168
178
|
{:shipping => paypal_options_shipping_signature}
|
|
169
179
|
],
|
|
170
180
|
]
|
|
181
|
+
# NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code
|
|
182
|
+
# The old venmo SDK class has been deprecated
|
|
171
183
|
signature = [
|
|
172
184
|
:billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
|
|
173
|
-
:expiration_year, :number, :token, :venmo_sdk_payment_method_code,
|
|
174
|
-
:payment_method_nonce,
|
|
185
|
+
:expiration_year, :number, :token, :venmo_sdk_payment_method_code, # Deprecated
|
|
186
|
+
:device_data, :payment_method_nonce,
|
|
175
187
|
{:options => options},
|
|
176
188
|
{:billing_address => billing_address_params}
|
|
177
189
|
]
|
data/lib/braintree/test/nonce.rb
CHANGED
|
@@ -53,6 +53,7 @@ module Braintree
|
|
|
53
53
|
TransactableCountryOfIssuanceUSA = "fake-valid-country-of-issuance-usa-nonce"
|
|
54
54
|
TransactableCountryOfIssuanceCAD = "fake-valid-country-of-issuance-cad-nonce"
|
|
55
55
|
TransactableIssuingBankNetworkOnly = "fake-valid-issuing-bank-network-only-nonce"
|
|
56
|
+
TransactablePinlessDebitVisa = "fake-pinless-debit-visa-nonce"
|
|
56
57
|
ProcessorDeclinedVisa = "fake-processor-declined-visa-nonce"
|
|
57
58
|
ProcessorDeclinedMasterCard = "fake-processor-declined-mastercard-nonce"
|
|
58
59
|
ProcessorDeclinedAmEx = "fake-processor-declined-amex-nonce"
|
|
@@ -64,7 +64,10 @@ module Braintree
|
|
|
64
64
|
"#{bin}******#{last_4}"
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
+
# NEXT_MAJOR_VERSION Remove this method
|
|
68
|
+
# The old venmo SDK class has been deprecated
|
|
67
69
|
def venmo_sdk?
|
|
70
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
68
71
|
@venmo_sdk
|
|
69
72
|
end
|
|
70
73
|
|
|
@@ -8,6 +8,8 @@ module Braintree
|
|
|
8
8
|
attr_reader :debug_id
|
|
9
9
|
attr_reader :description
|
|
10
10
|
attr_reader :funding_source
|
|
11
|
+
attr_reader :implicitly_vaulted_payment_method_global_id
|
|
12
|
+
attr_reader :implicitly_vaulted_payment_method_token
|
|
11
13
|
attr_reader :payer_id
|
|
12
14
|
attr_reader :payment_id
|
|
13
15
|
attr_reader :refund_from_transaction_fee_amount
|
|
@@ -91,8 +91,9 @@ module Braintree
|
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
attr_reader :acquirer_reference_number
|
|
95
94
|
attr_reader :ach_return_code
|
|
95
|
+
attr_reader :ach_return_responses
|
|
96
|
+
attr_reader :acquirer_reference_number
|
|
96
97
|
attr_reader :add_ons
|
|
97
98
|
attr_reader :additional_processor_response # The raw response from the processor.
|
|
98
99
|
attr_reader :amount
|
|
@@ -111,6 +112,7 @@ module Braintree
|
|
|
111
112
|
attr_reader :custom_fields
|
|
112
113
|
attr_reader :customer_details
|
|
113
114
|
attr_reader :cvv_response_code
|
|
115
|
+
attr_reader :debit_network
|
|
114
116
|
attr_reader :descriptor
|
|
115
117
|
attr_reader :disbursement_details
|
|
116
118
|
attr_reader :discount_amount
|
|
@@ -150,8 +152,8 @@ module Braintree
|
|
|
150
152
|
attr_reader :purchase_order_number
|
|
151
153
|
attr_reader :recurring
|
|
152
154
|
attr_reader :refund_ids
|
|
153
|
-
attr_reader :refunded_transaction_id
|
|
154
155
|
attr_reader :refunded_installments
|
|
156
|
+
attr_reader :refunded_transaction_id
|
|
155
157
|
attr_reader :retried
|
|
156
158
|
attr_reader :retried_transaction_id # the primary/parent transaction id of any retried transaction
|
|
157
159
|
attr_reader :retrieval_reference_number
|
|
@@ -159,9 +161,9 @@ module Braintree
|
|
|
159
161
|
attr_reader :risk_data
|
|
160
162
|
attr_reader :samsung_pay_card_details
|
|
161
163
|
attr_reader :sca_exemption_requested
|
|
162
|
-
attr_reader :service_fee_amount
|
|
163
164
|
attr_reader :sepa_direct_debit_account_details
|
|
164
165
|
attr_reader :sepa_direct_debit_return_code
|
|
166
|
+
attr_reader :service_fee_amount
|
|
165
167
|
attr_reader :settlement_batch_id
|
|
166
168
|
attr_reader :shipping_amount
|
|
167
169
|
attr_reader :shipping_details
|
|
@@ -179,7 +181,6 @@ module Braintree
|
|
|
179
181
|
attr_reader :venmo_account_details
|
|
180
182
|
attr_reader :visa_checkout_card_details
|
|
181
183
|
attr_reader :voice_referral_number
|
|
182
|
-
attr_reader :ach_return_responses
|
|
183
184
|
|
|
184
185
|
def self.adjust_authorization(*args)
|
|
185
186
|
Configuration.gateway.transaction.adjust_authorization(*args)
|
|
@@ -9,6 +9,14 @@ module Braintree
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def create(attributes)
|
|
12
|
+
# NEXT_MAJOR_VERSION remove this check
|
|
13
|
+
if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
|
|
14
|
+
warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
|
|
15
|
+
end
|
|
16
|
+
# NEXT_MAJOR_VERSION remove this check
|
|
17
|
+
if attributes.has_key?(:three_d_secure_token)
|
|
18
|
+
warn "[DEPRECATED] Passing :three_d_secure_token to create is deprecated. Please use :three_d_secure_authentication_id"
|
|
19
|
+
end
|
|
12
20
|
Util.verify_keys(TransactionGateway._create_signature, attributes)
|
|
13
21
|
_do_create "/transactions", :transaction => attributes
|
|
14
22
|
end
|
|
@@ -183,6 +191,10 @@ module Braintree
|
|
|
183
191
|
[:amount, :channel, {:options => [:submit_for_settlement]}]
|
|
184
192
|
end
|
|
185
193
|
|
|
194
|
+
|
|
195
|
+
# NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code, venmo_sdk_session, and three_d_secure_token
|
|
196
|
+
# The old venmo SDK class has been deprecated
|
|
197
|
+
# three_d_secure_token has been deprecated in favor of three_d_secure_authentication_id
|
|
186
198
|
def self._create_signature # :nodoc:
|
|
187
199
|
[
|
|
188
200
|
:amount, :billing_address_id, :channel, :customer_id, :device_data, :discount_amount,
|
|
@@ -190,8 +202,8 @@ module Braintree
|
|
|
190
202
|
:product_sku, :purchase_order_number, :service_fee_amount, :shared_billing_address_id,
|
|
191
203
|
:shared_customer_id, :shared_payment_method_nonce, :shared_payment_method_token,
|
|
192
204
|
:shared_shipping_address_id, :shipping_address_id, :shipping_amount,
|
|
193
|
-
:ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,
|
|
194
|
-
:
|
|
205
|
+
:ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,:three_d_secure_token, #Deprecated
|
|
206
|
+
:transaction_source, :type, :venmo_sdk_payment_method_code, # Deprecated
|
|
195
207
|
:sca_exemption, :currency_iso_code, :exchange_rate_quote_id,
|
|
196
208
|
{:line_items => [:quantity, :name, :description, :kind, :unit_amount, :unit_tax_amount, :total_amount, :discount_amount, :tax_amount, :unit_of_measure, :product_code, :commodity_code, :url]},
|
|
197
209
|
{:risk_data => [:customer_browser, :customer_device_id, :customer_ip, :customer_location_zip, :customer_tenure]},
|
|
@@ -222,7 +234,7 @@ module Braintree
|
|
|
222
234
|
:submit_for_settlement,
|
|
223
235
|
:add_billing_address_to_payment_method,
|
|
224
236
|
:store_shipping_address_in_vault,
|
|
225
|
-
:venmo_sdk_session,
|
|
237
|
+
:venmo_sdk_session, # Deprecated
|
|
226
238
|
:payee_id,
|
|
227
239
|
:payee_email,
|
|
228
240
|
:skip_advanced_fraud_checking,
|
|
@@ -54,15 +54,16 @@ module Braintree
|
|
|
54
54
|
CreditCard::CustomerLocation::International,
|
|
55
55
|
CreditCard::CustomerLocation::US
|
|
56
56
|
]
|
|
57
|
+
multiple_value_field :debit_network, :allows => CreditCard::DebitNetwork::All
|
|
57
58
|
multiple_value_field :ids
|
|
58
|
-
multiple_value_field :payment_instrument_type
|
|
59
|
-
multiple_value_field :user
|
|
60
59
|
multiple_value_field :merchant_account_id
|
|
61
|
-
multiple_value_field :
|
|
60
|
+
multiple_value_field :payment_instrument_type
|
|
61
|
+
multiple_value_field :reason_code
|
|
62
62
|
multiple_value_field :source
|
|
63
|
-
multiple_value_field :
|
|
63
|
+
multiple_value_field :status, :allows => Transaction::Status::All
|
|
64
64
|
multiple_value_field :store_ids
|
|
65
|
-
multiple_value_field :
|
|
65
|
+
multiple_value_field :type, :allows => Transaction::Type::All
|
|
66
|
+
multiple_value_field :user
|
|
66
67
|
|
|
67
68
|
key_value_fields :refund
|
|
68
69
|
|
data/lib/braintree/version.rb
CHANGED
|
@@ -45,6 +45,7 @@ module Braintree
|
|
|
45
45
|
|
|
46
46
|
RecipientUpdatedGrantedPaymentMethod = "recipient_updated_granted_payment_method"
|
|
47
47
|
|
|
48
|
+
SubscriptionBillingSkipped = "subscription_billing_skipped"
|
|
48
49
|
SubscriptionCanceled = "subscription_canceled"
|
|
49
50
|
SubscriptionChargedSuccessfully = "subscription_charged_successfully"
|
|
50
51
|
SubscriptionChargedUnsuccessfully = "subscription_charged_unsuccessfully"
|
|
@@ -72,6 +72,8 @@ module Braintree
|
|
|
72
72
|
_disbursement_exception_sample_xml(id)
|
|
73
73
|
when Braintree::WebhookNotification::Kind::Disbursement
|
|
74
74
|
_disbursement_sample_xml(id)
|
|
75
|
+
when Braintree::WebhookNotification::Kind::SubscriptionBillingSkipped
|
|
76
|
+
_subscription_billing_skipped(id)
|
|
75
77
|
when Braintree::WebhookNotification::Kind::SubscriptionChargedSuccessfully
|
|
76
78
|
_subscription_charged_successfully(id)
|
|
77
79
|
when Braintree::WebhookNotification::Kind::SubscriptionChargedUnsuccessfully
|
|
@@ -112,6 +114,21 @@ module Braintree
|
|
|
112
114
|
XML
|
|
113
115
|
end
|
|
114
116
|
|
|
117
|
+
def _subscription_billing_skipped(id)
|
|
118
|
+
|
|
119
|
+
<<-XML
|
|
120
|
+
<subscription>
|
|
121
|
+
<id>#{id}</id>
|
|
122
|
+
<transactions type="array">
|
|
123
|
+
</transactions>
|
|
124
|
+
<add_ons type="array">
|
|
125
|
+
</add_ons>
|
|
126
|
+
<discounts type="array">
|
|
127
|
+
</discounts>
|
|
128
|
+
</subscription>
|
|
129
|
+
XML
|
|
130
|
+
end
|
|
131
|
+
|
|
115
132
|
def _subscription_charged_successfully(id)
|
|
116
133
|
|
|
117
134
|
<<-XML
|
|
@@ -20,15 +20,15 @@ describe Braintree::AddOn do
|
|
|
20
20
|
add_ons = Braintree::AddOn.all
|
|
21
21
|
add_on = add_ons.select { |add_on| add_on.id == id }.first
|
|
22
22
|
|
|
23
|
-
add_on.
|
|
24
|
-
add_on.amount.
|
|
25
|
-
add_on.created_at.
|
|
26
|
-
add_on.description.
|
|
27
|
-
add_on.kind.
|
|
28
|
-
add_on.name.
|
|
29
|
-
add_on.never_expires.
|
|
30
|
-
add_on.number_of_billing_cycles.
|
|
31
|
-
add_on.updated_at.
|
|
23
|
+
expect(add_on).not_to be_nil
|
|
24
|
+
expect(add_on.amount).to eq(BigDecimal(expected[:amount]))
|
|
25
|
+
expect(add_on.created_at).not_to be_nil
|
|
26
|
+
expect(add_on.description).to eq(expected[:description])
|
|
27
|
+
expect(add_on.kind).to eq(expected[:kind])
|
|
28
|
+
expect(add_on.name).to eq(expected[:name])
|
|
29
|
+
expect(add_on.never_expires).to eq(expected[:never_expires])
|
|
30
|
+
expect(add_on.number_of_billing_cycles).to eq(expected[:number_of_billing_cycles])
|
|
31
|
+
expect(add_on.updated_at).not_to be_nil
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it "raises with a helpful error if public_key and private_key are not set" do
|
|
@@ -18,21 +18,21 @@ describe Braintree::Address do
|
|
|
18
18
|
:postal_code => "60622",
|
|
19
19
|
:country_name => "United States of America",
|
|
20
20
|
)
|
|
21
|
-
result.success
|
|
22
|
-
result.address.customer_id.
|
|
23
|
-
result.address.first_name.
|
|
24
|
-
result.address.last_name.
|
|
25
|
-
result.address.company.
|
|
26
|
-
result.address.street_address.
|
|
27
|
-
result.address.extended_address.
|
|
28
|
-
result.address.locality.
|
|
29
|
-
result.address.region.
|
|
30
|
-
result.address.phone_number.
|
|
31
|
-
result.address.postal_code.
|
|
32
|
-
result.address.country_name.
|
|
33
|
-
result.address.country_code_alpha2.
|
|
34
|
-
result.address.country_code_alpha3.
|
|
35
|
-
result.address.country_code_numeric.
|
|
21
|
+
expect(result.success?).to eq(true)
|
|
22
|
+
expect(result.address.customer_id).to eq(customer.id)
|
|
23
|
+
expect(result.address.first_name).to eq("Ben")
|
|
24
|
+
expect(result.address.last_name).to eq("Moore")
|
|
25
|
+
expect(result.address.company).to eq("Moore Co.")
|
|
26
|
+
expect(result.address.street_address).to eq("1811 E Main St")
|
|
27
|
+
expect(result.address.extended_address).to eq("Suite 200")
|
|
28
|
+
expect(result.address.locality).to eq("Chicago")
|
|
29
|
+
expect(result.address.region).to eq("Illinois")
|
|
30
|
+
expect(result.address.phone_number).to eq("5551231234")
|
|
31
|
+
expect(result.address.postal_code).to eq("60622")
|
|
32
|
+
expect(result.address.country_name).to eq("United States of America")
|
|
33
|
+
expect(result.address.country_code_alpha2).to eq("US")
|
|
34
|
+
expect(result.address.country_code_alpha3).to eq("USA")
|
|
35
|
+
expect(result.address.country_code_numeric).to eq("840")
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it "accepts country_codes" do
|
|
@@ -43,11 +43,11 @@ describe Braintree::Address do
|
|
|
43
43
|
:country_code_alpha3 => "ASM",
|
|
44
44
|
:country_code_numeric => "16",
|
|
45
45
|
)
|
|
46
|
-
result.success
|
|
47
|
-
result.address.country_name.
|
|
48
|
-
result.address.country_code_alpha2.
|
|
49
|
-
result.address.country_code_alpha3.
|
|
50
|
-
result.address.country_code_numeric.
|
|
46
|
+
expect(result.success?).to eq(true)
|
|
47
|
+
expect(result.address.country_name).to eq("American Samoa")
|
|
48
|
+
expect(result.address.country_code_alpha2).to eq("AS")
|
|
49
|
+
expect(result.address.country_code_alpha3).to eq("ASM")
|
|
50
|
+
expect(result.address.country_code_numeric).to eq("016")
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
it "accepts utf-8 country names" do
|
|
@@ -56,8 +56,8 @@ describe Braintree::Address do
|
|
|
56
56
|
:customer_id => customer.id,
|
|
57
57
|
:country_name => "Åland",
|
|
58
58
|
)
|
|
59
|
-
result.success
|
|
60
|
-
result.address.country_name.
|
|
59
|
+
expect(result.success?).to eq(true)
|
|
60
|
+
expect(result.address.country_name).to eq("Åland")
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
it "returns an error response given inconsistent country codes" do
|
|
@@ -67,8 +67,8 @@ describe Braintree::Address do
|
|
|
67
67
|
:country_code_alpha2 => "AS",
|
|
68
68
|
:country_code_alpha3 => "USA",
|
|
69
69
|
)
|
|
70
|
-
result.success
|
|
71
|
-
result.errors.for(:address).on(:base).map { |e| e.code }.
|
|
70
|
+
expect(result.success?).to eq(false)
|
|
71
|
+
expect(result.errors.for(:address).on(:base).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::InconsistentCountry)
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
it "returns an error response given an invalid country_code_alpha2" do
|
|
@@ -77,8 +77,8 @@ describe Braintree::Address do
|
|
|
77
77
|
:customer_id => customer.id,
|
|
78
78
|
:country_code_alpha2 => "zz",
|
|
79
79
|
)
|
|
80
|
-
result.success
|
|
81
|
-
result.errors.for(:address).on(:country_code_alpha2).map { |e| e.code }.
|
|
80
|
+
expect(result.success?).to eq(false)
|
|
81
|
+
expect(result.errors.for(:address).on(:country_code_alpha2).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::CountryCodeAlpha2IsNotAccepted)
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
it "returns an error response given an invalid country_code_alpha3" do
|
|
@@ -87,8 +87,8 @@ describe Braintree::Address do
|
|
|
87
87
|
:customer_id => customer.id,
|
|
88
88
|
:country_code_alpha3 => "zzz",
|
|
89
89
|
)
|
|
90
|
-
result.success
|
|
91
|
-
result.errors.for(:address).on(:country_code_alpha3).map { |e| e.code }.
|
|
90
|
+
expect(result.success?).to eq(false)
|
|
91
|
+
expect(result.errors.for(:address).on(:country_code_alpha3).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::CountryCodeAlpha3IsNotAccepted)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
it "returns an error response given an invalid country_code_numeric" do
|
|
@@ -97,8 +97,8 @@ describe Braintree::Address do
|
|
|
97
97
|
:customer_id => customer.id,
|
|
98
98
|
:country_code_numeric => "zz",
|
|
99
99
|
)
|
|
100
|
-
result.success
|
|
101
|
-
result.errors.for(:address).on(:country_code_numeric).map { |e| e.code }.
|
|
100
|
+
expect(result.success?).to eq(false)
|
|
101
|
+
expect(result.errors.for(:address).on(:country_code_numeric).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::CountryCodeNumericIsNotAccepted)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
it "returns an error response if invalid" do
|
|
@@ -107,8 +107,8 @@ describe Braintree::Address do
|
|
|
107
107
|
:customer_id => customer.id,
|
|
108
108
|
:country_name => "United States of Invalid",
|
|
109
109
|
)
|
|
110
|
-
result.success
|
|
111
|
-
result.errors.for(:address).on(:country_name)[0].message.
|
|
110
|
+
expect(result.success?).to eq(false)
|
|
111
|
+
expect(result.errors.for(:address).on(:country_name)[0].message).to eq("Country name is not an accepted country.")
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
it "allows -, _, A-Z, a-z, and 0-9 in customer_id without raising an ArgumentError" do
|
|
@@ -137,14 +137,14 @@ describe Braintree::Address do
|
|
|
137
137
|
:postal_code => "60623",
|
|
138
138
|
:country_name => "United States of America",
|
|
139
139
|
)
|
|
140
|
-
address.customer_id.
|
|
141
|
-
address.street_address.
|
|
142
|
-
address.extended_address.
|
|
143
|
-
address.locality.
|
|
144
|
-
address.region.
|
|
145
|
-
address.phone_number.
|
|
146
|
-
address.postal_code.
|
|
147
|
-
address.country_name.
|
|
140
|
+
expect(address.customer_id).to eq(customer.id)
|
|
141
|
+
expect(address.street_address).to eq("1812 E Main St")
|
|
142
|
+
expect(address.extended_address).to eq("Suite 201")
|
|
143
|
+
expect(address.locality).to eq("Bartlett")
|
|
144
|
+
expect(address.region).to eq("IL")
|
|
145
|
+
expect(address.phone_number).to eq("5551231234")
|
|
146
|
+
expect(address.postal_code).to eq("60623")
|
|
147
|
+
expect(address.country_name).to eq("United States of America")
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
it "raises a ValidationsFailed if invalid" do
|
|
@@ -162,7 +162,7 @@ describe Braintree::Address do
|
|
|
162
162
|
it "deletes the address given a customer id and an address id" do
|
|
163
163
|
customer = Braintree::Customer.create!(:last_name => "Wilson")
|
|
164
164
|
address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
|
|
165
|
-
Braintree::Address.delete(customer.id, address.id).success
|
|
165
|
+
expect(Braintree::Address.delete(customer.id, address.id).success?).to eq(true)
|
|
166
166
|
expect do
|
|
167
167
|
Braintree::Address.find(customer.id, address.id)
|
|
168
168
|
end.to raise_error(Braintree::NotFoundError)
|
|
@@ -171,7 +171,7 @@ describe Braintree::Address do
|
|
|
171
171
|
it "deletes the address given a customer and an address id" do
|
|
172
172
|
customer = Braintree::Customer.create!(:last_name => "Wilson")
|
|
173
173
|
address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
|
|
174
|
-
Braintree::Address.delete(customer, address.id).success
|
|
174
|
+
expect(Braintree::Address.delete(customer, address.id).success?).to eq(true)
|
|
175
175
|
expect do
|
|
176
176
|
Braintree::Address.find(customer.id, address.id)
|
|
177
177
|
end.to raise_error(Braintree::NotFoundError)
|
|
@@ -182,13 +182,13 @@ describe Braintree::Address do
|
|
|
182
182
|
it "finds the address given a customer and an address id" do
|
|
183
183
|
customer = Braintree::Customer.create!(:last_name => "Wilson")
|
|
184
184
|
address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
|
|
185
|
-
Braintree::Address.find(customer, address.id).
|
|
185
|
+
expect(Braintree::Address.find(customer, address.id)).to eq(address)
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
it "finds the address given a customer id and an address id" do
|
|
189
189
|
customer = Braintree::Customer.create!(:last_name => "Wilson")
|
|
190
190
|
address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
|
|
191
|
-
Braintree::Address.find(customer.id, address.id).
|
|
191
|
+
expect(Braintree::Address.find(customer.id, address.id)).to eq(address)
|
|
192
192
|
end
|
|
193
193
|
|
|
194
194
|
it "raises a NotFoundError if it cannot be found because of customer id" do
|
|
@@ -242,16 +242,16 @@ describe Braintree::Address do
|
|
|
242
242
|
:postal_code => "60621",
|
|
243
243
|
:country_name => "United States of America",
|
|
244
244
|
)
|
|
245
|
-
result.success
|
|
246
|
-
result.address.street_address.
|
|
247
|
-
result.address.extended_address.
|
|
248
|
-
result.address.locality.
|
|
249
|
-
result.address.region.
|
|
250
|
-
result.address.postal_code.
|
|
251
|
-
result.address.country_name.
|
|
252
|
-
result.address.country_code_alpha2.
|
|
253
|
-
result.address.country_code_alpha3.
|
|
254
|
-
result.address.country_code_numeric.
|
|
245
|
+
expect(result.success?).to eq(true)
|
|
246
|
+
expect(result.address.street_address).to eq("123 E New St")
|
|
247
|
+
expect(result.address.extended_address).to eq("New Suite 3")
|
|
248
|
+
expect(result.address.locality).to eq("Chicago")
|
|
249
|
+
expect(result.address.region).to eq("Illinois")
|
|
250
|
+
expect(result.address.postal_code).to eq("60621")
|
|
251
|
+
expect(result.address.country_name).to eq("United States of America")
|
|
252
|
+
expect(result.address.country_code_alpha2).to eq("US")
|
|
253
|
+
expect(result.address.country_code_alpha3).to eq("USA")
|
|
254
|
+
expect(result.address.country_code_numeric).to eq("840")
|
|
255
255
|
end
|
|
256
256
|
|
|
257
257
|
it "accepts country_codes" do
|
|
@@ -266,11 +266,11 @@ describe Braintree::Address do
|
|
|
266
266
|
:country_name => "Azerbaijan",
|
|
267
267
|
)
|
|
268
268
|
|
|
269
|
-
result.success
|
|
270
|
-
result.address.country_name.
|
|
271
|
-
result.address.country_code_alpha2.
|
|
272
|
-
result.address.country_code_alpha3.
|
|
273
|
-
result.address.country_code_numeric.
|
|
269
|
+
expect(result.success?).to eq(true)
|
|
270
|
+
expect(result.address.country_name).to eq("Azerbaijan")
|
|
271
|
+
expect(result.address.country_code_alpha2).to eq("AZ")
|
|
272
|
+
expect(result.address.country_code_alpha3).to eq("AZE")
|
|
273
|
+
expect(result.address.country_code_numeric).to eq("031")
|
|
274
274
|
end
|
|
275
275
|
|
|
276
276
|
it "returns an error response if invalid" do
|
|
@@ -285,8 +285,8 @@ describe Braintree::Address do
|
|
|
285
285
|
:street_address => "123 E New St",
|
|
286
286
|
:country_name => "United States of Invalid",
|
|
287
287
|
)
|
|
288
|
-
result.success
|
|
289
|
-
result.errors.for(:address).on(:country_name)[0].message.
|
|
288
|
+
expect(result.success?).to eq(false)
|
|
289
|
+
expect(result.errors.for(:address).on(:country_name)[0].message).to eq("Country name is not an accepted country.")
|
|
290
290
|
end
|
|
291
291
|
end
|
|
292
292
|
|
|
@@ -320,13 +320,13 @@ describe Braintree::Address do
|
|
|
320
320
|
:postal_code => "60621",
|
|
321
321
|
:country_name => "United States of America",
|
|
322
322
|
)
|
|
323
|
-
updated_address.
|
|
324
|
-
updated_address.street_address.
|
|
325
|
-
updated_address.extended_address.
|
|
326
|
-
updated_address.locality.
|
|
327
|
-
updated_address.region.
|
|
328
|
-
updated_address.postal_code.
|
|
329
|
-
updated_address.country_name.
|
|
323
|
+
expect(updated_address).to eq(address)
|
|
324
|
+
expect(updated_address.street_address).to eq("123 E New St")
|
|
325
|
+
expect(updated_address.extended_address).to eq("New Suite 3")
|
|
326
|
+
expect(updated_address.locality).to eq("Chicago")
|
|
327
|
+
expect(updated_address.region).to eq("Illinois")
|
|
328
|
+
expect(updated_address.postal_code).to eq("60621")
|
|
329
|
+
expect(updated_address.country_name).to eq("United States of America")
|
|
330
330
|
end
|
|
331
331
|
|
|
332
332
|
it "raises a ValidationsFailed invalid" do
|
|
@@ -352,7 +352,7 @@ describe Braintree::Address do
|
|
|
352
352
|
customer = Braintree::Customer.create!(:last_name => "Wilson")
|
|
353
353
|
address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
|
|
354
354
|
result = Braintree::Address.delete(customer.id, address.id)
|
|
355
|
-
result.success
|
|
355
|
+
expect(result.success?).to eq(true)
|
|
356
356
|
expect do
|
|
357
357
|
Braintree::Address.find(customer.id, address.id)
|
|
358
358
|
end.to raise_error(Braintree::NotFoundError)
|