braintree 2.104.1 → 3.0.1

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/braintree.gemspec +6 -3
  4. data/lib/braintree.rb +3 -17
  5. data/lib/braintree/address.rb +0 -22
  6. data/lib/braintree/base_module.rb +6 -0
  7. data/lib/braintree/configuration.rb +1 -1
  8. data/lib/braintree/credit_card.rb +0 -75
  9. data/lib/braintree/credit_card_gateway.rb +3 -32
  10. data/lib/braintree/credit_card_verification.rb +13 -0
  11. data/lib/braintree/customer.rb +3 -74
  12. data/lib/braintree/customer_gateway.rb +0 -23
  13. data/lib/braintree/dispute.rb +1 -7
  14. data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
  15. data/lib/braintree/dispute_gateway.rb +2 -7
  16. data/lib/braintree/error_codes.rb +139 -170
  17. data/lib/braintree/exceptions.rb +5 -3
  18. data/lib/braintree/gateway.rb +0 -14
  19. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +1 -2
  20. data/lib/braintree/merchant_account_gateway.rb +2 -0
  21. data/lib/braintree/payment_instrument_type.rb +1 -5
  22. data/lib/braintree/payment_method_gateway.rb +4 -9
  23. data/lib/braintree/payment_method_parser.rb +1 -8
  24. data/lib/braintree/subscription.rb +5 -5
  25. data/lib/braintree/successful_result.rb +0 -1
  26. data/lib/braintree/test/nonce.rb +4 -23
  27. data/lib/braintree/transaction.rb +2 -79
  28. data/lib/braintree/transaction/disbursement_details.rb +1 -0
  29. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
  30. data/lib/braintree/transaction/subscription_details.rb +2 -0
  31. data/lib/braintree/transaction_gateway.rb +12 -21
  32. data/lib/braintree/transaction_search.rb +0 -1
  33. data/lib/braintree/util.rb +17 -2
  34. data/lib/braintree/version.rb +2 -2
  35. data/lib/braintree/webhook_notification.rb +0 -10
  36. data/lib/braintree/webhook_testing_gateway.rb +0 -43
  37. data/lib/braintree/xml/libxml.rb +1 -0
  38. data/lib/braintree/xml/parser.rb +11 -34
  39. data/spec/integration/braintree/address_spec.rb +2 -89
  40. data/spec/integration/braintree/client_api/spec_helper.rb +0 -26
  41. data/spec/integration/braintree/credit_card_spec.rb +6 -471
  42. data/spec/integration/braintree/customer_spec.rb +22 -362
  43. data/spec/integration/braintree/dispute_search_spec.rb +2 -2
  44. data/spec/integration/braintree/dispute_spec.rb +1 -2
  45. data/spec/integration/braintree/payment_method_spec.rb +77 -120
  46. data/spec/integration/braintree/subscription_spec.rb +11 -16
  47. data/spec/integration/braintree/transaction_search_spec.rb +3 -3
  48. data/spec/integration/braintree/transaction_spec.rb +83 -511
  49. data/spec/integration/spec_helper.rb +1 -4
  50. data/spec/spec_helper.rb +1 -11
  51. data/spec/unit/braintree/address_spec.rb +0 -8
  52. data/spec/unit/braintree/credit_card_spec.rb +1 -20
  53. data/spec/unit/braintree/customer_spec.rb +0 -12
  54. data/spec/unit/braintree/dispute_spec.rb +1 -12
  55. data/spec/unit/braintree/http_spec.rb +3 -3
  56. data/spec/unit/braintree/transaction_spec.rb +1 -35
  57. data/spec/unit/braintree/util_spec.rb +37 -3
  58. data/spec/unit/braintree/webhook_notification_spec.rb +1 -1
  59. data/spec/unit/braintree/xml/parser_spec.rb +21 -16
  60. metadata +26 -30
  61. data/lib/braintree/amex_express_checkout_card.rb +0 -40
  62. data/lib/braintree/coinbase_account.rb +0 -34
  63. data/lib/braintree/europe_bank_account.rb +0 -36
  64. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  65. data/lib/braintree/ideal_payment.rb +0 -61
  66. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  67. data/lib/braintree/masterpass_card.rb +0 -83
  68. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  69. data/lib/braintree/transaction/coinbase_details.rb +0 -16
  70. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  71. data/lib/braintree/transaction/masterpass_card_details.rb +0 -49
  72. data/lib/braintree/transparent_redirect.rb +0 -40
  73. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  74. data/lib/braintree/xml/rexml.rb +0 -71
  75. data/spec/hacks/tcp_socket.rb +0 -18
  76. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  77. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  78. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  79. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
  80. 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
@@ -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'
@@ -43,17 +43,12 @@ module Braintree
43
43
  CreditCard._new(@gateway, response[:credit_card])
44
44
  elsif response.has_key?(:paypal_account)
45
45
  PayPalAccount._new(@gateway, response[:paypal_account])
46
- elsif response[:coinbase_account]
47
- SuccessfulResult.new(:payment_method => CoinbaseAccount._new(@gateway, response[:coinbase_account]))
48
46
  elsif response.has_key?(:us_bank_account)
49
47
  UsBankAccount._new(@gateway, response[:us_bank_account])
50
- elsif response.has_key?(:europe_bank_account)
51
- EuropeBankAccount._new(@gateway, response[:europe_bank_account])
52
48
  elsif response.has_key?(:apple_pay_card)
53
49
  ApplePayCard._new(@gateway, response[:apple_pay_card])
54
50
  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])
51
+ GooglePayCard._new(@gateway, response[:android_pay_card])
57
52
  elsif response.has_key?(:venmo_account)
58
53
  VenmoAccount._new(@gateway, response[:venmo_account])
59
54
  else
@@ -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
@@ -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
@@ -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
@@ -92,12 +92,8 @@ module Braintree
92
92
 
93
93
  attr_reader :add_ons
94
94
  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
95
  attr_reader :amount
99
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
100
- attr_reader :android_pay_details
96
+ attr_reader :google_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
@@ -125,13 +120,7 @@ module Braintree
125
120
  attr_reader :gateway_rejection_reason
126
121
  attr_reader :graphql_id
127
122
  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
131
123
  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
124
  attr_reader :merchant_account_id
136
125
  attr_reader :network_response_code # Response code from the card network
137
126
  attr_reader :network_response_text # Response text from the card network
@@ -199,18 +188,6 @@ module Braintree
199
188
  Configuration.gateway.transaction.clone_transaction!(*args)
200
189
  end
201
190
 
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
191
  def self.credit(*args)
215
192
  Configuration.gateway.transaction.credit(*args)
216
193
  end
@@ -313,11 +290,8 @@ module Braintree
313
290
  @paypal_details = PayPalDetails.new(@paypal)
314
291
  @paypal_here_details = PayPalHereDetails.new(@paypal_here)
315
292
  @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)
293
+ @google_pay_details = GooglePayDetails.new(@google_pay_card)
319
294
  @venmo_account_details = VenmoAccountDetails.new(@venmo_account)
320
- @coinbase_details = CoinbaseDetails.new(@coinbase_account)
321
295
  disputes.map! { |attrs| Dispute._new(attrs) } if disputes
322
296
  @custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
323
297
  add_ons.map! { |attrs| AddOn._new(attrs) } if add_ons
@@ -328,9 +302,7 @@ module Braintree
328
302
  @facilitator_details = FacilitatorDetails.new(attributes[:facilitator_details]) if attributes[:facilitator_details]
329
303
  @three_d_secure_info = ThreeDSecureInfo.new(attributes[:three_d_secure_info]) if attributes[:three_d_secure_info]
330
304
  @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
305
  @visa_checkout_card_details = VisaCheckoutCardDetails.new(attributes[:visa_checkout_card])
333
- @masterpass_card_details = MasterpassCardDetails.new(attributes[:masterpass_card])
334
306
  @samsung_pay_card_details = SamsungPayCardDetails.new(attributes[:samsung_pay_card])
335
307
  authorization_adjustments.map! { |attrs| AuthorizationAdjustment._new(attrs) } if authorization_adjustments
336
308
  end
@@ -352,18 +324,6 @@ module Braintree
352
324
  @gateway.transaction_line_item.find_all(id)
353
325
  end
354
326
 
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
327
  # Returns true if the transaction has been refunded. False otherwise.
368
328
  def refunded?
369
329
  !@refund_id.nil?
@@ -374,27 +334,6 @@ module Braintree
374
334
  @disbursement_details.valid?
375
335
  end
376
336
 
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
337
  # If this transaction was stored in the vault, or created from vault records,
399
338
  # vault_billing_address will return the associated Braintree::Address. Because the
400
339
  # vault billing address can be updated after the transaction was created, the attributes
@@ -431,22 +370,6 @@ module Braintree
431
370
  @gateway.address.find(customer_details.id, shipping_details.id)
432
371
  end
433
372
 
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
373
  def processed_with_network_token?
451
374
  @processed_with_network_token
452
375
  end
@@ -13,6 +13,7 @@ module Braintree
13
13
 
14
14
  def initialize(attributes)
15
15
  set_instance_variables_from_hash attributes unless attributes.nil?
16
+ @disbursement_date = Date.parse(disbursement_date) unless disbursement_date.nil?
16
17
  end
17
18
 
18
19
  def funds_held?
@@ -1,6 +1,6 @@
1
1
  module Braintree
2
2
  class Transaction
3
- class AndroidPayDetails
3
+ class GooglePayDetails
4
4
  include BaseModule
5
5
 
6
6
  attr_reader :bin
@@ -8,6 +8,8 @@ module Braintree
8
8
 
9
9
  def initialize(attributes)
10
10
  set_instance_variables_from_hash attributes unless attributes.nil?
11
+ @billing_period_start_date = Date.parse(billing_period_start_date) unless billing_period_start_date.nil?
12
+ @billing_period_end_date = Date.parse(billing_period_end_date) unless billing_period_end_date.nil?
11
13
  end
12
14
  end
13
15
  end
@@ -52,17 +52,6 @@ module Braintree
52
52
  return_object_or_raise(:transaction) { clone_transaction(*args) }
53
53
  end
54
54
 
55
- # Deprecated
56
- def create_from_transparent_redirect(query_string)
57
- params = @gateway.transparent_redirect.parse_and_validate_query_string query_string
58
- _do_create("/transactions/all/confirm_transparent_redirect_request", :id => params[:id])
59
- end
60
-
61
- def create_transaction_url
62
- warn "[DEPRECATED] Transaction.create_transaction_url is deprecated. Please use TransparentRedirect.url"
63
- "#{@config.base_merchant_url}/transactions/all/create_via_transparent_redirect_request"
64
- end
65
-
66
55
  def credit(attributes)
67
56
  create(attributes.merge(:type => 'credit'))
68
57
  end
@@ -124,7 +113,7 @@ module Braintree
124
113
  if response.has_key?(:search_results)
125
114
  ResourceCollection.new(response) { |ids| _fetch_transactions(search, ids) }
126
115
  else
127
- raise DownForMaintenanceError
116
+ raise UnexpectedError, "expected :search_results"
128
117
  end
129
118
  end
130
119
 
@@ -184,13 +173,13 @@ module Braintree
184
173
 
185
174
  def self._create_signature # :nodoc:
186
175
  [
187
- :amount, :customer_id, :merchant_account_id, :order_id, :channel, :payment_method_token,
188
- :purchase_order_number, :recurring, :transaction_source, :shipping_address_id, :type, :tax_amount, :tax_exempt,
189
- :venmo_sdk_payment_method_code, :device_session_id, :service_fee_amount, :device_data, :fraud_merchant_id,
190
- :shipping_amount, :discount_amount, :ships_from_postal_code,
191
- :billing_address_id, :payment_method_nonce, :three_d_secure_token, :three_d_secure_authentication_id,
192
- :shared_payment_method_token, :shared_billing_address_id, :shared_customer_id, :shared_shipping_address_id, :shared_payment_method_nonce,
193
- :product_sku,
176
+ :amount, :billing_address_id, :channel, :customer_id, :device_data, :discount_amount,
177
+ :merchant_account_id, :order_id, :payment_method_nonce, :payment_method_token,
178
+ :product_sku, :purchase_order_number, :service_fee_amount, :shared_billing_address_id,
179
+ :shared_customer_id, :shared_payment_method_nonce, :shared_payment_method_token,
180
+ :shared_shipping_address_id, :shipping_address_id, :shipping_amount,
181
+ :ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,
182
+ :three_d_secure_token, :transaction_source, :type, :venmo_sdk_payment_method_code,
194
183
  {: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]},
195
184
  {:risk_data => [:customer_browser, :customer_device_id, :customer_ip, :customer_location_zip, :customer_tenure]},
196
185
  {:credit_card => [:token, :cardholder_name, :cvv, :expiration_date, :expiration_month, :expiration_year, :number]},
@@ -256,8 +245,7 @@ module Braintree
256
245
  ]},
257
246
  ]},
258
247
  {:apple_pay_card => [:number, :cardholder_name, :cryptogram, :expiration_month, :expiration_year, :eci_indicator]},
259
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
260
- {:android_pay_card => [:number, :cryptogram, :google_transaction_id, :expiration_month, :expiration_year, :source_card_type, :source_card_last_four, :eci_indicator]}
248
+ {:google_pay_card => [:number, :cryptogram, :google_transaction_id, :expiration_month, :expiration_year, :source_card_type, :source_card_last_four, :eci_indicator]}
261
249
  ]
262
250
  end
263
251
 
@@ -291,6 +279,9 @@ module Braintree
291
279
  end
292
280
 
293
281
  def _do_create(path, params=nil) # :nodoc:
282
+ if !params.nil?
283
+ params = Util.replace_key(params, :google_pay_card, :android_pay_card)
284
+ end
294
285
  response = @config.http.post("#{@config.base_merchant_path}#{path}", params)
295
286
  _handle_transaction_response(response)
296
287
  end