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
@@ -1,40 +0,0 @@
1
- module Braintree
2
- # NEXT_MAJOR_VERSION Remove this class.
3
- # DEPRECATED The American Express Checkout payment method is deprecated.
4
- class AmexExpressCheckoutCard
5
- include BaseModule # :nodoc:
6
-
7
- attr_reader :bin
8
- attr_reader :card_member_expiry_date
9
- attr_reader :card_member_number
10
- attr_reader :card_type
11
- attr_reader :created_at
12
- attr_reader :customer_id
13
- attr_reader :default
14
- attr_reader :expiration_month
15
- attr_reader :expiration_year
16
- attr_reader :image_url
17
- attr_reader :source_description
18
- attr_reader :subscriptions
19
- attr_reader :token
20
- attr_reader :updated_at
21
-
22
- def initialize(gateway, attributes) # :nodoc:
23
- @gateway = gateway
24
- set_instance_variables_from_hash(attributes)
25
- @subscriptions = (@subscriptions || []).map { |subscription_hash| Subscription._new(@gateway, subscription_hash) }
26
- end
27
-
28
- def default?
29
- @default
30
- end
31
-
32
- class << self
33
- protected :new
34
- end
35
-
36
- def self._new(*args) # :nodoc:
37
- self.new *args
38
- end
39
- end
40
- end
@@ -1,34 +0,0 @@
1
- module Braintree
2
- class CoinbaseAccount
3
- include BaseModule # :nodoc:
4
-
5
- attr_reader :created_at
6
- attr_reader :customer_id
7
- attr_reader :default
8
- attr_reader :subscriptions
9
- attr_reader :token
10
- attr_reader :updated_at
11
- attr_reader :user_email
12
- attr_reader :user_id
13
- attr_reader :user_name
14
-
15
- def initialize(gateway, attributes) # :nodoc:
16
- @gateway = gateway
17
- set_instance_variables_from_hash(attributes)
18
- @subscriptions = (@subscriptions || []).map { |subscription_hash| Subscription._new(@gateway, subscription_hash) }
19
- end
20
-
21
- class << self
22
- protected :new
23
- end
24
-
25
- def self._new(*args) # :nodoc:
26
- self.new *args
27
- end
28
-
29
- # Returns true if this coinbase account is the customer's default payment method.
30
- def default?
31
- @default
32
- end
33
- end
34
- end
@@ -1,36 +0,0 @@
1
- module Braintree
2
- class EuropeBankAccount
3
- include BaseModule
4
-
5
- module MandateType
6
- Business = 'business'
7
- Consumer = 'consumer'
8
- end
9
-
10
- attr_reader :customer_id
11
- attr_reader :image_url
12
- attr_reader :token
13
-
14
- def initialize(gateway, attributes) # :nodoc:
15
- @gateway = gateway
16
- set_instance_variables_from_hash(attributes)
17
- end
18
-
19
- class << self
20
- protected :new
21
- end
22
-
23
- def self._new(*args)
24
- self.new(*args)
25
- end
26
-
27
- def self.find(token)
28
- Configuration.gateway.europe_bank_account.find(token)
29
- end
30
-
31
- def default?
32
- @default
33
- end
34
-
35
- end
36
- end
@@ -1,17 +0,0 @@
1
- module Braintree
2
- class EuropeBankAccountGateway
3
- def initialize(gateway)
4
- @gateway = gateway
5
- @config = gateway.config
6
- @config.assert_has_access_token_or_keys
7
- end
8
-
9
- def find(token)
10
- raise ArgumentError if token.nil? || token.to_s.strip == ""
11
- response = @config.http.get("#{@config.base_merchant_path}/payment_methods/europe_bank_account/#{token}")
12
- EuropeBankAccount._new(@gateway, response[:europe_bank_account])
13
- rescue NotFoundError
14
- raise NotFoundError, "payment method with token #{token.inspect} not found"
15
- end
16
- end
17
- end
@@ -1,61 +0,0 @@
1
- module Braintree
2
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
3
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
4
- class IdealPayment
5
- include BaseModule
6
-
7
- attr_reader :amount
8
- attr_reader :approval_url
9
- attr_reader :currency
10
- attr_reader :iban_bank_account
11
- attr_reader :id
12
- attr_reader :ideal_transaction_id
13
- attr_reader :issuer
14
- attr_reader :order_id
15
- attr_reader :status
16
-
17
- def initialize(gateway, attributes) # :nodoc:
18
- @gateway = gateway
19
- set_instance_variables_from_hash(attributes)
20
- @iban_bank_account = IbanBankAccount.new(attributes[:iban_bank_account]) if attributes[:iban_bank_account]
21
- end
22
-
23
- class << self
24
- protected :new
25
- end
26
-
27
- def self._new(*args) # :nodoc:
28
- self.new *args
29
- end
30
-
31
- def self.sale(ideal_payment_id, transaction_attributes)
32
- Configuration.gateway.transaction.sale(transaction_attributes.merge(
33
- :payment_method_nonce => ideal_payment_id,
34
- :options => { :submit_for_settlement => true }
35
- )
36
- )
37
- end
38
-
39
- def self.sale!(ideal_payment_id, transaction_attributes)
40
- return_object_or_raise(:transaction) { sale(ideal_payment_id, transaction_attributes) }
41
- end
42
-
43
- def self.find(ideal_payment_id)
44
- Configuration.gateway.ideal_payment.find(ideal_payment_id)
45
- end
46
-
47
- class IbanBankAccount
48
- include BaseModule
49
- attr_reader :account_holder_name
50
- attr_reader :bic
51
- attr_reader :description
52
- attr_reader :iban_account_number_last_4
53
- attr_reader :iban_country
54
- attr_reader :masked_iban
55
-
56
- def initialize(attributes) # :nodoc:
57
- set_instance_variables_from_hash(attributes)
58
- end
59
- end
60
- end
61
- end
@@ -1,19 +0,0 @@
1
- module Braintree
2
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
3
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
4
- class IdealPaymentGateway
5
- def initialize(gateway)
6
- @gateway = gateway
7
- @config = gateway.config
8
- @config.assert_has_access_token_or_keys
9
- end
10
-
11
- def find(ideal_payment_id)
12
- raise ArgumentError if ideal_payment_id.nil? || ideal_payment_id.to_s.strip == ""
13
- response = @config.http.get("#{@config.base_merchant_path}/ideal_payments/#{ideal_payment_id}")
14
- IdealPayment._new(@gateway, response[:ideal_payment])
15
- rescue NotFoundError
16
- raise NotFoundError, "ideal payment with ideal_payment_id #{ideal_payment_id.inspect} not found"
17
- end
18
- end
19
- end
@@ -1,83 +0,0 @@
1
- module Braintree
2
- # NEXT_MAJOR_VERSION Remove this class.
3
- # DEPRECATED The Masterpass Card payment method is deprecated.
4
- class MasterpassCard
5
- include BaseModule # :nodoc:
6
- include Braintree::Util::TokenEquality
7
-
8
- attr_reader :billing_address
9
- attr_reader :bin
10
- attr_reader :card_type
11
- attr_reader :cardholder_name
12
- attr_reader :commercial
13
- attr_reader :country_of_issuance
14
- attr_reader :created_at
15
- attr_reader :customer_id
16
- attr_reader :customer_location
17
- attr_reader :debit
18
- attr_reader :durbin_regulated
19
- attr_reader :expiration_month
20
- attr_reader :expiration_year
21
- attr_reader :healthcare
22
- attr_reader :image_url
23
- attr_reader :issuing_bank
24
- attr_reader :last_4
25
- attr_reader :payroll
26
- attr_reader :prepaid
27
- attr_reader :product_id
28
- attr_reader :subscriptions
29
- attr_reader :token
30
- attr_reader :unique_number_identifier
31
- attr_reader :updated_at
32
- attr_reader :verification
33
-
34
- def initialize(gateway, attributes) # :nodoc:
35
- @gateway = gateway
36
- set_instance_variables_from_hash(attributes)
37
- @billing_address = attributes[:billing_address] ? Address._new(@gateway, attributes[:billing_address]) : nil
38
- @subscriptions = (@subscriptions || []).map { |subscription_hash| Subscription._new(@gateway, subscription_hash) }
39
- @verification = _most_recent_verification(attributes)
40
- end
41
-
42
- def _most_recent_verification(attributes)
43
- verification = (attributes[:verifications] || []).sort_by{ |verification| verification[:created_at] }.reverse.first
44
- CreditCardVerification._new(verification) if verification
45
- end
46
-
47
- def default?
48
- @default
49
- end
50
-
51
- # Expiration date formatted as MM/YYYY
52
- def expiration_date
53
- "#{expiration_month}/#{expiration_year}"
54
- end
55
-
56
- def expired?
57
- @expired
58
- end
59
-
60
- def inspect # :nodoc:
61
- first = [:token]
62
- order = first + (self.class._attributes - first)
63
- nice_attributes = order.map do |attr|
64
- "#{attr}: #{send(attr).inspect}"
65
- end
66
- "#<#{self.class} #{nice_attributes.join(', ')}>"
67
- end
68
-
69
- def self._attributes # :nodoc:
70
- [
71
- :billing_address, :bin, :card_type, :cardholder_name, :created_at,
72
- :customer_id, :customer_location, :expiration_month, :expiration_year,
73
- :last_4, :token, :updated_at, :prepaid, :payroll, :product_id,
74
- :commercial, :debit, :durbin_regulated, :healthcare,
75
- :country_of_issuance, :issuing_bank, :image_url
76
- ]
77
- end
78
-
79
- def self._new(*args) # :nodoc:
80
- self.new *args
81
- end
82
- end
83
- end
@@ -1,21 +0,0 @@
1
- module Braintree
2
- class Transaction
3
- class AmexExpressCheckoutDetails
4
- include BaseModule
5
-
6
- attr_reader :bin
7
- attr_reader :card_member_expiry_date
8
- attr_reader :card_member_number
9
- attr_reader :card_type
10
- attr_reader :expiration_month
11
- attr_reader :expiration_year
12
- attr_reader :image_url
13
- attr_reader :source_description
14
- attr_reader :token
15
-
16
- def initialize(attributes)
17
- set_instance_variables_from_hash attributes unless attributes.nil?
18
- end
19
- end
20
- end
21
- end
@@ -1,16 +0,0 @@
1
- module Braintree
2
- class Transaction
3
- class CoinbaseDetails
4
- include BaseModule
5
-
6
- attr_reader :user_id
7
- attr_reader :user_email
8
- attr_reader :user_name
9
- attr_reader :token
10
-
11
- def initialize(attributes)
12
- set_instance_variables_from_hash attributes unless attributes.nil?
13
- end
14
- end
15
- end
16
- end
@@ -1,19 +0,0 @@
1
- module Braintree
2
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
3
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
4
- class Transaction
5
- class IdealPaymentDetails # :nodoc:
6
- include BaseModule
7
-
8
- attr_reader :bic
9
- attr_reader :ideal_payment_id
10
- attr_reader :ideal_transaction_id
11
- attr_reader :image_url
12
- attr_reader :masked_iban
13
-
14
- def initialize(attributes)
15
- set_instance_variables_from_hash attributes unless attributes.nil?
16
- end
17
- end
18
- end
19
- end
@@ -1,49 +0,0 @@
1
- module Braintree
2
- class Transaction
3
- # NEXT_MAJOR_VERSION Remove this class.
4
- # DEPRECATED The Masterpass Card payment method is deprecated.
5
- class MasterpassCardDetails # :nodoc:
6
- include BaseModule
7
-
8
- attr_reader :bin
9
- attr_reader :card_type
10
- attr_reader :cardholder_name
11
- attr_reader :commercial
12
- attr_reader :country_of_issuance
13
- attr_reader :customer_location
14
- attr_reader :debit
15
- attr_reader :durbin_regulated
16
- attr_reader :expiration_month
17
- attr_reader :expiration_year
18
- attr_reader :healthcare
19
- attr_reader :image_url
20
- attr_reader :issuing_bank
21
- attr_reader :last_4
22
- attr_reader :payroll
23
- attr_reader :prepaid
24
- attr_reader :product_id
25
- attr_reader :token
26
-
27
- def initialize(attributes)
28
- set_instance_variables_from_hash attributes unless attributes.nil?
29
- end
30
-
31
- def expiration_date
32
- "#{expiration_month}/#{expiration_year}"
33
- end
34
-
35
- def inspect
36
- attr_order = [:token, :bin, :last_4, :card_type, :expiration_date, :cardholder_name, :customer_location, :prepaid,
37
- :healthcare, :durbin_regulated, :debit, :commercial, :payroll, :product_id, :country_of_issuance, :issuing_bank, :image_url]
38
- formatted_attrs = attr_order.map do |attr|
39
- "#{attr}: #{send(attr).inspect}"
40
- end
41
- "#<#{formatted_attrs.join(", ")}>"
42
- end
43
-
44
- def masked_number
45
- "#{bin}******#{last_4}"
46
- end
47
- end
48
- end
49
- end
@@ -1,40 +0,0 @@
1
- module Braintree
2
- module TransparentRedirect
3
- module Kind # :nodoc:
4
- CreateCustomer = "create_customer"
5
- UpdateCustomer = "update_customer"
6
- CreatePaymentMethod = "create_payment_method"
7
- UpdatePaymentMethod = "update_payment_method"
8
- CreateTransaction = "create_transaction"
9
- end
10
-
11
- def self.confirm(*args)
12
- Configuration.gateway.transparent_redirect.confirm(*args)
13
- end
14
-
15
- def self.create_credit_card_data(*args)
16
- Configuration.gateway.transparent_redirect.create_credit_card_data(*args)
17
- end
18
-
19
- def self.create_customer_data(*args)
20
- Configuration.gateway.transparent_redirect.create_customer_data(*args)
21
- end
22
-
23
- def self.transaction_data(*args)
24
- Configuration.gateway.transparent_redirect.transaction_data(*args)
25
- end
26
-
27
- def self.update_credit_card_data(*args)
28
- Configuration.gateway.transparent_redirect.update_credit_card_data(*args)
29
- end
30
-
31
- def self.update_customer_data(*args)
32
- Configuration.gateway.transparent_redirect.update_customer_data(*args)
33
- end
34
-
35
- # Returns the URL to which Transparent Redirect Requests should be posted
36
- def self.url
37
- Configuration.gateway.transparent_redirect.url
38
- end
39
- end
40
- end