braintree 2.104.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) 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/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 +3 -32
  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 +139 -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 +4 -9
  25. data/lib/braintree/payment_method_parser.rb +1 -8
  26. data/lib/braintree/subscription.rb +5 -5
  27. data/lib/braintree/successful_result.rb +0 -1
  28. data/lib/braintree/test/nonce.rb +4 -23
  29. data/lib/braintree/transaction.rb +4 -80
  30. data/lib/braintree/transaction/disbursement_details.rb +1 -0
  31. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
  32. data/lib/braintree/transaction/paypal_details.rb +1 -0
  33. data/lib/braintree/transaction/subscription_details.rb +2 -0
  34. data/lib/braintree/transaction_gateway.rb +12 -21
  35. data/lib/braintree/transaction_search.rb +0 -1
  36. data/lib/braintree/util.rb +17 -2
  37. data/lib/braintree/version.rb +2 -2
  38. data/lib/braintree/webhook_notification.rb +0 -10
  39. data/lib/braintree/webhook_testing_gateway.rb +0 -43
  40. data/lib/braintree/xml/libxml.rb +1 -0
  41. data/lib/braintree/xml/parser.rb +11 -34
  42. data/spec/integration/braintree/address_spec.rb +2 -89
  43. data/spec/integration/braintree/client_api/spec_helper.rb +0 -26
  44. data/spec/integration/braintree/credit_card_spec.rb +6 -471
  45. data/spec/integration/braintree/customer_spec.rb +22 -362
  46. data/spec/integration/braintree/dispute_search_spec.rb +3 -3
  47. data/spec/integration/braintree/dispute_spec.rb +1 -2
  48. data/spec/integration/braintree/payment_method_spec.rb +77 -120
  49. data/spec/integration/braintree/subscription_spec.rb +11 -16
  50. data/spec/integration/braintree/transaction_search_spec.rb +3 -3
  51. data/spec/integration/braintree/transaction_spec.rb +106 -511
  52. data/spec/integration/spec_helper.rb +1 -4
  53. data/spec/spec_helper.rb +1 -11
  54. data/spec/unit/braintree/address_spec.rb +0 -8
  55. data/spec/unit/braintree/credit_card_spec.rb +1 -20
  56. data/spec/unit/braintree/customer_spec.rb +0 -12
  57. data/spec/unit/braintree/dispute_spec.rb +1 -12
  58. data/spec/unit/braintree/http_spec.rb +3 -3
  59. data/spec/unit/braintree/local_payment_completed_spec.rb +14 -0
  60. data/spec/unit/braintree/transaction/paypal_details_spec.rb +2 -0
  61. data/spec/unit/braintree/transaction_spec.rb +1 -35
  62. data/spec/unit/braintree/util_spec.rb +37 -3
  63. data/spec/unit/braintree/webhook_notification_spec.rb +1 -1
  64. data/spec/unit/braintree/xml/parser_spec.rb +21 -16
  65. metadata +26 -30
  66. data/lib/braintree/amex_express_checkout_card.rb +0 -40
  67. data/lib/braintree/coinbase_account.rb +0 -34
  68. data/lib/braintree/europe_bank_account.rb +0 -36
  69. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  70. data/lib/braintree/ideal_payment.rb +0 -61
  71. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  72. data/lib/braintree/masterpass_card.rb +0 -83
  73. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  74. data/lib/braintree/transaction/coinbase_details.rb +0 -16
  75. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  76. data/lib/braintree/transaction/masterpass_card_details.rb +0 -49
  77. data/lib/braintree/transparent_redirect.rb +0 -40
  78. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  79. data/lib/braintree/xml/rexml.rb +0 -71
  80. data/spec/hacks/tcp_socket.rb +0 -18
  81. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  82. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  83. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  84. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
  85. data/spec/unit/braintree/xml/rexml_spec.rb +0 -51
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.104.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braintree
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-02 00:00:00.000000000 Z
11
+ date: 2020-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -16,15 +16,30 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0
19
+ version: 3.2.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0
27
- description: Ruby library for integrating with the Braintree Gateway
26
+ version: 3.2.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: libxml-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.0
41
+ description: Resources and tools for developers to integrate Braintree's global payments
42
+ platform.
28
43
  email: code@getbraintree.com
29
44
  executables: []
30
45
  extensions: []
@@ -41,8 +56,6 @@ files:
41
56
  - lib/braintree/address/country_names.rb
42
57
  - lib/braintree/address_gateway.rb
43
58
  - lib/braintree/advanced_search.rb
44
- - lib/braintree/amex_express_checkout_card.rb
45
- - lib/braintree/android_pay_card.rb
46
59
  - lib/braintree/apple_pay.rb
47
60
  - lib/braintree/apple_pay_card.rb
48
61
  - lib/braintree/apple_pay_gateway.rb
@@ -52,7 +65,6 @@ files:
52
65
  - lib/braintree/bin_data.rb
53
66
  - lib/braintree/client_token.rb
54
67
  - lib/braintree/client_token_gateway.rb
55
- - lib/braintree/coinbase_account.rb
56
68
  - lib/braintree/configuration.rb
57
69
  - lib/braintree/connected_merchant_paypal_status_changed.rb
58
70
  - lib/braintree/connected_merchant_status_transitioned.rb
@@ -72,7 +84,7 @@ files:
72
84
  - lib/braintree/discount_gateway.rb
73
85
  - lib/braintree/dispute.rb
74
86
  - lib/braintree/dispute/evidence.rb
75
- - lib/braintree/dispute/history_event.rb
87
+ - lib/braintree/dispute/status_history.rb
76
88
  - lib/braintree/dispute/transaction.rb
77
89
  - lib/braintree/dispute/transaction_details.rb
78
90
  - lib/braintree/dispute_gateway.rb
@@ -82,19 +94,15 @@ files:
82
94
  - lib/braintree/error_codes.rb
83
95
  - lib/braintree/error_result.rb
84
96
  - lib/braintree/errors.rb
85
- - lib/braintree/europe_bank_account.rb
86
- - lib/braintree/europe_bank_account_gateway.rb
87
97
  - lib/braintree/exceptions.rb
88
98
  - lib/braintree/facilitated_details.rb
89
99
  - lib/braintree/facilitator_details.rb
90
100
  - lib/braintree/gateway.rb
101
+ - lib/braintree/google_pay_card.rb
91
102
  - lib/braintree/granted_payment_instrument_update.rb
92
103
  - lib/braintree/graphql_client.rb
93
104
  - lib/braintree/http.rb
94
- - lib/braintree/ideal_payment.rb
95
- - lib/braintree/ideal_payment_gateway.rb
96
105
  - lib/braintree/local_payment_completed.rb
97
- - lib/braintree/masterpass_card.rb
98
106
  - lib/braintree/merchant.rb
99
107
  - lib/braintree/merchant_account.rb
100
108
  - lib/braintree/merchant_account/address_details.rb
@@ -144,16 +152,12 @@ files:
144
152
  - lib/braintree/three_d_secure_info.rb
145
153
  - lib/braintree/transaction.rb
146
154
  - lib/braintree/transaction/address_details.rb
147
- - lib/braintree/transaction/amex_express_checkout_details.rb
148
- - lib/braintree/transaction/android_pay_details.rb
149
155
  - lib/braintree/transaction/apple_pay_details.rb
150
- - lib/braintree/transaction/coinbase_details.rb
151
156
  - lib/braintree/transaction/credit_card_details.rb
152
157
  - lib/braintree/transaction/customer_details.rb
153
158
  - lib/braintree/transaction/disbursement_details.rb
154
- - lib/braintree/transaction/ideal_payment_details.rb
159
+ - lib/braintree/transaction/google_pay_details.rb
155
160
  - lib/braintree/transaction/local_payment_details.rb
156
- - lib/braintree/transaction/masterpass_card_details.rb
157
161
  - lib/braintree/transaction/paypal_details.rb
158
162
  - lib/braintree/transaction/paypal_here_details.rb
159
163
  - lib/braintree/transaction/samsung_pay_card_details.rb
@@ -166,8 +170,6 @@ files:
166
170
  - lib/braintree/transaction_line_item.rb
167
171
  - lib/braintree/transaction_line_item_gateway.rb
168
172
  - lib/braintree/transaction_search.rb
169
- - lib/braintree/transparent_redirect.rb
170
- - lib/braintree/transparent_redirect_gateway.rb
171
173
  - lib/braintree/unknown_payment_method.rb
172
174
  - lib/braintree/us_bank_account.rb
173
175
  - lib/braintree/us_bank_account_gateway.rb
@@ -188,14 +190,12 @@ files:
188
190
  - lib/braintree/xml/generator.rb
189
191
  - lib/braintree/xml/libxml.rb
190
192
  - lib/braintree/xml/parser.rb
191
- - lib/braintree/xml/rexml.rb
192
193
  - lib/ssl/api_braintreegateway_com.ca.crt
193
194
  - lib/ssl/securetrust_ca.crt
194
195
  - spec/fixtures/files/bt_logo.png
195
196
  - spec/fixtures/files/gif_extension_bt_logo.gif
196
197
  - spec/fixtures/files/malformed_pdf.pdf
197
198
  - spec/fixtures/files/too_long.pdf
198
- - spec/hacks/tcp_socket.rb
199
199
  - spec/integration/braintree/add_on_spec.rb
200
200
  - spec/integration/braintree/address_spec.rb
201
201
  - spec/integration/braintree/advanced_search_spec.rb
@@ -203,7 +203,6 @@ files:
203
203
  - spec/integration/braintree/braintree_gateway_spec.rb
204
204
  - spec/integration/braintree/client_api/client_token_spec.rb
205
205
  - spec/integration/braintree/client_api/spec_helper.rb
206
- - spec/integration/braintree/coinbase_spec.rb
207
206
  - spec/integration/braintree/credit_card_spec.rb
208
207
  - spec/integration/braintree/credit_card_verification_search_spec.rb
209
208
  - spec/integration/braintree/credit_card_verification_spec.rb
@@ -217,7 +216,6 @@ files:
217
216
  - spec/integration/braintree/error_codes_spec.rb
218
217
  - spec/integration/braintree/graphql_client_spec.rb
219
218
  - spec/integration/braintree/http_spec.rb
220
- - spec/integration/braintree/masterpass_card_spec.rb
221
219
  - spec/integration/braintree/merchant_account_spec.rb
222
220
  - spec/integration/braintree/merchant_spec.rb
223
221
  - spec/integration/braintree/oauth_spec.rb
@@ -235,7 +233,6 @@ files:
235
233
  - spec/integration/braintree/transaction_search_spec.rb
236
234
  - spec/integration/braintree/transaction_spec.rb
237
235
  - spec/integration/braintree/transaction_us_bank_account_spec.rb
238
- - spec/integration/braintree/transparent_redirect_spec.rb
239
236
  - spec/integration/braintree/us_bank_account_spec.rb
240
237
  - spec/integration/braintree/us_bank_account_verification_search_spec.rb
241
238
  - spec/integration/braintree/us_bank_account_verification_spec.rb
@@ -285,7 +282,6 @@ files:
285
282
  - spec/unit/braintree/transaction/paypal_details_spec.rb
286
283
  - spec/unit/braintree/transaction_search_spec.rb
287
284
  - spec/unit/braintree/transaction_spec.rb
288
- - spec/unit/braintree/transparent_redirect_spec.rb
289
285
  - spec/unit/braintree/unknown_payment_method_spec.rb
290
286
  - spec/unit/braintree/us_bank_account_spec.rb
291
287
  - spec/unit/braintree/us_bank_account_verification_search_spec.rb
@@ -296,7 +292,6 @@ files:
296
292
  - spec/unit/braintree/webhook_notification_spec.rb
297
293
  - spec/unit/braintree/xml/libxml_spec.rb
298
294
  - spec/unit/braintree/xml/parser_spec.rb
299
- - spec/unit/braintree/xml/rexml_spec.rb
300
295
  - spec/unit/braintree/xml_spec.rb
301
296
  - spec/unit/braintree_spec.rb
302
297
  - spec/unit/spec_helper.rb
@@ -307,6 +302,7 @@ metadata:
307
302
  bug_tracker_uri: https://github.com/braintree/braintree_ruby/issues
308
303
  changelog_uri: https://github.com/braintree/braintree_ruby/blob/master/CHANGELOG.md
309
304
  source_code_uri: https://github.com/braintree/braintree_ruby
305
+ documentation_uri: https://developers.braintreepayments.com/
310
306
  post_install_message:
311
307
  rdoc_options: []
312
308
  require_paths:
@@ -315,7 +311,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
315
311
  requirements:
316
312
  - - ">="
317
313
  - !ruby/object:Gem::Version
318
- version: '0'
314
+ version: 2.5.0
319
315
  required_rubygems_version: !ruby/object:Gem::Requirement
320
316
  requirements:
321
317
  - - ">="
@@ -325,5 +321,5 @@ requirements: []
325
321
  rubygems_version: 3.0.8
326
322
  signing_key:
327
323
  specification_version: 4
328
- summary: Braintree Gateway Ruby Client Library
324
+ summary: Braintree Ruby Server SDK
329
325
  test_files: []
@@ -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