transferzero-sdk 1.7.0 → 1.11.0

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 (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'