braintree 2.103.0 → 3.2.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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/braintree.gemspec +6 -3
  4. data/lib/braintree.rb +5 -17
  5. data/lib/braintree/address.rb +0 -22
  6. data/lib/braintree/base_module.rb +6 -0
  7. data/lib/braintree/bin_data.rb +9 -2
  8. data/lib/braintree/configuration.rb +1 -1
  9. data/lib/braintree/credit_card.rb +0 -75
  10. data/lib/braintree/credit_card_gateway.rb +4 -33
  11. data/lib/braintree/credit_card_verification.rb +13 -0
  12. data/lib/braintree/customer.rb +3 -72
  13. data/lib/braintree/customer_gateway.rb +0 -23
  14. data/lib/braintree/dispute.rb +1 -7
  15. data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
  16. data/lib/braintree/dispute/transaction.rb +1 -0
  17. data/lib/braintree/dispute_gateway.rb +2 -7
  18. data/lib/braintree/error_codes.rb +144 -170
  19. data/lib/braintree/exceptions.rb +5 -3
  20. data/lib/braintree/gateway.rb +0 -14
  21. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +1 -1
  22. data/lib/braintree/local_payment_completed.rb +1 -1
  23. data/lib/braintree/merchant_account_gateway.rb +2 -0
  24. data/lib/braintree/payment_instrument_type.rb +1 -4
  25. data/lib/braintree/payment_method_gateway.rb +5 -9
  26. data/lib/braintree/payment_method_parser.rb +1 -7
  27. data/lib/braintree/resource_collection.rb +8 -3
  28. data/lib/braintree/subscription.rb +5 -5
  29. data/lib/braintree/successful_result.rb +0 -1
  30. data/lib/braintree/test/credit_card.rb +1 -0
  31. data/lib/braintree/test/nonce.rb +4 -20
  32. data/lib/braintree/transaction.rb +12 -74
  33. data/lib/braintree/transaction/disbursement_details.rb +1 -0
  34. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
  35. data/lib/braintree/transaction/installment.rb +28 -0
  36. data/lib/braintree/transaction/installment/adjustment.rb +33 -0
  37. data/lib/braintree/transaction/paypal_details.rb +3 -0
  38. data/lib/braintree/transaction/subscription_details.rb +2 -0
  39. data/lib/braintree/transaction_gateway.rb +14 -20
  40. data/lib/braintree/transaction_search.rb +0 -1
  41. data/lib/braintree/util.rb +17 -2
  42. data/lib/braintree/version.rb +2 -2
  43. data/lib/braintree/webhook_notification.rb +0 -10
  44. data/lib/braintree/webhook_testing_gateway.rb +0 -43
  45. data/lib/braintree/xml/libxml.rb +1 -0
  46. data/lib/braintree/xml/parser.rb +11 -34
  47. data/spec/integration/braintree/address_spec.rb +2 -89
  48. data/spec/integration/braintree/client_api/spec_helper.rb +0 -26
  49. data/spec/integration/braintree/credit_card_spec.rb +6 -471
  50. data/spec/integration/braintree/customer_spec.rb +189 -362
  51. data/spec/integration/braintree/dispute_search_spec.rb +3 -3
  52. data/spec/integration/braintree/dispute_spec.rb +1 -2
  53. data/spec/integration/braintree/merchant_spec.rb +2 -2
  54. data/spec/integration/braintree/payment_method_spec.rb +254 -120
  55. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +8 -4
  56. data/spec/integration/braintree/paypal_account_spec.rb +1 -1
  57. data/spec/integration/braintree/subscription_spec.rb +11 -16
  58. data/spec/integration/braintree/transaction_search_spec.rb +3 -3
  59. data/spec/integration/braintree/transaction_spec.rb +300 -534
  60. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +12 -6
  61. data/spec/integration/spec_helper.rb +1 -4
  62. data/spec/spec_helper.rb +2 -11
  63. data/spec/unit/braintree/address_spec.rb +0 -8
  64. data/spec/unit/braintree/credit_card_spec.rb +3 -22
  65. data/spec/unit/braintree/customer_spec.rb +2 -13
  66. data/spec/unit/braintree/dispute_spec.rb +3 -12
  67. data/spec/unit/braintree/http_spec.rb +3 -3
  68. data/spec/unit/braintree/local_payment_completed_spec.rb +14 -0
  69. data/spec/unit/braintree/resource_collection_spec.rb +29 -0
  70. data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
  71. data/spec/unit/braintree/transaction/paypal_details_spec.rb +59 -0
  72. data/spec/unit/braintree/transaction_spec.rb +1 -35
  73. data/spec/unit/braintree/util_spec.rb +37 -3
  74. data/spec/unit/braintree/webhook_notification_spec.rb +1 -1
  75. data/spec/unit/braintree/xml/parser_spec.rb +21 -16
  76. metadata +30 -30
  77. data/lib/braintree/amex_express_checkout_card.rb +0 -38
  78. data/lib/braintree/coinbase_account.rb +0 -34
  79. data/lib/braintree/europe_bank_account.rb +0 -36
  80. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  81. data/lib/braintree/ideal_payment.rb +0 -61
  82. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  83. data/lib/braintree/masterpass_card.rb +0 -81
  84. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  85. data/lib/braintree/transaction/coinbase_details.rb +0 -16
  86. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  87. data/lib/braintree/transaction/masterpass_card_details.rb +0 -47
  88. data/lib/braintree/transparent_redirect.rb +0 -40
  89. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  90. data/lib/braintree/xml/rexml.rb +0 -71
  91. data/spec/hacks/tcp_socket.rb +0 -18
  92. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  93. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  94. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  95. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
  96. data/spec/unit/braintree/xml/rexml_spec.rb +0 -51
@@ -8,9 +8,7 @@ module Braintree # :nodoc:
8
8
 
9
9
  class ConfigurationError < BraintreeError; end
10
10
 
11
- class DownForMaintenanceError < BraintreeError; end
12
-
13
- class ForgedQueryString < BraintreeError; end
11
+ class GatewayTimeoutError < BraintreeError; end
14
12
 
15
13
  class InvalidSignature < BraintreeError; end
16
14
 
@@ -18,8 +16,12 @@ module Braintree # :nodoc:
18
16
 
19
17
  class NotFoundError < BraintreeError; end
20
18
 
19
+ class RequestTimeoutError < BraintreeError; end
20
+
21
21
  class ServerError < BraintreeError; end
22
22
 
23
+ class ServiceUnavailableError < BraintreeError; end
24
+
23
25
  class SSLCertificateError < BraintreeError; end
24
26
 
25
27
  class TooManyRequestsError < BraintreeError; end
@@ -74,12 +74,6 @@ module Braintree
74
74
  UsBankAccountGateway.new(self)
75
75
  end
76
76
 
77
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
78
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
79
- def ideal_payment
80
- IdealPaymentGateway.new(self)
81
- end
82
-
83
77
  def merchant
84
78
  MerchantGateway.new(self)
85
79
  end
@@ -88,10 +82,6 @@ module Braintree
88
82
  MerchantAccountGateway.new(self)
89
83
  end
90
84
 
91
- def europe_bank_account
92
- EuropeBankAccountGateway.new(self)
93
- end
94
-
95
85
  def settlement_batch_summary
96
86
  SettlementBatchSummaryGateway.new(self)
97
87
  end
@@ -100,10 +90,6 @@ module Braintree
100
90
  SubscriptionGateway.new(self)
101
91
  end
102
92
 
103
- def transparent_redirect
104
- TransparentRedirectGateway.new(self)
105
- end
106
-
107
93
  def transaction
108
94
  TransactionGateway.new(self)
109
95
  end
@@ -1,5 +1,5 @@
1
1
  module Braintree
2
- class AndroidPayCard
2
+ class GooglePayCard
3
3
  include BaseModule # :nodoc:
4
4
 
5
5
  attr_reader :bin
@@ -9,7 +9,7 @@ module Braintree
9
9
 
10
10
  def initialize(attributes) # :nodoc:
11
11
  set_instance_variables_from_hash(attributes)
12
- @transaction = Transaction._new(Configuration.gateway, transaction)
12
+ @transaction = Transaction._new(Configuration.gateway, transaction) unless transaction.nil?
13
13
  end
14
14
 
15
15
  class << self
@@ -83,6 +83,7 @@ module Braintree
83
83
  end
84
84
  end
85
85
 
86
+ # this is part of Marketplace and shouldn't be removed unless we're removing all Marketplace code
86
87
  def self._detect_signature(attributes)
87
88
  if attributes.has_key?(:applicant_details)
88
89
  warn "[DEPRECATED] Passing :applicant_details to create is deprecated. Please use :individual, :business, and :funding."
@@ -92,6 +93,7 @@ module Braintree
92
93
  end
93
94
  end
94
95
 
96
+ # this is part of Marketplace and shouldn't be removed unless we're removing all Marketplace code
95
97
  def self._deprecated_create_signature # :nodoc:
96
98
  [
97
99
  {:applicant_details => [
@@ -1,15 +1,12 @@
1
1
  module Braintree
2
2
  module PaymentInstrumentType
3
3
  PayPalAccount = 'paypal_account'
4
- EuropeBankAccount = 'europe_bank_account'
5
4
  CreditCard = 'credit_card'
6
- CoinbaseAccount = 'coinbase_account'
7
5
  ApplePayCard = 'apple_pay_card'
8
- AndroidPayCard = 'android_pay_card'
6
+ GooglePayCard = 'android_pay_card'
9
7
  VenmoAccount = 'venmo_account'
10
8
  UsBankAccount = 'us_bank_account'
11
9
  VisaCheckoutCard = 'visa_checkout_card'
12
- MasterpassCard = 'masterpass_card'
13
10
  SamsungPayCard = 'samsung_pay_card'
14
11
  LocalPayment = 'local_payment'
15
12
  PayPalHere = 'paypal_here'
@@ -19,7 +19,6 @@ module Braintree
19
19
 
20
20
  def _do_create(path, params=nil) # :nodoc:
21
21
  response = @config.http.post("#{@config.base_merchant_path}#{path}", params)
22
-
23
22
  if response[:api_error_response]
24
23
  ErrorResult.new(@gateway, response[:api_error_response])
25
24
  elsif response
@@ -43,16 +42,12 @@ module Braintree
43
42
  CreditCard._new(@gateway, response[:credit_card])
44
43
  elsif response.has_key?(:paypal_account)
45
44
  PayPalAccount._new(@gateway, response[:paypal_account])
46
- elsif response[:coinbase_account]
47
- SuccessfulResult.new(:payment_method => CoinbaseAccount._new(@gateway, response[:coinbase_account]))
48
45
  elsif response.has_key?(:us_bank_account)
49
46
  UsBankAccount._new(@gateway, response[:us_bank_account])
50
- elsif response.has_key?(:europe_bank_account)
51
- EuropeBankAccount._new(@gateway, response[:europe_bank_account])
52
47
  elsif response.has_key?(:apple_pay_card)
53
48
  ApplePayCard._new(@gateway, response[:apple_pay_card])
54
49
  elsif response.has_key?(:android_pay_card)
55
- AndroidPayCard._new(@gateway, response[:android_pay_card])
50
+ GooglePayCard._new(@gateway, response[:android_pay_card])
56
51
  elsif response.has_key?(:venmo_account)
57
52
  VenmoAccount._new(@gateway, response[:venmo_account])
58
53
  else
@@ -156,6 +151,7 @@ module Braintree
156
151
  :make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session,
157
152
  :verification_amount, :us_bank_account_verification_method,
158
153
  :verification_account_type,
154
+ :verification_currency_iso_code,
159
155
  :paypal => [
160
156
  :payee_email,
161
157
  :order_id,
@@ -166,9 +162,9 @@ module Braintree
166
162
  ],
167
163
  ]
168
164
  signature = [
169
- :billing_address_id, :cardholder_name, :cvv, :device_session_id, :expiration_date,
170
- :expiration_month, :expiration_year, :number, :token, :venmo_sdk_payment_method_code,
171
- :device_data, :fraud_merchant_id, :payment_method_nonce,
165
+ :billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
166
+ :expiration_year, :number, :token, :venmo_sdk_payment_method_code, :device_data,
167
+ :payment_method_nonce,
172
168
  {:options => options},
173
169
  {:billing_address => billing_address_params}
174
170
  ]
@@ -6,22 +6,16 @@ module Braintree
6
6
  CreditCard._new(gateway, attributes[:credit_card])
7
7
  elsif attributes[:paypal_account]
8
8
  PayPalAccount._new(gateway, attributes[:paypal_account])
9
- elsif attributes[:coinbase_account]
10
- CoinbaseAccount._new(gateway, attributes[:coinbase_account])
11
9
  elsif attributes[:us_bank_account]
12
10
  UsBankAccount._new(gateway, attributes[:us_bank_account])
13
11
  elsif attributes[:apple_pay_card]
14
12
  ApplePayCard._new(gateway, attributes[:apple_pay_card])
15
13
  elsif attributes[:android_pay_card]
16
- AndroidPayCard._new(gateway, attributes[:android_pay_card])
17
- elsif attributes[:amex_express_checkout_card]
18
- AmexExpressCheckoutCard._new(gateway, attributes[:amex_express_checkout_card])
14
+ GooglePayCard._new(gateway, attributes[:android_pay_card])
19
15
  elsif attributes[:venmo_account]
20
16
  VenmoAccount._new(gateway, attributes[:venmo_account])
21
17
  elsif attributes[:visa_checkout_card]
22
18
  VisaCheckoutCard._new(gateway, attributes[:visa_checkout_card])
23
- elsif attributes[:masterpass_card]
24
- MasterpassCard._new(gateway, attributes[:masterpass_card])
25
19
  elsif attributes[:samsung_pay_card]
26
20
  SamsungPayCard._new(gateway, attributes[:samsung_pay_card])
27
21
  else
@@ -22,9 +22,14 @@ module Braintree
22
22
  @ids.empty?
23
23
  end
24
24
 
25
- # Returns the first item in the collection or nil if the collection is empty
26
- def first
27
- @paging_block.call([@ids.first]).first
25
+ # Returns the first or the first N items in the collection or nil if the collection is empty
26
+ def first(amount = 1)
27
+ return nil if @ids.empty?
28
+ return @paging_block.call([@ids.first]).first if amount == 1
29
+
30
+ @ids.first(amount).each_slice(@page_size).flat_map do |page_of_ids|
31
+ @paging_block.call(page_of_ids)
32
+ end
28
33
  end
29
34
 
30
35
  # Only the maximum size of a resource collection can be determined since the data on the server can change while
@@ -101,11 +101,11 @@ module Braintree
101
101
  add_ons.map! { |attrs| AddOn._new(attrs) }
102
102
  discounts.map! { |attrs| Discount._new(attrs) }
103
103
  @status_history = attributes[:status_history] ? attributes[:status_history].map { |s| StatusDetails.new(s) } : []
104
- end
105
-
106
- def next_bill_amount
107
- warn "[DEPRECATED] Subscription.next_bill_amount is deprecated. Please use Subscription.next_billing_period_amount"
108
- @next_bill_amount
104
+ @first_billing_date = Date.parse(first_billing_date) unless first_billing_date.nil?
105
+ @next_billing_date = Date.parse(next_billing_date) unless next_billing_date.nil?
106
+ @billing_period_start_date = Date.parse(billing_period_start_date) unless billing_period_start_date.nil?
107
+ @billing_period_end_date = Date.parse(billing_period_end_date) unless billing_period_end_date.nil?
108
+ @paid_through_date = Date.parse(paid_through_date) unless paid_through_date.nil?
109
109
  end
110
110
 
111
111
  def never_expires?
@@ -13,7 +13,6 @@ module Braintree
13
13
  attr_reader :merchant
14
14
  attr_reader :merchant_account
15
15
  attr_reader :merchant_accounts
16
- attr_reader :new_transaction
17
16
  attr_reader :payment_method
18
17
  attr_reader :payment_method_nonce
19
18
  attr_reader :paypal_account
@@ -36,6 +36,7 @@ module Braintree
36
36
  Hipercard = "6062820524845321"
37
37
 
38
38
  Visa = "4012888888881881"
39
+ VisaCountryOfIssuanceIE = "4023490000000008"
39
40
  VisaInternational = "4009348888881881" # :nodoc:
40
41
  VisaPrepaid = "4500600000000061"
41
42
 
@@ -12,12 +12,10 @@ module Braintree
12
12
  ApplePayAmEx = "fake-apple-pay-amex-nonce"
13
13
  AbstractTransactable = "fake-abstract-transactable-nonce"
14
14
  Europe = "fake-europe-bank-account-nonce"
15
- Coinbase = "fake-coinbase-nonce"
16
- AndroidPayDiscover = "fake-android-pay-discover-nonce"
17
- AndroidPayVisa = "fake-android-pay-visa-nonce"
18
- AndroidPayMasterCard = "fake-android-pay-mastercard-nonce"
19
- AndroidPayAmEx = "fake-android-pay-amex-nonce"
20
- AmexExpressCheckout = "fake-amex-express-checkout-nonce"
15
+ GooglePayDiscover = "fake-android-pay-discover-nonce"
16
+ GooglePayVisa = "fake-android-pay-visa-nonce"
17
+ GooglePayMasterCard = "fake-android-pay-mastercard-nonce"
18
+ GooglePayAmEx = "fake-android-pay-amex-nonce"
21
19
  VenmoAccount = "fake-venmo-account-nonce"
22
20
  VenmoAccountTokenIssuanceError = "fake-token-issuance-error-venmo-account-nonce"
23
21
  ThreeDSecureVisaFullAuthentication = "fake-three-d-secure-visa-full-authentication-nonce"
@@ -60,13 +58,8 @@ module Braintree
60
58
  ProcessorFailureJCB = "fake-processor-failure-jcb-nonce"
61
59
  LuhnInvalid = "fake-luhn-invalid-nonce"
62
60
  PayPalFuturePaymentRefreshToken = "fake-paypal-future-refresh-token-nonce"
63
- SEPA = "fake-sepa-bank-account-nonce"
64
61
  GatewayRejectedFraud = "fake-gateway-rejected-fraud-nonce"
65
62
  GatewayRejectedRiskThresholds = "fake-gateway-rejected-risk-thresholds-nonce"
66
- MasterpassAmEx = "fake-masterpass-amex-nonce"
67
- MasterpassDiscover = "fake-masterpass-discover-nonce"
68
- MasterpassMasterCard = "fake-masterpass-mastercard-nonce"
69
- MasterpassVisa = "fake-masterpass-visa-nonce"
70
63
  VisaCheckoutAmEx = "fake-visa-checkout-amex-nonce"
71
64
  VisaCheckoutDiscover = "fake-visa-checkout-discover-nonce"
72
65
  VisaCheckoutMasterCard = "fake-visa-checkout-mastercard-nonce"
@@ -75,15 +68,6 @@ module Braintree
75
68
  SamsungPayDiscover = "tokensam_fake_discover"
76
69
  SamsungPayMasterCard = "tokensam_fake_mastercard"
77
70
  SamsungPayVisa = "tokensam_fake_visa"
78
-
79
- def self.const_missing(const_name)
80
- if const_name == :AndroidPay
81
- warn "[DEPRECATED] Braintree::Test::Nonce::AndroidPay is deprecated. Use a card-specific nonce, e.g. Braintree::Test::Nonce::AndroidPayMasterCard"
82
- "fake-android-pay-nonce"
83
- else
84
- super
85
- end
86
- end
87
71
  end
88
72
  end
89
73
  end
@@ -90,11 +90,10 @@ module Braintree
90
90
  end
91
91
  end
92
92
 
93
+ attr_reader :acquirer_reference_number
93
94
  attr_reader :add_ons
94
95
  attr_reader :additional_processor_response # The raw response from the processor.
95
- attr_reader :amex_express_checkout_details
96
96
  attr_reader :amount
97
- attr_reader :android_pay_details
98
97
  attr_reader :apple_pay_details
99
98
  attr_reader :authorization_adjustments
100
99
  attr_reader :authorization_expires_at
@@ -104,7 +103,6 @@ module Braintree
104
103
  attr_reader :avs_street_address_response_code
105
104
  attr_reader :billing_details
106
105
  attr_reader :channel
107
- attr_reader :coinbase_details
108
106
  attr_reader :created_at
109
107
  attr_reader :credit_card_details
110
108
  attr_reader :currency_iso_code
@@ -120,13 +118,12 @@ module Braintree
120
118
  attr_reader :facilitated_details
121
119
  attr_reader :facilitator_details
122
120
  attr_reader :gateway_rejection_reason
121
+ attr_reader :google_pay_details
123
122
  attr_reader :graphql_id
124
123
  attr_reader :id
125
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
126
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
127
- attr_reader :ideal_payment_details
124
+ attr_reader :installment_count
125
+ attr_reader :installments
128
126
  attr_reader :local_payment_details
129
- attr_reader :masterpass_card_details
130
127
  attr_reader :merchant_account_id
131
128
  attr_reader :network_response_code # Response code from the card network
132
129
  attr_reader :network_response_text # Response text from the card network
@@ -148,8 +145,11 @@ module Braintree
148
145
  attr_reader :recurring
149
146
  attr_reader :refund_ids
150
147
  attr_reader :refunded_transaction_id
148
+ attr_reader :refunded_installments
149
+ attr_reader :retrieval_reference_number
151
150
  attr_reader :risk_data
152
151
  attr_reader :samsung_pay_card_details
152
+ attr_reader :sca_exemption_requested
153
153
  attr_reader :service_fee_amount
154
154
  attr_reader :settlement_batch_id
155
155
  attr_reader :shipping_amount
@@ -168,7 +168,6 @@ module Braintree
168
168
  attr_reader :venmo_account_details
169
169
  attr_reader :visa_checkout_card_details
170
170
  attr_reader :voice_referral_number
171
- attr_reader :retrieval_reference_number
172
171
 
173
172
  def self.create(*args)
174
173
  Configuration.gateway.transaction.create(*args)
@@ -194,18 +193,6 @@ module Braintree
194
193
  Configuration.gateway.transaction.clone_transaction!(*args)
195
194
  end
196
195
 
197
- # Deprecated. Use Braintree::TransparentRedirect.confirm
198
- def self.create_from_transparent_redirect(*args)
199
- warn "[DEPRECATED] Transaction.create_from_transparent_redirect is deprecated. Please use TransparentRedirect.confirm"
200
- Configuration.gateway.transaction.create_from_transparent_redirect(*args)
201
- end
202
-
203
- # Deprecated. Use Braintree::TransparentRedirect.url
204
- def self.create_transaction_url
205
- warn "[DEPRECATED] Transaction.create_transaction_url is deprecated. Please use TransparentRedirect.url"
206
- Configuration.gateway.transaction.create_transaction_url
207
- end
208
-
209
196
  def self.credit(*args)
210
197
  Configuration.gateway.transaction.credit(*args)
211
198
  end
@@ -308,10 +295,8 @@ module Braintree
308
295
  @paypal_details = PayPalDetails.new(@paypal)
309
296
  @paypal_here_details = PayPalHereDetails.new(@paypal_here)
310
297
  @apple_pay_details = ApplePayDetails.new(@apple_pay)
311
- @android_pay_details = AndroidPayDetails.new(@android_pay_card)
312
- @amex_express_checkout_details = AmexExpressCheckoutDetails.new(@amex_express_checkout_card)
298
+ @google_pay_details = GooglePayDetails.new(@google_pay_card)
313
299
  @venmo_account_details = VenmoAccountDetails.new(@venmo_account)
314
- @coinbase_details = CoinbaseDetails.new(@coinbase_account)
315
300
  disputes.map! { |attrs| Dispute._new(attrs) } if disputes
316
301
  @custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
317
302
  add_ons.map! { |attrs| AddOn._new(attrs) } if add_ons
@@ -322,11 +307,13 @@ module Braintree
322
307
  @facilitator_details = FacilitatorDetails.new(attributes[:facilitator_details]) if attributes[:facilitator_details]
323
308
  @three_d_secure_info = ThreeDSecureInfo.new(attributes[:three_d_secure_info]) if attributes[:three_d_secure_info]
324
309
  @us_bank_account_details = UsBankAccountDetails.new(attributes[:us_bank_account]) if attributes[:us_bank_account]
325
- @ideal_payment_details = IdealPaymentDetails.new(attributes[:ideal_payment]) if attributes[:ideal_payment]
326
310
  @visa_checkout_card_details = VisaCheckoutCardDetails.new(attributes[:visa_checkout_card])
327
- @masterpass_card_details = MasterpassCardDetails.new(attributes[:masterpass_card])
328
311
  @samsung_pay_card_details = SamsungPayCardDetails.new(attributes[:samsung_pay_card])
312
+ @sca_exemption_requested = attributes[:sca_exemption_requested]
329
313
  authorization_adjustments.map! { |attrs| AuthorizationAdjustment._new(attrs) } if authorization_adjustments
314
+
315
+ installments.map! { |attrs| Installment.new(attrs) } if installments
316
+ refunded_installments.map! { |attrs| Installment.new(attrs) } if refunded_installments
330
317
  end
331
318
 
332
319
  def inspect # :nodoc:
@@ -346,18 +333,6 @@ module Braintree
346
333
  @gateway.transaction_line_item.find_all(id)
347
334
  end
348
335
 
349
- # Deprecated. Use Braintree::Transaction.refund
350
- def refund(amount = nil)
351
- warn "[DEPRECATED] refund as an instance method is deprecated. Please use Transaction.refund"
352
- result = @gateway.transaction.refund(id, amount)
353
-
354
- if result.success?
355
- SuccessfulResult.new(:new_transaction => result.transaction)
356
- else
357
- result
358
- end
359
- end
360
-
361
336
  # Returns true if the transaction has been refunded. False otherwise.
362
337
  def refunded?
363
338
  !@refund_id.nil?
@@ -368,27 +343,6 @@ module Braintree
368
343
  @disbursement_details.valid?
369
344
  end
370
345
 
371
- def refund_id
372
- warn "[DEPRECATED] Transaction.refund_id is deprecated. Please use Transaction.refund_ids"
373
- @refund_id
374
- end
375
-
376
- # Deprecated. Use Braintree::Transaction.submit_for_settlement
377
- def submit_for_settlement(amount = nil)
378
- warn "[DEPRECATED] submit_for_settlement as an instance method is deprecated. Please use Transaction.submit_for_settlement"
379
- result = @gateway.transaction.submit_for_settlement(id, amount)
380
- if result.success?
381
- copy_instance_variables_from_object result.transaction
382
- end
383
- result
384
- end
385
-
386
- # Deprecated. Use Braintree::Transaction.submit_for_settlement!
387
- def submit_for_settlement!(amount = nil)
388
- warn "[DEPRECATED] submit_for_settlement! as an instance method is deprecated. Please use Transaction.submit_for_settlement!"
389
- return_object_or_raise(:transaction) { submit_for_settlement(amount) }
390
- end
391
-
392
346
  # If this transaction was stored in the vault, or created from vault records,
393
347
  # vault_billing_address will return the associated Braintree::Address. Because the
394
348
  # vault billing address can be updated after the transaction was created, the attributes
@@ -425,22 +379,6 @@ module Braintree
425
379
  @gateway.address.find(customer_details.id, shipping_details.id)
426
380
  end
427
381
 
428
- # Deprecated. Use Braintree::Transaction.void
429
- def void
430
- warn "[DEPRECATED] void as an instance method is deprecated. Please use Transaction.void"
431
- result = @gateway.transaction.void(id)
432
- if result.success?
433
- copy_instance_variables_from_object result.transaction
434
- end
435
- result
436
- end
437
-
438
- # Deprecated. Use Braintree::Transaction.void!
439
- def void!
440
- warn "[DEPRECATED] void! as an instance method is deprecated. Please use Transaction.void!"
441
- return_object_or_raise(:transaction) { void }
442
- end
443
-
444
382
  def processed_with_network_token?
445
383
  @processed_with_network_token
446
384
  end