braintree 2.104.1 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
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