mangopay 3.0.25.pre.alpha.pre.20 → 3.0.25

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +28 -28
  3. data/.rspec +2 -2
  4. data/.travis.yml +4 -13
  5. data/Gemfile +2 -2
  6. data/LICENSE +20 -20
  7. data/README.md +126 -126
  8. data/bin/mangopay +9 -9
  9. data/lib/generators/mangopay/install_generator.rb +60 -60
  10. data/lib/generators/templates/mangopay.rb.erb +5 -5
  11. data/lib/mangopay.rb +225 -225
  12. data/lib/mangopay/authorization_token.rb +88 -88
  13. data/lib/mangopay/bank_account.rb +38 -38
  14. data/lib/mangopay/card.rb +8 -8
  15. data/lib/mangopay/card_registration.rb +9 -9
  16. data/lib/mangopay/client.rb +74 -74
  17. data/lib/mangopay/dispute.rb +130 -130
  18. data/lib/mangopay/errors.rb +61 -61
  19. data/lib/mangopay/event.rb +18 -18
  20. data/lib/mangopay/filter_parameters.rb +46 -46
  21. data/lib/mangopay/hook.rb +9 -9
  22. data/lib/mangopay/http_calls.rb +85 -85
  23. data/lib/mangopay/json.rb +14 -14
  24. data/lib/mangopay/kyc_document.rb +70 -70
  25. data/lib/mangopay/legal_user.rb +15 -15
  26. data/lib/mangopay/mandate.rb +32 -32
  27. data/lib/mangopay/natural_user.rb +14 -14
  28. data/lib/mangopay/pay_in.rb +85 -85
  29. data/lib/mangopay/pay_out.rb +14 -14
  30. data/lib/mangopay/pre_authorization.rb +13 -13
  31. data/lib/mangopay/refund.rb +7 -7
  32. data/lib/mangopay/report.rb +17 -17
  33. data/lib/mangopay/resource.rb +21 -21
  34. data/lib/mangopay/temp.rb +74 -74
  35. data/lib/mangopay/transaction.rb +24 -24
  36. data/lib/mangopay/transfer.rb +9 -9
  37. data/lib/mangopay/user.rb +43 -43
  38. data/lib/mangopay/version.rb +3 -3
  39. data/lib/mangopay/wallet.rb +17 -17
  40. data/mangopay.gemspec +30 -31
  41. data/spec/mangopay/authorization_token_spec.rb +70 -70
  42. data/spec/mangopay/bank_account_spec.rb +97 -97
  43. data/spec/mangopay/card_registration_spec.rb +73 -73
  44. data/spec/mangopay/client_spec.rb +110 -110
  45. data/spec/mangopay/configuration_spec.rb +95 -95
  46. data/spec/mangopay/dispute_spec.rb +262 -262
  47. data/spec/mangopay/event_spec.rb +31 -31
  48. data/spec/mangopay/fetch_filters_spec.rb +63 -63
  49. data/spec/mangopay/hook_spec.rb +37 -37
  50. data/spec/mangopay/idempotency_spec.rb +41 -41
  51. data/spec/mangopay/kyc_document_spec.rb +103 -103
  52. data/spec/mangopay/log_requests_filter_spec.rb +25 -25
  53. data/spec/mangopay/mandate_spec.rb +92 -92
  54. data/spec/mangopay/payin_bankwire_direct_spec.rb +74 -74
  55. data/spec/mangopay/payin_card_direct_spec.rb +68 -68
  56. data/spec/mangopay/payin_card_web_spec.rb +38 -38
  57. data/spec/mangopay/payin_directdebit_direct_spec.rb +37 -37
  58. data/spec/mangopay/payin_directdebit_web_spec.rb +38 -38
  59. data/spec/mangopay/payin_paypal_web_spec.rb +38 -38
  60. data/spec/mangopay/payin_preauthorized_direct_spec.rb +68 -68
  61. data/spec/mangopay/payout_bankwire_spec.rb +54 -54
  62. data/spec/mangopay/preauthorization_spec.rb +42 -42
  63. data/spec/mangopay/refund_spec.rb +21 -21
  64. data/spec/mangopay/report_spec.rb +39 -39
  65. data/spec/mangopay/shared_resources.rb +381 -381
  66. data/spec/mangopay/temp_paymentcard_spec.rb +31 -31
  67. data/spec/mangopay/transaction_spec.rb +54 -54
  68. data/spec/mangopay/transfer_spec.rb +69 -69
  69. data/spec/mangopay/user_spec.rb +137 -137
  70. data/spec/mangopay/wallet_spec.rb +80 -80
  71. data/spec/spec_helper.rb +31 -31
  72. metadata +5 -5
@@ -1,42 +1,42 @@
1
- describe MangoPay::PreAuthorization do
2
- include_context 'users'
3
- include_context 'payins'
4
-
5
- describe 'CREATE' do
6
- it 'creates a new card pre-authorization' do
7
- cardreg = new_card_registration_completed
8
- created = new_card_preauthorization
9
- expect(created['Id']).not_to be_nil
10
- expect(created['Id'].to_i).to be > 0
11
- expect(created['CardId']).to eq(cardreg['CardId'])
12
- expect(created['AuthorId']).to eq(new_natural_user["Id"])
13
- expect(created['PayInId']).to be_nil
14
- expect(created['Status']).to eq('SUCCEEDED')
15
- expect(created['PaymentStatus']).to eq('WAITING')
16
- expect(created['PaymentType']).to eq('CARD')
17
- expect(created['ExecutionType']).to eq('DIRECT')
18
- end
19
- end
20
-
21
- describe 'UPDATE' do
22
- it 'updates a card pre-authorization' do
23
- created = new_card_preauthorization
24
- updated = MangoPay::PreAuthorization.update(created['Id'] ,{
25
- PaymentStatus: 'CANCELED'
26
- })
27
- expect(updated['PaymentStatus']).to eq('CANCELED')
28
- end
29
- end
30
-
31
- describe 'FETCH' do
32
- it 'fetches a card pre-authorization' do
33
- created = new_card_preauthorization
34
- fetched = MangoPay::PreAuthorization.fetch(created['Id'])
35
- expect(fetched['Id']).to eq(created['Id'])
36
- expect(fetched['CardId']).to eq(created['CardId'])
37
- expect(fetched['AuthorId']).to eq(created['AuthorId'])
38
- expect(fetched['Tag']).to eq(created['Tag'])
39
- end
40
- end
41
-
42
- end
1
+ describe MangoPay::PreAuthorization do
2
+ include_context 'users'
3
+ include_context 'payins'
4
+
5
+ describe 'CREATE' do
6
+ it 'creates a new card pre-authorization' do
7
+ cardreg = new_card_registration_completed
8
+ created = new_card_preauthorization
9
+ expect(created['Id']).not_to be_nil
10
+ expect(created['Id'].to_i).to be > 0
11
+ expect(created['CardId']).to eq(cardreg['CardId'])
12
+ expect(created['AuthorId']).to eq(new_natural_user["Id"])
13
+ expect(created['PayInId']).to be_nil
14
+ expect(created['Status']).to eq('SUCCEEDED')
15
+ expect(created['PaymentStatus']).to eq('WAITING')
16
+ expect(created['PaymentType']).to eq('CARD')
17
+ expect(created['ExecutionType']).to eq('DIRECT')
18
+ end
19
+ end
20
+
21
+ describe 'UPDATE' do
22
+ it 'updates a card pre-authorization' do
23
+ created = new_card_preauthorization
24
+ updated = MangoPay::PreAuthorization.update(created['Id'] ,{
25
+ PaymentStatus: 'CANCELED'
26
+ })
27
+ expect(updated['PaymentStatus']).to eq('CANCELED')
28
+ end
29
+ end
30
+
31
+ describe 'FETCH' do
32
+ it 'fetches a card pre-authorization' do
33
+ created = new_card_preauthorization
34
+ fetched = MangoPay::PreAuthorization.fetch(created['Id'])
35
+ expect(fetched['Id']).to eq(created['Id'])
36
+ expect(fetched['CardId']).to eq(created['CardId'])
37
+ expect(fetched['AuthorId']).to eq(created['AuthorId'])
38
+ expect(fetched['Tag']).to eq(created['Tag'])
39
+ end
40
+ end
41
+
42
+ end
@@ -1,21 +1,21 @@
1
- describe MangoPay::Refund do
2
- include_context 'transfers'
3
-
4
- describe 'FETCH' do
5
- it 'fetches a refund' do
6
- transfer = new_transfer
7
- resource = MangoPay::Transfer.refund(transfer['Id'], { AuthorId: transfer['AuthorId'] })
8
-
9
- refund = MangoPay::Refund.fetch(resource['Id'])
10
-
11
- expect(refund['Id']).not_to be_nil
12
- expect(refund['Status']).to eq('SUCCEEDED')
13
- expect(refund['Type']).to eq('TRANSFER')
14
- expect(refund['Nature']).to eq('REFUND')
15
- expect(refund['InitialTransactionType']).to eq('TRANSFER')
16
- expect(refund['InitialTransactionId']).to eq(transfer['Id'])
17
- expect(refund['DebitedWalletId']).to eq(transfer['CreditedWalletId'])
18
- expect(refund['CreditedWalletId']).to eq(transfer['DebitedWalletId'])
19
- end
20
- end
21
- end
1
+ describe MangoPay::Refund do
2
+ include_context 'transfers'
3
+
4
+ describe 'FETCH' do
5
+ it 'fetches a refund' do
6
+ transfer = new_transfer
7
+ resource = MangoPay::Transfer.refund(transfer['Id'], { AuthorId: transfer['AuthorId'] })
8
+
9
+ refund = MangoPay::Refund.fetch(resource['Id'])
10
+
11
+ expect(refund['Id']).not_to be_nil
12
+ expect(refund['Status']).to eq('SUCCEEDED')
13
+ expect(refund['Type']).to eq('TRANSFER')
14
+ expect(refund['Nature']).to eq('REFUND')
15
+ expect(refund['InitialTransactionType']).to eq('TRANSFER')
16
+ expect(refund['InitialTransactionId']).to eq(transfer['Id'])
17
+ expect(refund['DebitedWalletId']).to eq(transfer['CreditedWalletId'])
18
+ expect(refund['CreditedWalletId']).to eq(transfer['DebitedWalletId'])
19
+ end
20
+ end
21
+ end
@@ -1,39 +1,39 @@
1
- describe MangoPay::Report do
2
-
3
- def create
4
- params = {
5
- Tag: 'custom meta',
6
- CallbackURL: 'http://www.my-site.com/callbackURL/',
7
- DownloadFormat: 'CSV',
8
- Sort: 'CreationDate:DESC',
9
- Preview: false,
10
- Filters: {},
11
- Columns: [ 'Id', 'CreationDate' ]
12
- }
13
- MangoPay::Report.create(params)
14
- end
15
-
16
- describe 'CREATE' do
17
- it 'creates a report' do
18
- created = create
19
- expect(created['Id']).to_not be_nil
20
- end
21
- end
22
-
23
- describe 'FETCH' do
24
-
25
- it 'fetches a report' do
26
- created = create
27
- fetched = MangoPay::Report.fetch(created['Id'])
28
- expect(fetched['Id']).to eq(created['Id'])
29
- end
30
-
31
- it 'fetches all the reports' do
32
- reports = MangoPay::Report.fetch()
33
- expect(reports).to be_kind_of(Array)
34
- expect(reports).not_to be_empty
35
- end
36
-
37
- end
38
-
39
- end
1
+ describe MangoPay::Report do
2
+
3
+ def create
4
+ params = {
5
+ Tag: 'custom meta',
6
+ CallbackURL: 'http://www.my-site.com/callbackURL/',
7
+ DownloadFormat: 'CSV',
8
+ Sort: 'CreationDate:DESC',
9
+ Preview: false,
10
+ Filters: {},
11
+ Columns: [ 'Id', 'CreationDate' ]
12
+ }
13
+ MangoPay::Report.create(params)
14
+ end
15
+
16
+ describe 'CREATE' do
17
+ it 'creates a report' do
18
+ created = create
19
+ expect(created['Id']).to_not be_nil
20
+ end
21
+ end
22
+
23
+ describe 'FETCH' do
24
+
25
+ it 'fetches a report' do
26
+ created = create
27
+ fetched = MangoPay::Report.fetch(created['Id'])
28
+ expect(fetched['Id']).to eq(created['Id'])
29
+ end
30
+
31
+ it 'fetches all the reports' do
32
+ reports = MangoPay::Report.fetch()
33
+ expect(reports).to be_kind_of(Array)
34
+ expect(reports).not_to be_empty
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -1,381 +1,381 @@
1
- ###############################################
2
- shared_context 'users' do
3
- ###############################################
4
-
5
- let(:new_natural_user) { create_new_natural_user }
6
- def define_new_natural_user
7
- {
8
- Tag: 'Test natural user',
9
- Email: 'my@email.com',
10
- FirstName: 'John',
11
- LastName: 'Doe',
12
- Address: {
13
- AddressLine1: 'Le Palais Royal',
14
- AddressLine2: '8 Rue de Montpensier',
15
- City: 'Paris',
16
- Region: '',
17
- PostalCode: '75001',
18
- Country: 'FR'
19
- },
20
- Birthday: 1300186358,
21
- Birthplace: 'Paris',
22
- Nationality: 'FR',
23
- CountryOfResidence: 'FR',
24
- Occupation: 'Worker',
25
- IncomeRange: 1
26
- }
27
- end
28
- def create_new_natural_user
29
- MangoPay::NaturalUser.create(define_new_natural_user)
30
- end
31
-
32
- let(:new_legal_user) {
33
- MangoPay::LegalUser.create({
34
- Name: 'Super',
35
- Email: 'super@email.com',
36
- LegalPersonType: 'BUSINESS',
37
- HeadquartersAddress: {
38
- AddressLine1: '6 Parvis Notre-Dame',
39
- AddressLine2: 'Pl. Jean-Paul II',
40
- City: 'Paris',
41
- Region: '',
42
- PostalCode: '75004',
43
- Country: 'FR'
44
- },
45
- LegalRepresentativeFirstName: 'John',
46
- LegalRepresentativeLastName: 'Doe',
47
- LegalRepresentativeAdress: {
48
- AddressLine1: '38 Rue de Montpensier',
49
- AddressLine2: '',
50
- City: 'Paris',
51
- Region: '',
52
- PostalCode: '75001',
53
- Country: 'FR'
54
- },
55
- LegalRepresentativeEmail: 'john@doe.com',
56
- LegalRepresentativeBirthday: 1300186358,
57
- LegalRepresentativeNationality: 'FR',
58
- LegalRepresentativeCountryOfResidence: 'FR',
59
- Statute: '',
60
- ProofOfRegistration: '',
61
- ShareholderDeclaration: ''
62
- })
63
- }
64
- end
65
-
66
- ###############################################
67
- shared_context 'wallets' do
68
- ###############################################
69
- include_context 'users'
70
-
71
- let(:new_wallet) { create_new_wallet(new_natural_user) }
72
- let(:new_wallet_legal) { create_new_wallet(new_legal_user) }
73
- def create_new_wallet(user)
74
- MangoPay::Wallet.create({
75
- Owners: [user['Id']],
76
- Description: 'A test wallet',
77
- Currency: 'EUR',
78
- Tag: 'Test wallet'
79
- })
80
- end
81
-
82
- def wallets_check_amounts(wlt1, amnt1, wlt2 = nil, amnt2 = nil)
83
- expect(wlt1['Balance']['Amount']).to eq amnt1
84
- expect(wlt2['Balance']['Amount']).to eq amnt2 if wlt2
85
- end
86
-
87
- def wallets_reload_and_check_amounts(wlt1, amnt1, wlt2 = nil, amnt2 = nil)
88
- wlt1 = MangoPay::Wallet::fetch(wlt1['Id'])
89
- wlt2 = MangoPay::Wallet::fetch(wlt2['Id']) if wlt2
90
- wallets_check_amounts(wlt1, amnt1, wlt2, amnt2)
91
- end
92
- end
93
-
94
- ###############################################
95
- shared_context 'bank_accounts' do
96
- ###############################################
97
- include_context 'users'
98
-
99
- let(:new_bank_account) {
100
- MangoPay::BankAccount.create(new_natural_user['Id'], {
101
- Type: 'IBAN',
102
- OwnerName: 'John',
103
- OwnerAddress: {
104
- AddressLine1: 'Le Palais Royal',
105
- AddressLine2: '8 Rue de Montpensier',
106
- City: 'Paris',
107
- Region: '',
108
- PostalCode: '75001',
109
- Country: 'FR'
110
- },
111
- IBAN: 'FR7618829754160173622224154',
112
- BIC: 'CMBRFR2BCME',
113
- Tag: 'Test bank account'
114
- })
115
- }
116
- end
117
-
118
- ###############################################
119
- shared_context 'mandates' do
120
- ###############################################
121
- include_context 'bank_accounts'
122
-
123
- let(:new_mandate) { create_new_mandate() }
124
- def create_new_mandate()
125
- MangoPay::Mandate.create({
126
- BankAccountId: new_bank_account['Id'],
127
- Culture: 'FR',
128
- ReturnURL: MangoPay.configuration.root_url,
129
- Tag: 'Test mandate'
130
- })
131
- end
132
- end
133
-
134
- ###############################################
135
- shared_context 'kyc_documents' do
136
- ###############################################
137
- include_context 'users'
138
-
139
- let(:new_document) { create_new_document(new_natural_user) }
140
- def create_new_document(user)
141
- MangoPay::KycDocument.create(user['Id'], {
142
- Type: 'IDENTITY_PROOF',
143
- Tag: 'Test document'
144
- })
145
- end
146
- end
147
-
148
- ###############################################
149
- shared_context 'payins' do
150
- ###############################################
151
- include_context 'users'
152
- include_context 'wallets'
153
- include_context 'mandates'
154
-
155
- ###############################################
156
- # directdebit/web
157
- ###############################################
158
-
159
- let(:new_payin_directdebit_web) {
160
- MangoPay::PayIn::DirectDebit::Web.create({
161
- AuthorId: new_natural_user['Id'],
162
- CreditedUserId: new_wallet['Owners'][0],
163
- CreditedWalletId: new_wallet['Id'],
164
- DebitedFunds: { Currency: 'EUR', Amount: 1000 },
165
- Fees: { Currency: 'EUR', Amount: 0 },
166
- DirectDebitType: 'GIROPAY',
167
- ReturnURL: MangoPay.configuration.root_url,
168
- Culture: 'FR',
169
- Tag: 'Test PayIn/DirectDebit/Web'
170
- })
171
- }
172
-
173
- ###############################################
174
- # paypal/web
175
- ###############################################
176
-
177
- let(:new_payin_paypal_web) {
178
- MangoPay::PayIn::PayPal::Web.create({
179
- AuthorId: new_natural_user['Id'],
180
- CreditedUserId: new_wallet['Owners'][0],
181
- CreditedWalletId: new_wallet['Id'],
182
- DebitedFunds: { Currency: 'EUR', Amount: 1000 },
183
- Fees: { Currency: 'EUR', Amount: 0 },
184
- ReturnURL: MangoPay.configuration.root_url,
185
- Tag: 'Test PayIn/PayPal/Web'
186
- })
187
- }
188
-
189
- ###############################################
190
- # directdebit/direct
191
- ###############################################
192
-
193
- let(:new_payin_directdebit_direct) {
194
- MangoPay::PayIn::DirectDebit::Direct.create({
195
- AuthorId: new_natural_user['Id'],
196
- CreditedUserId: new_wallet['Owners'][0],
197
- CreditedWalletId: new_wallet['Id'],
198
- DebitedFunds: { Currency: 'EUR', Amount: 1000 },
199
- Fees: { Currency: 'EUR', Amount: 0 },
200
- MandateId: new_mandate['Id'],
201
- ReturnURL: MangoPay.configuration.root_url,
202
- Tag: 'Test PayIn/DirectDebit/Direct'
203
- })
204
- }
205
-
206
- ###############################################
207
- # card/web
208
- ###############################################
209
-
210
- let(:new_payin_card_web) {
211
- MangoPay::PayIn::Card::Web.create({
212
- AuthorId: new_natural_user['Id'],
213
- CreditedUserId: new_wallet['Owners'][0],
214
- CreditedWalletId: new_wallet['Id'],
215
- DebitedFunds: { Currency: 'EUR', Amount: 1000 },
216
- Fees: { Currency: 'EUR', Amount: 0 },
217
- CardType: 'CB_VISA_MASTERCARD',
218
- ReturnURL: MangoPay.configuration.root_url,
219
- Culture: 'FR',
220
- Tag: 'Test PayIn/Card/Web'
221
- })
222
- }
223
-
224
- ###############################################
225
- # card/direct
226
- ###############################################
227
-
228
- let(:new_card_registration) {
229
- MangoPay::CardRegistration.create({
230
- UserId: new_natural_user['Id'],
231
- Currency: 'EUR',
232
- Tag: 'Test Card Registration'
233
- })
234
- }
235
-
236
- let(:new_card_registration_completed) {
237
- # 1st step: create
238
- cardreg = new_card_registration
239
-
240
- # 2nd step: tokenize by payline (fills-in RegistrationData)
241
- data = {
242
- data: cardreg['PreregistrationData'],
243
- accessKeyRef: cardreg['AccessKey'],
244
- cardNumber: 4970100000000154,
245
- cardExpirationDate: 1218,
246
- cardCvx: 123}
247
- res = Net::HTTP.post_form(URI(cardreg['CardRegistrationURL']), data)
248
- raise Exception, [res, res.body] unless (res.is_a?(Net::HTTPOK) && res.body.start_with?('data='))
249
- cardreg['RegistrationData'] = res.body
250
-
251
- # 3rd step: update (fills-in CardId) and return it
252
- MangoPay::CardRegistration.update(cardreg['Id'], {
253
- RegistrationData: cardreg['RegistrationData']
254
- })
255
- }
256
-
257
- let(:new_payin_card_direct) { create_new_payin_card_direct(new_wallet) }
258
- def create_new_payin_card_direct(to_wallet, amnt = 1000)
259
- cardreg = new_card_registration_completed
260
- MangoPay::PayIn::Card::Direct.create({
261
- AuthorId: new_natural_user['Id'],
262
- CreditedUserId: to_wallet['Owners'][0],
263
- CreditedWalletId: to_wallet['Id'],
264
- DebitedFunds: { Currency: 'EUR', Amount: amnt },
265
- Fees: { Currency: 'EUR', Amount: 0 },
266
- CardType: 'CB_VISA_MASTERCARD',
267
- CardId: cardreg['CardId'],
268
- SecureModeReturnURL: 'http://test.com',
269
- Tag: 'Test PayIn/Card/Direct'
270
- })
271
- end
272
-
273
- ###############################################
274
- # card/direct with pre-authorization
275
- ###############################################
276
-
277
- let(:new_card_preauthorization) { create_new_card_preauthorization(new_card_registration_completed) }
278
- def create_new_card_preauthorization(cardreg, amnt = 1000)
279
- MangoPay::PreAuthorization.create({
280
- AuthorId: new_natural_user['Id'],
281
- DebitedFunds: { Currency: 'EUR', Amount: amnt },
282
- CardId: cardreg['CardId'],
283
- SecureMode: 'DEFAULT',
284
- SecureModeReturnURL: 'http://test.com',
285
- Tag: 'Test Card PreAuthorization'
286
- })
287
- end
288
-
289
- let(:new_payin_preauthorized_direct) { create_new_payin_preauthorized_direct(new_wallet) }
290
- def create_new_payin_preauthorized_direct(to_wallet, amnt = 1000)
291
- preauth = new_card_preauthorization
292
- MangoPay::PayIn::PreAuthorized::Direct.create({
293
- AuthorId: new_natural_user['Id'],
294
- CreditedUserId: to_wallet['Owners'][0],
295
- CreditedWalletId: to_wallet['Id'],
296
- DebitedFunds: { Currency: 'EUR', Amount: amnt },
297
- Fees: { Currency: 'EUR', Amount: 0 },
298
- PreauthorizationId: preauth['Id'],
299
- Tag: 'Test PayIn/PreAuthorized/Direct'
300
- })
301
- end
302
-
303
- ###############################################
304
- # bankwire/direct
305
- ###############################################
306
-
307
- let(:new_payin_bankwire_direct) { create_new_payin_bankwire_direct(new_wallet) }
308
- def create_new_payin_bankwire_direct(to_wallet, amnt = 1000)
309
- MangoPay::PayIn::BankWire::Direct.create({
310
- AuthorId: new_natural_user['Id'],
311
- CreditedUserId: to_wallet['Owners'][0],
312
- CreditedWalletId: to_wallet['Id'],
313
- DeclaredDebitedFunds: { Currency: 'EUR', Amount: amnt },
314
- DeclaredFees: { Currency: 'EUR', Amount: 0 },
315
- Tag: 'Test PayIn/BankWire/Direct'
316
- })
317
- end
318
-
319
- end
320
-
321
- ###############################################
322
- shared_context 'payouts' do
323
- ###############################################
324
- include_context 'bank_accounts'
325
-
326
- let(:new_payout_bankwire) { create_new_payout_bankwire(new_payin_card_direct) }
327
- def create_new_payout_bankwire(payin, amnt = 500)
328
- MangoPay::PayOut::BankWire.create({
329
- AuthorId: payin['CreditedUserId'],
330
- DebitedWalletId: payin['CreditedWalletId'],
331
- DebitedFunds: { Currency: 'EUR', Amount: amnt },
332
- Fees: { Currency: 'EUR', Amount: 0 },
333
- BankAccountId: new_bank_account['Id'],
334
- Communication: 'This is a test',
335
- Tag: 'Test PayOut/Bank/Wire'
336
- })
337
- end
338
- end
339
-
340
- ###############################################
341
- shared_context 'transfers' do
342
- ###############################################
343
- include_context 'users'
344
- include_context 'wallets'
345
- include_context 'payins'
346
-
347
- let(:new_transfer) {
348
- wlt1 = new_wallet
349
- wlt2 = new_wallet_legal
350
- create_new_payin_card_direct(wlt1, 1000) # feed wlt1 with money
351
- create_new_transfer(wlt1, wlt2, 500) # transfer wlt1 => wlt2
352
- }
353
- def create_new_transfer(from_wallet, to_wallet, amnt = 500)
354
- MangoPay::Transfer.create({
355
- AuthorId: from_wallet['Owners'][0],
356
- DebitedWalletId: from_wallet['Id'],
357
- CreditedUserId: to_wallet['Owners'][0],
358
- CreditedWalletId: to_wallet['Id'],
359
- DebitedFunds: { Currency: 'EUR', Amount: amnt},
360
- Fees: { Currency: 'EUR', Amount: 0},
361
- Tag: 'Test transfer'
362
- })
363
- end
364
- end
365
-
366
- ###############################################
367
- shared_context 'hooks' do
368
- ###############################################
369
- let(:new_hook) {
370
- hooks = MangoPay::Hook.fetch({'page' => 1, 'per_page' => 1})
371
- if hooks.length == 0
372
- MangoPay::Hook.create({
373
- EventType: 'PAYIN_NORMAL_CREATED',
374
- Url: 'http://test.com',
375
- Tag: 'Test hook'
376
- })
377
- else
378
- hooks[0]
379
- end
380
- }
381
- end
1
+ ###############################################
2
+ shared_context 'users' do
3
+ ###############################################
4
+
5
+ let(:new_natural_user) { create_new_natural_user }
6
+ def define_new_natural_user
7
+ {
8
+ Tag: 'Test natural user',
9
+ Email: 'my@email.com',
10
+ FirstName: 'John',
11
+ LastName: 'Doe',
12
+ Address: {
13
+ AddressLine1: 'Le Palais Royal',
14
+ AddressLine2: '8 Rue de Montpensier',
15
+ City: 'Paris',
16
+ Region: '',
17
+ PostalCode: '75001',
18
+ Country: 'FR'
19
+ },
20
+ Birthday: 1300186358,
21
+ Birthplace: 'Paris',
22
+ Nationality: 'FR',
23
+ CountryOfResidence: 'FR',
24
+ Occupation: 'Worker',
25
+ IncomeRange: 1
26
+ }
27
+ end
28
+ def create_new_natural_user
29
+ MangoPay::NaturalUser.create(define_new_natural_user)
30
+ end
31
+
32
+ let(:new_legal_user) {
33
+ MangoPay::LegalUser.create({
34
+ Name: 'Super',
35
+ Email: 'super@email.com',
36
+ LegalPersonType: 'BUSINESS',
37
+ HeadquartersAddress: {
38
+ AddressLine1: '6 Parvis Notre-Dame',
39
+ AddressLine2: 'Pl. Jean-Paul II',
40
+ City: 'Paris',
41
+ Region: '',
42
+ PostalCode: '75004',
43
+ Country: 'FR'
44
+ },
45
+ LegalRepresentativeFirstName: 'John',
46
+ LegalRepresentativeLastName: 'Doe',
47
+ LegalRepresentativeAdress: {
48
+ AddressLine1: '38 Rue de Montpensier',
49
+ AddressLine2: '',
50
+ City: 'Paris',
51
+ Region: '',
52
+ PostalCode: '75001',
53
+ Country: 'FR'
54
+ },
55
+ LegalRepresentativeEmail: 'john@doe.com',
56
+ LegalRepresentativeBirthday: 1300186358,
57
+ LegalRepresentativeNationality: 'FR',
58
+ LegalRepresentativeCountryOfResidence: 'FR',
59
+ Statute: '',
60
+ ProofOfRegistration: '',
61
+ ShareholderDeclaration: ''
62
+ })
63
+ }
64
+ end
65
+
66
+ ###############################################
67
+ shared_context 'wallets' do
68
+ ###############################################
69
+ include_context 'users'
70
+
71
+ let(:new_wallet) { create_new_wallet(new_natural_user) }
72
+ let(:new_wallet_legal) { create_new_wallet(new_legal_user) }
73
+ def create_new_wallet(user)
74
+ MangoPay::Wallet.create({
75
+ Owners: [user['Id']],
76
+ Description: 'A test wallet',
77
+ Currency: 'EUR',
78
+ Tag: 'Test wallet'
79
+ })
80
+ end
81
+
82
+ def wallets_check_amounts(wlt1, amnt1, wlt2 = nil, amnt2 = nil)
83
+ expect(wlt1['Balance']['Amount']).to eq amnt1
84
+ expect(wlt2['Balance']['Amount']).to eq amnt2 if wlt2
85
+ end
86
+
87
+ def wallets_reload_and_check_amounts(wlt1, amnt1, wlt2 = nil, amnt2 = nil)
88
+ wlt1 = MangoPay::Wallet::fetch(wlt1['Id'])
89
+ wlt2 = MangoPay::Wallet::fetch(wlt2['Id']) if wlt2
90
+ wallets_check_amounts(wlt1, amnt1, wlt2, amnt2)
91
+ end
92
+ end
93
+
94
+ ###############################################
95
+ shared_context 'bank_accounts' do
96
+ ###############################################
97
+ include_context 'users'
98
+
99
+ let(:new_bank_account) {
100
+ MangoPay::BankAccount.create(new_natural_user['Id'], {
101
+ Type: 'IBAN',
102
+ OwnerName: 'John',
103
+ OwnerAddress: {
104
+ AddressLine1: 'Le Palais Royal',
105
+ AddressLine2: '8 Rue de Montpensier',
106
+ City: 'Paris',
107
+ Region: '',
108
+ PostalCode: '75001',
109
+ Country: 'FR'
110
+ },
111
+ IBAN: 'FR7618829754160173622224154',
112
+ BIC: 'CMBRFR2BCME',
113
+ Tag: 'Test bank account'
114
+ })
115
+ }
116
+ end
117
+
118
+ ###############################################
119
+ shared_context 'mandates' do
120
+ ###############################################
121
+ include_context 'bank_accounts'
122
+
123
+ let(:new_mandate) { create_new_mandate() }
124
+ def create_new_mandate()
125
+ MangoPay::Mandate.create({
126
+ BankAccountId: new_bank_account['Id'],
127
+ Culture: 'FR',
128
+ ReturnURL: MangoPay.configuration.root_url,
129
+ Tag: 'Test mandate'
130
+ })
131
+ end
132
+ end
133
+
134
+ ###############################################
135
+ shared_context 'kyc_documents' do
136
+ ###############################################
137
+ include_context 'users'
138
+
139
+ let(:new_document) { create_new_document(new_natural_user) }
140
+ def create_new_document(user)
141
+ MangoPay::KycDocument.create(user['Id'], {
142
+ Type: 'IDENTITY_PROOF',
143
+ Tag: 'Test document'
144
+ })
145
+ end
146
+ end
147
+
148
+ ###############################################
149
+ shared_context 'payins' do
150
+ ###############################################
151
+ include_context 'users'
152
+ include_context 'wallets'
153
+ include_context 'mandates'
154
+
155
+ ###############################################
156
+ # directdebit/web
157
+ ###############################################
158
+
159
+ let(:new_payin_directdebit_web) {
160
+ MangoPay::PayIn::DirectDebit::Web.create({
161
+ AuthorId: new_natural_user['Id'],
162
+ CreditedUserId: new_wallet['Owners'][0],
163
+ CreditedWalletId: new_wallet['Id'],
164
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
165
+ Fees: { Currency: 'EUR', Amount: 0 },
166
+ DirectDebitType: 'GIROPAY',
167
+ ReturnURL: MangoPay.configuration.root_url,
168
+ Culture: 'FR',
169
+ Tag: 'Test PayIn/DirectDebit/Web'
170
+ })
171
+ }
172
+
173
+ ###############################################
174
+ # paypal/web
175
+ ###############################################
176
+
177
+ let(:new_payin_paypal_web) {
178
+ MangoPay::PayIn::PayPal::Web.create({
179
+ AuthorId: new_natural_user['Id'],
180
+ CreditedUserId: new_wallet['Owners'][0],
181
+ CreditedWalletId: new_wallet['Id'],
182
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
183
+ Fees: { Currency: 'EUR', Amount: 0 },
184
+ ReturnURL: MangoPay.configuration.root_url,
185
+ Tag: 'Test PayIn/PayPal/Web'
186
+ })
187
+ }
188
+
189
+ ###############################################
190
+ # directdebit/direct
191
+ ###############################################
192
+
193
+ let(:new_payin_directdebit_direct) {
194
+ MangoPay::PayIn::DirectDebit::Direct.create({
195
+ AuthorId: new_natural_user['Id'],
196
+ CreditedUserId: new_wallet['Owners'][0],
197
+ CreditedWalletId: new_wallet['Id'],
198
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
199
+ Fees: { Currency: 'EUR', Amount: 0 },
200
+ MandateId: new_mandate['Id'],
201
+ ReturnURL: MangoPay.configuration.root_url,
202
+ Tag: 'Test PayIn/DirectDebit/Direct'
203
+ })
204
+ }
205
+
206
+ ###############################################
207
+ # card/web
208
+ ###############################################
209
+
210
+ let(:new_payin_card_web) {
211
+ MangoPay::PayIn::Card::Web.create({
212
+ AuthorId: new_natural_user['Id'],
213
+ CreditedUserId: new_wallet['Owners'][0],
214
+ CreditedWalletId: new_wallet['Id'],
215
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
216
+ Fees: { Currency: 'EUR', Amount: 0 },
217
+ CardType: 'CB_VISA_MASTERCARD',
218
+ ReturnURL: MangoPay.configuration.root_url,
219
+ Culture: 'FR',
220
+ Tag: 'Test PayIn/Card/Web'
221
+ })
222
+ }
223
+
224
+ ###############################################
225
+ # card/direct
226
+ ###############################################
227
+
228
+ let(:new_card_registration) {
229
+ MangoPay::CardRegistration.create({
230
+ UserId: new_natural_user['Id'],
231
+ Currency: 'EUR',
232
+ Tag: 'Test Card Registration'
233
+ })
234
+ }
235
+
236
+ let(:new_card_registration_completed) {
237
+ # 1st step: create
238
+ cardreg = new_card_registration
239
+
240
+ # 2nd step: tokenize by payline (fills-in RegistrationData)
241
+ data = {
242
+ data: cardreg['PreregistrationData'],
243
+ accessKeyRef: cardreg['AccessKey'],
244
+ cardNumber: 4970100000000154,
245
+ cardExpirationDate: 1218,
246
+ cardCvx: 123}
247
+ res = Net::HTTP.post_form(URI(cardreg['CardRegistrationURL']), data)
248
+ raise Exception, [res, res.body] unless (res.is_a?(Net::HTTPOK) && res.body.start_with?('data='))
249
+ cardreg['RegistrationData'] = res.body
250
+
251
+ # 3rd step: update (fills-in CardId) and return it
252
+ MangoPay::CardRegistration.update(cardreg['Id'], {
253
+ RegistrationData: cardreg['RegistrationData']
254
+ })
255
+ }
256
+
257
+ let(:new_payin_card_direct) { create_new_payin_card_direct(new_wallet) }
258
+ def create_new_payin_card_direct(to_wallet, amnt = 1000)
259
+ cardreg = new_card_registration_completed
260
+ MangoPay::PayIn::Card::Direct.create({
261
+ AuthorId: new_natural_user['Id'],
262
+ CreditedUserId: to_wallet['Owners'][0],
263
+ CreditedWalletId: to_wallet['Id'],
264
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
265
+ Fees: { Currency: 'EUR', Amount: 0 },
266
+ CardType: 'CB_VISA_MASTERCARD',
267
+ CardId: cardreg['CardId'],
268
+ SecureModeReturnURL: 'http://test.com',
269
+ Tag: 'Test PayIn/Card/Direct'
270
+ })
271
+ end
272
+
273
+ ###############################################
274
+ # card/direct with pre-authorization
275
+ ###############################################
276
+
277
+ let(:new_card_preauthorization) { create_new_card_preauthorization(new_card_registration_completed) }
278
+ def create_new_card_preauthorization(cardreg, amnt = 1000)
279
+ MangoPay::PreAuthorization.create({
280
+ AuthorId: new_natural_user['Id'],
281
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
282
+ CardId: cardreg['CardId'],
283
+ SecureMode: 'DEFAULT',
284
+ SecureModeReturnURL: 'http://test.com',
285
+ Tag: 'Test Card PreAuthorization'
286
+ })
287
+ end
288
+
289
+ let(:new_payin_preauthorized_direct) { create_new_payin_preauthorized_direct(new_wallet) }
290
+ def create_new_payin_preauthorized_direct(to_wallet, amnt = 1000)
291
+ preauth = new_card_preauthorization
292
+ MangoPay::PayIn::PreAuthorized::Direct.create({
293
+ AuthorId: new_natural_user['Id'],
294
+ CreditedUserId: to_wallet['Owners'][0],
295
+ CreditedWalletId: to_wallet['Id'],
296
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
297
+ Fees: { Currency: 'EUR', Amount: 0 },
298
+ PreauthorizationId: preauth['Id'],
299
+ Tag: 'Test PayIn/PreAuthorized/Direct'
300
+ })
301
+ end
302
+
303
+ ###############################################
304
+ # bankwire/direct
305
+ ###############################################
306
+
307
+ let(:new_payin_bankwire_direct) { create_new_payin_bankwire_direct(new_wallet) }
308
+ def create_new_payin_bankwire_direct(to_wallet, amnt = 1000)
309
+ MangoPay::PayIn::BankWire::Direct.create({
310
+ AuthorId: new_natural_user['Id'],
311
+ CreditedUserId: to_wallet['Owners'][0],
312
+ CreditedWalletId: to_wallet['Id'],
313
+ DeclaredDebitedFunds: { Currency: 'EUR', Amount: amnt },
314
+ DeclaredFees: { Currency: 'EUR', Amount: 0 },
315
+ Tag: 'Test PayIn/BankWire/Direct'
316
+ })
317
+ end
318
+
319
+ end
320
+
321
+ ###############################################
322
+ shared_context 'payouts' do
323
+ ###############################################
324
+ include_context 'bank_accounts'
325
+
326
+ let(:new_payout_bankwire) { create_new_payout_bankwire(new_payin_card_direct) }
327
+ def create_new_payout_bankwire(payin, amnt = 500)
328
+ MangoPay::PayOut::BankWire.create({
329
+ AuthorId: payin['CreditedUserId'],
330
+ DebitedWalletId: payin['CreditedWalletId'],
331
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
332
+ Fees: { Currency: 'EUR', Amount: 0 },
333
+ BankAccountId: new_bank_account['Id'],
334
+ Communication: 'This is a test',
335
+ Tag: 'Test PayOut/Bank/Wire'
336
+ })
337
+ end
338
+ end
339
+
340
+ ###############################################
341
+ shared_context 'transfers' do
342
+ ###############################################
343
+ include_context 'users'
344
+ include_context 'wallets'
345
+ include_context 'payins'
346
+
347
+ let(:new_transfer) {
348
+ wlt1 = new_wallet
349
+ wlt2 = new_wallet_legal
350
+ create_new_payin_card_direct(wlt1, 1000) # feed wlt1 with money
351
+ create_new_transfer(wlt1, wlt2, 500) # transfer wlt1 => wlt2
352
+ }
353
+ def create_new_transfer(from_wallet, to_wallet, amnt = 500)
354
+ MangoPay::Transfer.create({
355
+ AuthorId: from_wallet['Owners'][0],
356
+ DebitedWalletId: from_wallet['Id'],
357
+ CreditedUserId: to_wallet['Owners'][0],
358
+ CreditedWalletId: to_wallet['Id'],
359
+ DebitedFunds: { Currency: 'EUR', Amount: amnt},
360
+ Fees: { Currency: 'EUR', Amount: 0},
361
+ Tag: 'Test transfer'
362
+ })
363
+ end
364
+ end
365
+
366
+ ###############################################
367
+ shared_context 'hooks' do
368
+ ###############################################
369
+ let(:new_hook) {
370
+ hooks = MangoPay::Hook.fetch({'page' => 1, 'per_page' => 1})
371
+ if hooks.length == 0
372
+ MangoPay::Hook.create({
373
+ EventType: 'PAYIN_NORMAL_CREATED',
374
+ Url: 'http://test.com',
375
+ Tag: 'Test hook'
376
+ })
377
+ else
378
+ hooks[0]
379
+ end
380
+ }
381
+ end