transferzero-sdk 1.7.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +93 -0
  3. data/README.md +11 -4
  4. data/docs/Currency.md +0 -2
  5. data/docs/CurrencyExchange.md +0 -2
  6. data/docs/CurrencyOpposite.md +3 -3
  7. data/docs/Document.md +4 -0
  8. data/docs/PayoutMethod.md +1 -1
  9. data/docs/PayoutMethodCashProviderEnum.md +16 -0
  10. data/docs/PayoutMethodDetails.md +13 -1
  11. data/docs/PayoutMethodDetailsMobile.md +3 -1
  12. data/docs/PayoutMethodDetailsXOFCash.md +23 -0
  13. data/docs/PayoutMethodDetailsZARBank.md +35 -0
  14. data/docs/ProofOfPayment.md +23 -0
  15. data/docs/ProofOfPaymentListResponse.md +17 -0
  16. data/docs/Recipient.md +4 -0
  17. data/docs/RecipientStateReasonDetails.md +23 -0
  18. data/docs/RecipientsApi.md +62 -0
  19. data/docs/Sender.md +18 -8
  20. data/example/client.rb +55 -18
  21. data/lib/transferzero-sdk.rb +6 -0
  22. data/lib/transferzero-sdk/api/recipients_api.rb +54 -0
  23. data/lib/transferzero-sdk/api_client.rb +1 -1
  24. data/lib/transferzero-sdk/models/currency.rb +1 -11
  25. data/lib/transferzero-sdk/models/currency_exchange.rb +1 -11
  26. data/lib/transferzero-sdk/models/currency_opposite.rb +14 -14
  27. data/lib/transferzero-sdk/models/document.rb +21 -1
  28. data/lib/transferzero-sdk/models/payout_method.rb +1 -1
  29. data/lib/transferzero-sdk/models/payout_method_cash_provider_enum.rb +31 -0
  30. data/lib/transferzero-sdk/models/payout_method_details.rb +76 -5
  31. data/lib/transferzero-sdk/models/payout_method_details_mobile.rb +13 -4
  32. data/lib/transferzero-sdk/models/payout_method_details_xof_bank.rb +1 -1
  33. data/lib/transferzero-sdk/models/payout_method_details_xof_cash.rb +245 -0
  34. data/lib/transferzero-sdk/models/payout_method_details_xof_mobile.rb +1 -1
  35. data/lib/transferzero-sdk/models/payout_method_details_zar_bank.rb +324 -0
  36. data/lib/transferzero-sdk/models/payout_method_mobile_provider_enum.rb +3 -0
  37. data/lib/transferzero-sdk/models/proof_of_payment.rb +233 -0
  38. data/lib/transferzero-sdk/models/proof_of_payment_list_response.rb +204 -0
  39. data/lib/transferzero-sdk/models/recipient.rb +20 -1
  40. data/lib/transferzero-sdk/models/recipient_state_reason_details.rb +235 -0
  41. data/lib/transferzero-sdk/models/sender.rb +88 -14
  42. data/lib/transferzero-sdk/version.rb +1 -1
  43. data/spec/models/payout_method_cash_provider_enum_spec.rb +35 -0
  44. data/spec/models/payout_method_details_xof_cash_spec.rb +71 -0
  45. data/spec/models/payout_method_details_zar_bank_spec.rb +89 -0
  46. data/spec/models/proof_of_payment_list_response_spec.rb +41 -0
  47. data/spec/models/proof_of_payment_spec.rb +59 -0
  48. data/spec/models/recipient_state_reason_details_spec.rb +59 -0
  49. data/transferzero-sdk-1.10.0.gem +0 -0
  50. metadata +28 -2
@@ -38,9 +38,6 @@ class CurrencyExchange
38
38
  # The maximum amount allowed in a transaction
39
39
  attr_accessor :max
40
40
 
41
- # The margin set for transactions in this currency
42
- attr_accessor :margin
43
-
44
41
  # The equivalent of the currency to 1 USD
45
42
  attr_accessor :usd_equivalent
46
43
 
@@ -58,7 +55,6 @@ class CurrencyExchange
58
55
  :'primary' => :'primary',
59
56
  :'min' => :'min',
60
57
  :'max' => :'max',
61
- :'margin' => :'margin',
62
58
  :'usd_equivalent' => :'usd_equivalent',
63
59
  :'opposites' => :'opposites'
64
60
  }
@@ -75,7 +71,6 @@ class CurrencyExchange
75
71
  :'primary' => :'Boolean',
76
72
  :'min' => :'String',
77
73
  :'max' => :'String',
78
- :'margin' => :'String',
79
74
  :'usd_equivalent' => :'String',
80
75
  :'opposites' => :'Array<CurrencyOpposite>'
81
76
  }
@@ -135,10 +130,6 @@ class CurrencyExchange
135
130
  self.max = attributes[:'max']
136
131
  end
137
132
 
138
- if attributes.key?(:'margin')
139
- self.margin = attributes[:'margin']
140
- end
141
-
142
133
  if attributes.key?(:'usd_equivalent')
143
134
  self.usd_equivalent = attributes[:'usd_equivalent']
144
135
  end
@@ -176,7 +167,6 @@ class CurrencyExchange
176
167
  primary == o.primary &&
177
168
  min == o.min &&
178
169
  max == o.max &&
179
- margin == o.margin &&
180
170
  usd_equivalent == o.usd_equivalent &&
181
171
  opposites == o.opposites
182
172
  end
@@ -190,7 +180,7 @@ class CurrencyExchange
190
180
  # Calculates hash code according to all attributes.
191
181
  # @return [Integer] Hash code
192
182
  def hash
193
- [code, name, symbol, decimals, subunit_to_unit, primary, min, max, margin, usd_equivalent, opposites].hash
183
+ [code, name, symbol, decimals, subunit_to_unit, primary, min, max, usd_equivalent, opposites].hash
194
184
  end
195
185
 
196
186
  require 'active_support/core_ext/hash'
@@ -38,9 +38,6 @@ class CurrencyOpposite
38
38
  # The maximum amount allowed in a transaction
39
39
  attr_accessor :max
40
40
 
41
- # The margin set for transactions in this currency
42
- attr_accessor :margin
43
-
44
41
  # The equivalent of the currency to 1 USD
45
42
  attr_accessor :usd_equivalent
46
43
 
@@ -50,6 +47,9 @@ class CurrencyOpposite
50
47
  # Mark to market rate of this particular currency against the base one with the margin factored in
51
48
  attr_accessor :mtm_rate
52
49
 
50
+ # The margin set for transactions of this particular currency with the base one
51
+ attr_accessor :margin
52
+
53
53
  # Attribute mapping from ruby-style variable name to JSON key.
54
54
  def self.attribute_map
55
55
  {
@@ -61,10 +61,10 @@ class CurrencyOpposite
61
61
  :'primary' => :'primary',
62
62
  :'min' => :'min',
63
63
  :'max' => :'max',
64
- :'margin' => :'margin',
65
64
  :'usd_equivalent' => :'usd_equivalent',
66
65
  :'rate' => :'rate',
67
- :'mtm_rate' => :'mtm_rate'
66
+ :'mtm_rate' => :'mtm_rate',
67
+ :'margin' => :'margin'
68
68
  }
69
69
  end
70
70
 
@@ -79,10 +79,10 @@ class CurrencyOpposite
79
79
  :'primary' => :'Boolean',
80
80
  :'min' => :'String',
81
81
  :'max' => :'String',
82
- :'margin' => :'String',
83
82
  :'usd_equivalent' => :'String',
84
83
  :'rate' => :'Float',
85
- :'mtm_rate' => :'Float'
84
+ :'mtm_rate' => :'Float',
85
+ :'margin' => :'String'
86
86
  }
87
87
  end
88
88
 
@@ -140,10 +140,6 @@ class CurrencyOpposite
140
140
  self.max = attributes[:'max']
141
141
  end
142
142
 
143
- if attributes.key?(:'margin')
144
- self.margin = attributes[:'margin']
145
- end
146
-
147
143
  if attributes.key?(:'usd_equivalent')
148
144
  self.usd_equivalent = attributes[:'usd_equivalent']
149
145
  end
@@ -155,6 +151,10 @@ class CurrencyOpposite
155
151
  if attributes.key?(:'mtm_rate')
156
152
  self.mtm_rate = attributes[:'mtm_rate']
157
153
  end
154
+
155
+ if attributes.key?(:'margin')
156
+ self.margin = attributes[:'margin']
157
+ end
158
158
  end
159
159
 
160
160
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -183,10 +183,10 @@ class CurrencyOpposite
183
183
  primary == o.primary &&
184
184
  min == o.min &&
185
185
  max == o.max &&
186
- margin == o.margin &&
187
186
  usd_equivalent == o.usd_equivalent &&
188
187
  rate == o.rate &&
189
- mtm_rate == o.mtm_rate
188
+ mtm_rate == o.mtm_rate &&
189
+ margin == o.margin
190
190
  end
191
191
 
192
192
  # @see the `==` method
@@ -198,7 +198,7 @@ class CurrencyOpposite
198
198
  # Calculates hash code according to all attributes.
199
199
  # @return [Integer] Hash code
200
200
  def hash
201
- [code, name, symbol, decimals, subunit_to_unit, primary, min, max, margin, usd_equivalent, rate, mtm_rate].hash
201
+ [code, name, symbol, decimals, subunit_to_unit, primary, min, max, usd_equivalent, rate, mtm_rate, margin].hash
202
202
  end
203
203
 
204
204
  require 'active_support/core_ext/hash'
@@ -44,6 +44,12 @@ class Document
44
44
 
45
45
  attr_accessor :id
46
46
 
47
+ # Document ID issued by government
48
+ attr_accessor :document_id
49
+
50
+ # Document expiry date issued by government
51
+ attr_accessor :expiry_date
52
+
47
53
  # The fields that have some problems and don't pass validation
48
54
  attr_accessor :errors
49
55
 
@@ -83,6 +89,8 @@ class Document
83
89
  :'document_type' => :'document_type',
84
90
  :'issuing_country' => :'issuing_country',
85
91
  :'id' => :'id',
92
+ :'document_id' => :'document_id',
93
+ :'expiry_date' => :'expiry_date',
86
94
  :'errors' => :'errors'
87
95
  }
88
96
  end
@@ -101,6 +109,8 @@ class Document
101
109
  :'document_type' => :'String',
102
110
  :'issuing_country' => :'String',
103
111
  :'id' => :'String',
112
+ :'document_id' => :'String',
113
+ :'expiry_date' => :'Date',
104
114
  :'errors' => :'Hash<String, Array<ValidationErrorDescription>>'
105
115
  }
106
116
  end
@@ -164,6 +174,14 @@ class Document
164
174
  self.id = attributes[:'id']
165
175
  end
166
176
 
177
+ if attributes.key?(:'document_id')
178
+ self.document_id = attributes[:'document_id']
179
+ end
180
+
181
+ if attributes.key?(:'expiry_date')
182
+ self.expiry_date = attributes[:'expiry_date']
183
+ end
184
+
167
185
  if attributes.key?(:'errors')
168
186
  if (value = attributes[:'errors']).is_a?(Hash)
169
187
  self.errors = value
@@ -222,6 +240,8 @@ class Document
222
240
  document_type == o.document_type &&
223
241
  issuing_country == o.issuing_country &&
224
242
  id == o.id &&
243
+ document_id == o.document_id &&
244
+ expiry_date == o.expiry_date &&
225
245
  errors == o.errors
226
246
  end
227
247
 
@@ -234,7 +254,7 @@ class Document
234
254
  # Calculates hash code according to all attributes.
235
255
  # @return [Integer] Hash code
236
256
  def hash
237
- [upload, url, upload_file_name, metadata, upload_content_type, upload_file_size, category, side, document_type, issuing_country, id, errors].hash
257
+ [upload, url, upload_file_name, metadata, upload_content_type, upload_file_size, category, side, document_type, issuing_country, id, document_id, expiry_date, errors].hash
238
258
  end
239
259
 
240
260
  require 'active_support/core_ext/hash'
@@ -15,7 +15,7 @@ require 'date'
15
15
  module TransferZero
16
16
  # This describes the specific details on how the payment has to be routed to the recipient.
17
17
  class PayoutMethod
18
- # Contains the currency to send the money to, and the type of the money movement Commonly used payout types are: - `NGN::Bank` - for Nigerian bank account payments. - `NGN::Mobile` - for Nigerian mobile money payments. - `GHS::Bank` - for Ghanaian bank account payments. - `GHS::Mobile` - for Ghanaian mobile money payments. - `UGX::Mobile` - for Ugandan mobile money payments. - `TZS::Mobile` - for Tanzanian mobile money payments. - `XOF::Mobile` - for Senegalese mobile money payments. - `XOF::Bank` - for Senegalese bank account payments. *** Currently in Beta phase *** - `XOF::Cash` - for Senegalese cash remittance payments. - `MAD::Cash` - for Moroccan cash remittance payments. - `EUR::Bank` - for IBAN bank transfers in EUR. - `GBP::Bank` - for IBAN bank transfers in GBP. You can also send funds to the internal balance using `CCY::Balance`, where `CCY` is the appropriate currency. See [Collection from senders](https://docs.transferzero.com/docs/additional-features/#collections-from-senders) for more info on how to collect money into internal balance
18
+ # Contains the currency to send the money to, and the type of the money movement Commonly used payout types are: - `NGN::Bank` - for Nigerian bank account payments. - `NGN::Mobile` - for Nigerian mobile money payments. - `GHS::Bank` - for Ghanaian bank account payments. - `GHS::Mobile` - for Ghanaian mobile money payments. - `UGX::Mobile` - for Ugandan mobile money payments. - `TZS::Mobile` - for Tanzanian mobile money payments. - `XOF::Mobile` - for Senegalese mobile money payments. - `XOF::Bank` - for Senegalese bank account payments. - `XOF::Cash` - for Senegalese cash remittance payments. - `MAD::Cash` - for Moroccan cash remittance payments. - `EUR::Bank` - for IBAN bank transfers in EUR. - `GBP::Bank` - for IBAN bank and FP accounts transfers in GBP. - `ZAR::Bank` - for South Africa bank account payments. You can also send funds to the internal balance using `CCY::Balance`, where `CCY` is the appropriate currency. See [Collection from senders](https://docs.transferzero.com/docs/additional-features/#collections-from-senders) for more info on how to collect money into internal balance
19
19
  attr_accessor :type
20
20
 
21
21
  attr_accessor :details
@@ -0,0 +1,31 @@
1
+ =begin
2
+ #TransferZero API
3
+
4
+ #Reference documentation for the TransferZero API V1
5
+
6
+ OpenAPI spec version: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-beta3
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module TransferZero
16
+ class PayoutMethodCashProviderEnum
17
+
18
+ WARI = "wari".freeze
19
+ WIZALL = "wizall".freeze
20
+
21
+ # Builds the enum from string
22
+ # @param [String] The enum value in the form of the string
23
+ # @return [String] The enum value
24
+ def build_from_hash(value)
25
+ constantValues = PayoutMethodCashProviderEnum.constants.select { |c| PayoutMethodCashProviderEnum::const_get(c) == value }
26
+ raise "Invalid ENUM value #{value} for class #PayoutMethodCashProviderEnum" if constantValues.empty? && !value.empty?
27
+ value
28
+ end
29
+ end
30
+
31
+ end
@@ -34,6 +34,8 @@ class PayoutMethodDetails
34
34
 
35
35
  attr_accessor :bank_country
36
36
 
37
+ attr_accessor :cash_provider
38
+
37
39
  attr_accessor :sort_code
38
40
 
39
41
  attr_accessor :bic
@@ -60,6 +62,16 @@ class PayoutMethodDetails
60
62
 
61
63
  attr_accessor :address
62
64
 
65
+ attr_accessor :street
66
+
67
+ attr_accessor :postal_code
68
+
69
+ attr_accessor :city
70
+
71
+ attr_accessor :email
72
+
73
+ attr_accessor :transfer_reason_code
74
+
63
75
  # Attribute mapping from ruby-style variable name to JSON key.
64
76
  def self.attribute_map
65
77
  {
@@ -73,6 +85,7 @@ class PayoutMethodDetails
73
85
  :'iban' => :'iban',
74
86
  :'bank_name' => :'bank_name',
75
87
  :'bank_country' => :'bank_country',
88
+ :'cash_provider' => :'cash_provider',
76
89
  :'sort_code' => :'sort_code',
77
90
  :'bic' => :'bic',
78
91
  :'sender_identity_card_type' => :'sender_identity_card_type',
@@ -85,7 +98,12 @@ class PayoutMethodDetails
85
98
  :'identity_card_id' => :'identity_card_id',
86
99
  :'reference' => :'reference',
87
100
  :'name' => :'name',
88
- :'address' => :'address'
101
+ :'address' => :'address',
102
+ :'street' => :'street',
103
+ :'postal_code' => :'postal_code',
104
+ :'city' => :'city',
105
+ :'email' => :'email',
106
+ :'transfer_reason_code' => :'transfer_reason_code'
89
107
  }
90
108
  end
91
109
 
@@ -102,6 +120,7 @@ class PayoutMethodDetails
102
120
  :'iban' => :'String',
103
121
  :'bank_name' => :'String',
104
122
  :'bank_country' => :'String',
123
+ :'cash_provider' => :'PayoutMethodCashProviderEnum',
105
124
  :'sort_code' => :'String',
106
125
  :'bic' => :'String',
107
126
  :'sender_identity_card_type' => :'PayoutMethodIdentityCardTypeEnum',
@@ -114,7 +133,12 @@ class PayoutMethodDetails
114
133
  :'identity_card_id' => :'String',
115
134
  :'reference' => :'String',
116
135
  :'name' => :'String',
117
- :'address' => :'String'
136
+ :'address' => :'String',
137
+ :'street' => :'String',
138
+ :'postal_code' => :'String',
139
+ :'city' => :'String',
140
+ :'email' => :'String',
141
+ :'transfer_reason_code' => :'String'
118
142
  }
119
143
  end
120
144
 
@@ -130,7 +154,9 @@ class PayoutMethodDetails
130
154
  :'PayoutMethodDetailsMobile',
131
155
  :'PayoutMethodDetailsNGNBank',
132
156
  :'PayoutMethodDetailsXOFBank',
133
- :'PayoutMethodDetailsXOFMobile'
157
+ :'PayoutMethodDetailsXOFCash',
158
+ :'PayoutMethodDetailsXOFMobile',
159
+ :'PayoutMethodDetailsZARBank'
134
160
  ]
135
161
  end
136
162
 
@@ -189,6 +215,10 @@ class PayoutMethodDetails
189
215
  self.bank_country = attributes[:'bank_country']
190
216
  end
191
217
 
218
+ if attributes.key?(:'cash_provider')
219
+ self.cash_provider = attributes[:'cash_provider']
220
+ end
221
+
192
222
  if attributes.key?(:'sort_code')
193
223
  self.sort_code = attributes[:'sort_code']
194
224
  end
@@ -240,6 +270,26 @@ class PayoutMethodDetails
240
270
  if attributes.key?(:'address')
241
271
  self.address = attributes[:'address']
242
272
  end
273
+
274
+ if attributes.key?(:'street')
275
+ self.street = attributes[:'street']
276
+ end
277
+
278
+ if attributes.key?(:'postal_code')
279
+ self.postal_code = attributes[:'postal_code']
280
+ end
281
+
282
+ if attributes.key?(:'city')
283
+ self.city = attributes[:'city']
284
+ end
285
+
286
+ if attributes.key?(:'email')
287
+ self.email = attributes[:'email']
288
+ end
289
+
290
+ if attributes.key?(:'transfer_reason_code')
291
+ self.transfer_reason_code = attributes[:'transfer_reason_code']
292
+ end
243
293
  end
244
294
 
245
295
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -310,6 +360,18 @@ class PayoutMethodDetails
310
360
  invalid_properties.push('invalid value for "address", address cannot be nil.')
311
361
  end
312
362
 
363
+ if @street.nil?
364
+ invalid_properties.push('invalid value for "street", street cannot be nil.')
365
+ end
366
+
367
+ if @postal_code.nil?
368
+ invalid_properties.push('invalid value for "postal_code", postal_code cannot be nil.')
369
+ end
370
+
371
+ if @city.nil?
372
+ invalid_properties.push('invalid value for "city", city cannot be nil.')
373
+ end
374
+
313
375
  invalid_properties
314
376
  end
315
377
 
@@ -332,6 +394,9 @@ class PayoutMethodDetails
332
394
  return false if @sender_gender.nil?
333
395
  return false if @name.nil?
334
396
  return false if @address.nil?
397
+ return false if @street.nil?
398
+ return false if @postal_code.nil?
399
+ return false if @city.nil?
335
400
  _one_of_found = false
336
401
  openapi_one_of.each do |_class|
337
402
  _one_of = TransferZero.const_get(_class).build_from_hash(self.to_hash)
@@ -366,6 +431,7 @@ class PayoutMethodDetails
366
431
  iban == o.iban &&
367
432
  bank_name == o.bank_name &&
368
433
  bank_country == o.bank_country &&
434
+ cash_provider == o.cash_provider &&
369
435
  sort_code == o.sort_code &&
370
436
  bic == o.bic &&
371
437
  sender_identity_card_type == o.sender_identity_card_type &&
@@ -378,7 +444,12 @@ class PayoutMethodDetails
378
444
  identity_card_id == o.identity_card_id &&
379
445
  reference == o.reference &&
380
446
  name == o.name &&
381
- address == o.address
447
+ address == o.address &&
448
+ street == o.street &&
449
+ postal_code == o.postal_code &&
450
+ city == o.city &&
451
+ email == o.email &&
452
+ transfer_reason_code == o.transfer_reason_code
382
453
  end
383
454
 
384
455
  # @see the `==` method
@@ -390,7 +461,7 @@ class PayoutMethodDetails
390
461
  # Calculates hash code according to all attributes.
391
462
  # @return [Integer] Hash code
392
463
  def hash
393
- [first_name, last_name, bank_code, bank_account, bank_account_type, phone_number, mobile_provider, iban, bank_name, bank_country, sort_code, bic, sender_identity_card_type, sender_identity_card_id, sender_city_of_birth, sender_country_of_birth, sender_gender, reason, identity_card_type, identity_card_id, reference, name, address].hash
464
+ [first_name, last_name, bank_code, bank_account, bank_account_type, phone_number, mobile_provider, iban, bank_name, bank_country, cash_provider, sort_code, bic, sender_identity_card_type, sender_identity_card_id, sender_city_of_birth, sender_country_of_birth, sender_gender, reason, identity_card_type, identity_card_id, reference, name, address, street, postal_code, city, email, transfer_reason_code].hash
394
465
  end
395
466
 
396
467
  require 'active_support/core_ext/hash'
@@ -21,12 +21,15 @@ class PayoutMethodDetailsMobile
21
21
 
22
22
  attr_accessor :phone_number
23
23
 
24
+ attr_accessor :mobile_provider
25
+
24
26
  # Attribute mapping from ruby-style variable name to JSON key.
25
27
  def self.attribute_map
26
28
  {
27
29
  :'first_name' => :'first_name',
28
30
  :'last_name' => :'last_name',
29
- :'phone_number' => :'phone_number'
31
+ :'phone_number' => :'phone_number',
32
+ :'mobile_provider' => :'mobile_provider'
30
33
  }
31
34
  end
32
35
 
@@ -35,7 +38,8 @@ class PayoutMethodDetailsMobile
35
38
  {
36
39
  :'first_name' => :'String',
37
40
  :'last_name' => :'String',
38
- :'phone_number' => :'String'
41
+ :'phone_number' => :'String',
42
+ :'mobile_provider' => :'PayoutMethodMobileProviderEnum'
39
43
  }
40
44
  end
41
45
 
@@ -65,6 +69,10 @@ class PayoutMethodDetailsMobile
65
69
  if attributes.key?(:'phone_number')
66
70
  self.phone_number = attributes[:'phone_number']
67
71
  end
72
+
73
+ if attributes.key?(:'mobile_provider')
74
+ self.mobile_provider = attributes[:'mobile_provider']
75
+ end
68
76
  end
69
77
 
70
78
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -102,7 +110,8 @@ class PayoutMethodDetailsMobile
102
110
  self.class == o.class &&
103
111
  first_name == o.first_name &&
104
112
  last_name == o.last_name &&
105
- phone_number == o.phone_number
113
+ phone_number == o.phone_number &&
114
+ mobile_provider == o.mobile_provider
106
115
  end
107
116
 
108
117
  # @see the `==` method
@@ -114,7 +123,7 @@ class PayoutMethodDetailsMobile
114
123
  # Calculates hash code according to all attributes.
115
124
  # @return [Integer] Hash code
116
125
  def hash
117
- [first_name, last_name, phone_number].hash
126
+ [first_name, last_name, phone_number, mobile_provider].hash
118
127
  end
119
128
 
120
129
  require 'active_support/core_ext/hash'