braintree 2.104.0 → 3.3.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 (99) 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 -74
  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_gateway.rb +2 -7
  17. data/lib/braintree/error_codes.rb +144 -170
  18. data/lib/braintree/exceptions.rb +5 -3
  19. data/lib/braintree/gateway.rb +0 -14
  20. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +1 -2
  21. data/lib/braintree/local_payment_completed.rb +1 -1
  22. data/lib/braintree/merchant_account_gateway.rb +2 -0
  23. data/lib/braintree/payment_instrument_type.rb +1 -5
  24. data/lib/braintree/payment_method_gateway.rb +5 -10
  25. data/lib/braintree/payment_method_parser.rb +1 -8
  26. data/lib/braintree/resource_collection.rb +8 -3
  27. data/lib/braintree/risk_data.rb +3 -1
  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 -23
  32. data/lib/braintree/three_d_secure_info.rb +22 -12
  33. data/lib/braintree/transaction.rb +12 -80
  34. data/lib/braintree/transaction/disbursement_details.rb +1 -0
  35. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
  36. data/lib/braintree/transaction/installment.rb +28 -0
  37. data/lib/braintree/transaction/installment/adjustment.rb +33 -0
  38. data/lib/braintree/transaction/paypal_details.rb +1 -0
  39. data/lib/braintree/transaction/subscription_details.rb +2 -0
  40. data/lib/braintree/transaction_gateway.rb +14 -21
  41. data/lib/braintree/transaction_search.rb +0 -1
  42. data/lib/braintree/util.rb +17 -2
  43. data/lib/braintree/version.rb +2 -2
  44. data/lib/braintree/webhook_notification.rb +0 -10
  45. data/lib/braintree/webhook_testing_gateway.rb +0 -43
  46. data/lib/braintree/xml/libxml.rb +1 -0
  47. data/lib/braintree/xml/parser.rb +11 -34
  48. data/spec/integration/braintree/address_spec.rb +2 -89
  49. data/spec/integration/braintree/client_api/spec_helper.rb +0 -26
  50. data/spec/integration/braintree/credit_card_spec.rb +13 -476
  51. data/spec/integration/braintree/customer_spec.rb +189 -362
  52. data/spec/integration/braintree/dispute_search_spec.rb +3 -3
  53. data/spec/integration/braintree/dispute_spec.rb +1 -2
  54. data/spec/integration/braintree/merchant_spec.rb +2 -2
  55. data/spec/integration/braintree/payment_method_spec.rb +254 -120
  56. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +8 -4
  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 +324 -550
  60. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +12 -6
  61. data/spec/integration/spec_helper.rb +8 -5
  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/credit_card_verification_spec.rb +6 -2
  66. data/spec/unit/braintree/customer_spec.rb +2 -13
  67. data/spec/unit/braintree/dispute_spec.rb +1 -12
  68. data/spec/unit/braintree/http_spec.rb +3 -3
  69. data/spec/unit/braintree/local_payment_completed_spec.rb +14 -0
  70. data/spec/unit/braintree/resource_collection_spec.rb +29 -0
  71. data/spec/unit/braintree/risk_data_spec.rb +9 -5
  72. data/spec/unit/braintree/three_d_secure_info_spec.rb +32 -14
  73. data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
  74. data/spec/unit/braintree/transaction/paypal_details_spec.rb +2 -0
  75. data/spec/unit/braintree/transaction_spec.rb +1 -35
  76. data/spec/unit/braintree/util_spec.rb +37 -3
  77. data/spec/unit/braintree/webhook_notification_spec.rb +1 -1
  78. data/spec/unit/braintree/xml/parser_spec.rb +21 -16
  79. metadata +29 -30
  80. data/lib/braintree/amex_express_checkout_card.rb +0 -40
  81. data/lib/braintree/coinbase_account.rb +0 -34
  82. data/lib/braintree/europe_bank_account.rb +0 -36
  83. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  84. data/lib/braintree/ideal_payment.rb +0 -61
  85. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  86. data/lib/braintree/masterpass_card.rb +0 -83
  87. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  88. data/lib/braintree/transaction/coinbase_details.rb +0 -16
  89. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  90. data/lib/braintree/transaction/masterpass_card_details.rb +0 -49
  91. data/lib/braintree/transparent_redirect.rb +0 -40
  92. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  93. data/lib/braintree/xml/rexml.rb +0 -71
  94. data/spec/hacks/tcp_socket.rb +0 -18
  95. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  96. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  97. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  98. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
  99. 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,6 +1,5 @@
1
1
  module Braintree
2
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
3
- class AndroidPayCard
2
+ class GooglePayCard
4
3
  include BaseModule # :nodoc:
5
4
 
6
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,16 +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
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
9
- AndroidPayCard = 'android_pay_card'
6
+ GooglePayCard = 'android_pay_card'
10
7
  VenmoAccount = 'venmo_account'
11
8
  UsBankAccount = 'us_bank_account'
12
9
  VisaCheckoutCard = 'visa_checkout_card'
13
- MasterpassCard = 'masterpass_card' # Deprecated
14
10
  SamsungPayCard = 'samsung_pay_card'
15
11
  LocalPayment = 'local_payment'
16
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,17 +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
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
56
- AndroidPayCard._new(@gateway, response[:android_pay_card])
50
+ GooglePayCard._new(@gateway, response[:android_pay_card])
57
51
  elsif response.has_key?(:venmo_account)
58
52
  VenmoAccount._new(@gateway, response[:venmo_account])
59
53
  else
@@ -157,6 +151,7 @@ module Braintree
157
151
  :make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session,
158
152
  :verification_amount, :us_bank_account_verification_method,
159
153
  :verification_account_type,
154
+ :verification_currency_iso_code,
160
155
  :paypal => [
161
156
  :payee_email,
162
157
  :order_id,
@@ -167,9 +162,9 @@ module Braintree
167
162
  ],
168
163
  ]
169
164
  signature = [
170
- :billing_address_id, :cardholder_name, :cvv, :device_session_id, :expiration_date,
171
- :expiration_month, :expiration_year, :number, :token, :venmo_sdk_payment_method_code,
172
- :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,
173
168
  {:options => options},
174
169
  {:billing_address => billing_address_params}
175
170
  ]
@@ -6,23 +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
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
17
- AndroidPayCard._new(gateway, attributes[:android_pay_card])
18
- elsif attributes[:amex_express_checkout_card]
19
- AmexExpressCheckoutCard._new(gateway, attributes[:amex_express_checkout_card])
14
+ GooglePayCard._new(gateway, attributes[:android_pay_card])
20
15
  elsif attributes[:venmo_account]
21
16
  VenmoAccount._new(gateway, attributes[:venmo_account])
22
17
  elsif attributes[:visa_checkout_card]
23
18
  VisaCheckoutCard._new(gateway, attributes[:visa_checkout_card])
24
- elsif attributes[:masterpass_card]
25
- MasterpassCard._new(gateway, attributes[:masterpass_card])
26
19
  elsif attributes[:samsung_pay_card]
27
20
  SamsungPayCard._new(gateway, attributes[:samsung_pay_card])
28
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
@@ -6,16 +6,18 @@ module Braintree
6
6
  attr_reader :customer_location_zip
7
7
  attr_reader :customer_tenure
8
8
  attr_reader :decision
9
+ attr_reader :decision_reasons
9
10
  attr_reader :device_data_captured
10
11
  attr_reader :fraud_service_provider
11
12
  attr_reader :id
13
+ attr_reader :transaction_risk_score
12
14
 
13
15
  def initialize(attributes)
14
16
  set_instance_variables_from_hash attributes unless attributes.nil?
15
17
  end
16
18
 
17
19
  def inspect
18
- attr_order = [:id, :decision, :device_data_captured, :fraud_service_provider]
20
+ attr_order = [:id, :decision, :decision_reasons, :device_data_captured, :fraud_service_provider, :transaction_risk_score]
19
21
  formatted_attrs = attr_order.map do |attr|
20
22
  "#{attr}: #{send(attr).inspect}"
21
23
  end
@@ -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,14 +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
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
17
- AndroidPayDiscover = "fake-android-pay-discover-nonce"
18
- AndroidPayVisa = "fake-android-pay-visa-nonce"
19
- AndroidPayMasterCard = "fake-android-pay-mastercard-nonce"
20
- AndroidPayAmEx = "fake-android-pay-amex-nonce"
21
- # NEXT_MAJOR_VERSION Remove AmexExpressCheckout test nonces
22
- 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"
23
19
  VenmoAccount = "fake-venmo-account-nonce"
24
20
  VenmoAccountTokenIssuanceError = "fake-token-issuance-error-venmo-account-nonce"
25
21
  ThreeDSecureVisaFullAuthentication = "fake-three-d-secure-visa-full-authentication-nonce"
@@ -62,14 +58,8 @@ module Braintree
62
58
  ProcessorFailureJCB = "fake-processor-failure-jcb-nonce"
63
59
  LuhnInvalid = "fake-luhn-invalid-nonce"
64
60
  PayPalFuturePaymentRefreshToken = "fake-paypal-future-refresh-token-nonce"
65
- SEPA = "fake-sepa-bank-account-nonce"
66
61
  GatewayRejectedFraud = "fake-gateway-rejected-fraud-nonce"
67
62
  GatewayRejectedRiskThresholds = "fake-gateway-rejected-risk-thresholds-nonce"
68
- # NEXT_MAJOR_VERSION Remove Masterpass test nonces
69
- MasterpassAmEx = "fake-masterpass-amex-nonce"
70
- MasterpassDiscover = "fake-masterpass-discover-nonce"
71
- MasterpassMasterCard = "fake-masterpass-mastercard-nonce"
72
- MasterpassVisa = "fake-masterpass-visa-nonce"
73
63
  VisaCheckoutAmEx = "fake-visa-checkout-amex-nonce"
74
64
  VisaCheckoutDiscover = "fake-visa-checkout-discover-nonce"
75
65
  VisaCheckoutMasterCard = "fake-visa-checkout-mastercard-nonce"
@@ -78,15 +68,6 @@ module Braintree
78
68
  SamsungPayDiscover = "tokensam_fake_discover"
79
69
  SamsungPayMasterCard = "tokensam_fake_mastercard"
80
70
  SamsungPayVisa = "tokensam_fake_visa"
81
-
82
- def self.const_missing(const_name)
83
- if const_name == :AndroidPay
84
- warn "[DEPRECATED] Braintree::Test::Nonce::AndroidPay is deprecated. Use a card-specific nonce, e.g. Braintree::Test::Nonce::AndroidPayMasterCard"
85
- "fake-android-pay-nonce"
86
- else
87
- super
88
- end
89
- end
90
71
  end
91
72
  end
92
73
  end
@@ -2,16 +2,21 @@ module Braintree
2
2
  class ThreeDSecureInfo # :nodoc:
3
3
  include BaseModule
4
4
 
5
+ attr_reader :acs_transaction_id
6
+ attr_reader :cavv
7
+ attr_reader :ds_transaction_id
8
+ attr_reader :eci_flag
5
9
  attr_reader :enrolled
6
- attr_reader :liability_shifted
7
10
  attr_reader :liability_shift_possible
11
+ attr_reader :liability_shifted
12
+ attr_reader :pares_status
8
13
  attr_reader :status
9
- attr_reader :cavv
10
- attr_reader :xid
11
- attr_reader :eci_flag
12
- attr_reader :three_d_secure_version
13
- attr_reader :ds_transaction_id
14
14
  attr_reader :three_d_secure_authentication_id
15
+ attr_reader :three_d_secure_transaction_id
16
+ attr_reader :three_d_secure_version
17
+ attr_reader :xid
18
+ attr_reader :lookup
19
+ attr_reader :authentication
15
20
 
16
21
  alias_method :liability_shifted?, :liability_shifted
17
22
  alias_method :liability_shift_possible?, :liability_shift_possible
@@ -22,16 +27,21 @@ module Braintree
22
27
 
23
28
  def inspect
24
29
  attr_order = [
30
+ :acs_transaction_id,
31
+ :authentication,
32
+ :cavv,
33
+ :ds_transaction_id,
34
+ :eci_flag,
25
35
  :enrolled,
26
- :liability_shifted,
27
36
  :liability_shift_possible,
37
+ :liability_shifted,
38
+ :lookup,
39
+ :pares_status,
28
40
  :status,
29
- :cavv,
30
- :xid,
31
- :eci_flag,
32
- :three_d_secure_version,
33
- :ds_transaction_id,
34
41
  :three_d_secure_authentication_id,
42
+ :three_d_secure_transaction_id,
43
+ :three_d_secure_version,
44
+ :xid
35
45
  ]
36
46
 
37
47
  formatted_attrs = attr_order.map do |attr|
@@ -90,14 +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
- # NEXT_MAJOR_VERSION Remove this class.
96
- # DEPRECATED The American Express Checkout payment method is deprecated.
97
- attr_reader :amex_express_checkout_details
98
96
  attr_reader :amount
99
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
100
- attr_reader :android_pay_details
101
97
  attr_reader :apple_pay_details
102
98
  attr_reader :authorization_adjustments
103
99
  attr_reader :authorization_expires_at
@@ -107,7 +103,6 @@ module Braintree
107
103
  attr_reader :avs_street_address_response_code
108
104
  attr_reader :billing_details
109
105
  attr_reader :channel
110
- attr_reader :coinbase_details
111
106
  attr_reader :created_at
112
107
  attr_reader :credit_card_details
113
108
  attr_reader :currency_iso_code
@@ -123,15 +118,12 @@ module Braintree
123
118
  attr_reader :facilitated_details
124
119
  attr_reader :facilitator_details
125
120
  attr_reader :gateway_rejection_reason
121
+ attr_reader :google_pay_details
126
122
  attr_reader :graphql_id
127
123
  attr_reader :id
128
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
129
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
130
- attr_reader :ideal_payment_details
124
+ attr_reader :installment_count
125
+ attr_reader :installments
131
126
  attr_reader :local_payment_details
132
- # NEXT_MAJOR_VERSION Remove this class.
133
- # DEPRECATED The Masterpass Card payment method is deprecated.
134
- attr_reader :masterpass_card_details
135
127
  attr_reader :merchant_account_id
136
128
  attr_reader :network_response_code # Response code from the card network
137
129
  attr_reader :network_response_text # Response text from the card network
@@ -153,8 +145,11 @@ module Braintree
153
145
  attr_reader :recurring
154
146
  attr_reader :refund_ids
155
147
  attr_reader :refunded_transaction_id
148
+ attr_reader :refunded_installments
149
+ attr_reader :retrieval_reference_number
156
150
  attr_reader :risk_data
157
151
  attr_reader :samsung_pay_card_details
152
+ attr_reader :sca_exemption_requested
158
153
  attr_reader :service_fee_amount
159
154
  attr_reader :settlement_batch_id
160
155
  attr_reader :shipping_amount
@@ -173,7 +168,6 @@ module Braintree
173
168
  attr_reader :venmo_account_details
174
169
  attr_reader :visa_checkout_card_details
175
170
  attr_reader :voice_referral_number
176
- attr_reader :retrieval_reference_number
177
171
 
178
172
  def self.create(*args)
179
173
  Configuration.gateway.transaction.create(*args)
@@ -199,18 +193,6 @@ module Braintree
199
193
  Configuration.gateway.transaction.clone_transaction!(*args)
200
194
  end
201
195
 
202
- # Deprecated. Use Braintree::TransparentRedirect.confirm
203
- def self.create_from_transparent_redirect(*args)
204
- warn "[DEPRECATED] Transaction.create_from_transparent_redirect is deprecated. Please use TransparentRedirect.confirm"
205
- Configuration.gateway.transaction.create_from_transparent_redirect(*args)
206
- end
207
-
208
- # Deprecated. Use Braintree::TransparentRedirect.url
209
- def self.create_transaction_url
210
- warn "[DEPRECATED] Transaction.create_transaction_url is deprecated. Please use TransparentRedirect.url"
211
- Configuration.gateway.transaction.create_transaction_url
212
- end
213
-
214
196
  def self.credit(*args)
215
197
  Configuration.gateway.transaction.credit(*args)
216
198
  end
@@ -313,11 +295,8 @@ module Braintree
313
295
  @paypal_details = PayPalDetails.new(@paypal)
314
296
  @paypal_here_details = PayPalHereDetails.new(@paypal_here)
315
297
  @apple_pay_details = ApplePayDetails.new(@apple_pay)
316
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
317
- @android_pay_details = AndroidPayDetails.new(@android_pay_card)
318
- @amex_express_checkout_details = AmexExpressCheckoutDetails.new(@amex_express_checkout_card)
298
+ @google_pay_details = GooglePayDetails.new(@google_pay_card)
319
299
  @venmo_account_details = VenmoAccountDetails.new(@venmo_account)
320
- @coinbase_details = CoinbaseDetails.new(@coinbase_account)
321
300
  disputes.map! { |attrs| Dispute._new(attrs) } if disputes
322
301
  @custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
323
302
  add_ons.map! { |attrs| AddOn._new(attrs) } if add_ons
@@ -328,11 +307,13 @@ module Braintree
328
307
  @facilitator_details = FacilitatorDetails.new(attributes[:facilitator_details]) if attributes[:facilitator_details]
329
308
  @three_d_secure_info = ThreeDSecureInfo.new(attributes[:three_d_secure_info]) if attributes[:three_d_secure_info]
330
309
  @us_bank_account_details = UsBankAccountDetails.new(attributes[:us_bank_account]) if attributes[:us_bank_account]
331
- @ideal_payment_details = IdealPaymentDetails.new(attributes[:ideal_payment]) if attributes[:ideal_payment]
332
310
  @visa_checkout_card_details = VisaCheckoutCardDetails.new(attributes[:visa_checkout_card])
333
- @masterpass_card_details = MasterpassCardDetails.new(attributes[:masterpass_card])
334
311
  @samsung_pay_card_details = SamsungPayCardDetails.new(attributes[:samsung_pay_card])
312
+ @sca_exemption_requested = attributes[:sca_exemption_requested]
335
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
336
317
  end
337
318
 
338
319
  def inspect # :nodoc:
@@ -352,18 +333,6 @@ module Braintree
352
333
  @gateway.transaction_line_item.find_all(id)
353
334
  end
354
335
 
355
- # Deprecated. Use Braintree::Transaction.refund
356
- def refund(amount = nil)
357
- warn "[DEPRECATED] refund as an instance method is deprecated. Please use Transaction.refund"
358
- result = @gateway.transaction.refund(id, amount)
359
-
360
- if result.success?
361
- SuccessfulResult.new(:new_transaction => result.transaction)
362
- else
363
- result
364
- end
365
- end
366
-
367
336
  # Returns true if the transaction has been refunded. False otherwise.
368
337
  def refunded?
369
338
  !@refund_id.nil?
@@ -374,27 +343,6 @@ module Braintree
374
343
  @disbursement_details.valid?
375
344
  end
376
345
 
377
- def refund_id
378
- warn "[DEPRECATED] Transaction.refund_id is deprecated. Please use Transaction.refund_ids"
379
- @refund_id
380
- end
381
-
382
- # Deprecated. Use Braintree::Transaction.submit_for_settlement
383
- def submit_for_settlement(amount = nil)
384
- warn "[DEPRECATED] submit_for_settlement as an instance method is deprecated. Please use Transaction.submit_for_settlement"
385
- result = @gateway.transaction.submit_for_settlement(id, amount)
386
- if result.success?
387
- copy_instance_variables_from_object result.transaction
388
- end
389
- result
390
- end
391
-
392
- # Deprecated. Use Braintree::Transaction.submit_for_settlement!
393
- def submit_for_settlement!(amount = nil)
394
- warn "[DEPRECATED] submit_for_settlement! as an instance method is deprecated. Please use Transaction.submit_for_settlement!"
395
- return_object_or_raise(:transaction) { submit_for_settlement(amount) }
396
- end
397
-
398
346
  # If this transaction was stored in the vault, or created from vault records,
399
347
  # vault_billing_address will return the associated Braintree::Address. Because the
400
348
  # vault billing address can be updated after the transaction was created, the attributes
@@ -431,22 +379,6 @@ module Braintree
431
379
  @gateway.address.find(customer_details.id, shipping_details.id)
432
380
  end
433
381
 
434
- # Deprecated. Use Braintree::Transaction.void
435
- def void
436
- warn "[DEPRECATED] void as an instance method is deprecated. Please use Transaction.void"
437
- result = @gateway.transaction.void(id)
438
- if result.success?
439
- copy_instance_variables_from_object result.transaction
440
- end
441
- result
442
- end
443
-
444
- # Deprecated. Use Braintree::Transaction.void!
445
- def void!
446
- warn "[DEPRECATED] void! as an instance method is deprecated. Please use Transaction.void!"
447
- return_object_or_raise(:transaction) { void }
448
- end
449
-
450
382
  def processed_with_network_token?
451
383
  @processed_with_network_token
452
384
  end