1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Created by Graham Owens ([email protected]) |
4
|
|
|
* Company: PartFire Ltd (www.partfire.co.uk) |
5
|
|
|
* Console: Discovery |
6
|
|
|
* |
7
|
|
|
* User: gra |
8
|
|
|
* Date: 31/12/16 |
9
|
|
|
* Time: 00:53 |
10
|
|
|
* Project: PartFire MangoPay Bundle |
11
|
|
|
* File: MangoPayConstants.php |
12
|
|
|
* |
13
|
|
|
**/ |
14
|
|
|
|
15
|
|
|
namespace PartFire\MangoPayBundle; |
16
|
|
|
|
17
|
|
|
|
18
|
|
|
class MangoPayConstants |
19
|
|
|
{ |
20
|
|
|
const NATURAL_PERSON_TYPE = 'NATURAL'; |
21
|
|
|
const LEGAL_PERSON_TYPE = 'LEGAL'; |
22
|
|
|
|
23
|
|
|
// https://docs.mangopay.com/endpoints/v2.01/users#e259_create-a-legal-user |
24
|
|
|
|
25
|
|
|
// May also help https://www.gov.uk/business-legal-structures/overview |
26
|
|
|
|
27
|
|
|
const LEGAL_PERSON_TYPE_SOLETRADER = 'SOLETRADER'; |
28
|
|
|
const LEGAL_PERSON_TYPE_ORGANISATION = 'ORGANIZATION'; |
29
|
|
|
const LEGAL_PERSON_TYPE_BUSINESS = 'BUSINESS'; |
30
|
|
|
|
31
|
|
|
// https://docs.mangopay.com/endpoints/v2.01/users#e253_the-user-object |
32
|
|
|
|
33
|
|
|
const KYC_LEVEL_LIGHT = 'LIGHT'; |
34
|
|
|
const KYC_LEVEL_REGULAR = 'REGULAR'; |
35
|
|
|
|
36
|
|
|
// https://docs.mangopay.com/endpoints/v2/users#e254_the-natural-user-object |
37
|
|
|
|
38
|
|
|
// KYC Doc types = https://docs.mangopay.com/endpoints/v2.01/kyc-documents#e205_create-a-kyc-document |
39
|
|
|
const IDENTITY_PROOF = 'IDENTITY_PROOF'; |
40
|
|
|
const REGISTRATION_PROOF = 'REGISTRATION_PROOF'; |
41
|
|
|
const ARTICLES_OF_ASSOCIATION = 'ARTICLES_OF_ASSOCIATION'; |
42
|
|
|
const SHAREHOLDER_DECLARATION = 'SHAREHOLDER_DECLARATION'; |
43
|
|
|
const ADDRESS_PROOF = 'ADDRESS_PROOF'; |
44
|
|
|
|
45
|
|
|
// KYC Doc Refusal reasons |
46
|
|
|
|
47
|
|
|
const DOCUMENT_UNREADABLE = 'DOCUMENT_UNREADABLE'; |
48
|
|
|
const DOCUMENT_NOT_ACCEPTED = 'DOCUMENT_NOT_ACCEPTED'; |
49
|
|
|
const DOCUMENT_HAS_EXPIRED = 'DOCUMENT_HAS_EXPIRED'; |
50
|
|
|
const DOCUMENT_INCOMPLETE = 'DOCUMENT_INCOMPLETE'; |
51
|
|
|
const DOCUMENT_MISSING = 'DOCUMENT_MISSING'; |
52
|
|
|
const DOCUMENT_DO_NOT_MATCH_USER_DATA = 'DOCUMENT_DO_NOT_MATCH_USER_DATA'; |
53
|
|
|
const DOCUMENT_DO_NOT_MATCH_ACCOUNT_DATA = 'DOCUMENT_DO_NOT_MATCH_ACCOUNT_DATA'; |
54
|
|
|
const SPECIFIC_CASE = 'SPECIFIC_CASE'; |
55
|
|
|
const DOCUMENT_FALSIFIED = 'DOCUMENT_FALSIFIED'; |
56
|
|
|
const UNDERAGE_PERSON = 'UNDERAGE_PERSON'; |
57
|
|
|
const OTHER = 'OTHER'; |
58
|
|
|
const TRIGGER_PEPS = 'TRIGGER_PEPS'; |
59
|
|
|
const TRIGGER_SANCTIONS_LISTS = 'TRIGGER_SANCTIONS_LISTS'; |
60
|
|
|
const TRIGGER_INTERPOL = 'TRIGGER_INTERPOL'; |
61
|
|
|
|
62
|
|
|
// KYC Doc Status |
63
|
|
|
|
64
|
|
|
const CREATED = 'CREATED'; |
65
|
|
|
const VALIDATION_ASKED = 'VALIDATION_ASKED'; |
66
|
|
|
const VALIDATED = 'VALIDATED'; |
67
|
|
|
const REFUSED = 'REFUSED'; |
68
|
|
|
|
69
|
|
|
// Hook Status |
70
|
|
|
const HOOK_NEW = "HOOK_NEW"; |
71
|
|
|
const HOOK_IN_PROGRESS = "HOOK_IN_PROGRESS"; |
72
|
|
|
const HOOK_ACTIONED = "HOOK_ACTIONED"; |
73
|
|
|
|
74
|
|
|
// Hook Variables |
75
|
|
|
// https://docs.mangopay.com/endpoints/v2.01/hooks#e246_the-hook-object |
76
|
|
|
const HOOK_EVENT_TYPE = "EventType"; |
77
|
|
|
const HOOK_RESOURCE_ID = "RessourceId"; // Known spelling mistake in MangoPay Api |
78
|
|
|
const HOOK_DATE = "Date"; |
79
|
|
|
|
80
|
|
|
// Event types |
81
|
|
|
|
82
|
|
|
const PAYIN_NORMAL_CREATED = "PAYIN_NORMAL_CREATED"; |
83
|
|
|
const PAYIN_NORMAL_SUCCEEDED = "PAYIN_NORMAL_SUCCEEDED"; |
84
|
|
|
const PAYIN_NORMAL_FAILED = "PAYIN_NORMAL_FAILED"; |
85
|
|
|
|
86
|
|
|
const PAYOUT_NORMAL_CREATED = "PAYOUT_NORMAL_CREATED"; |
87
|
|
|
const PAYOUT_NORMAL_SUCCEEDED = "PAYOUT_NORMAL_SUCCEEDED"; |
88
|
|
|
const PAYOUT_NORMAL_FAILED = "PAYOUT_NORMAL_FAILED"; |
89
|
|
|
|
90
|
|
|
const TRANSFER_NORMAL_CREATED = "TRANSFER_NORMAL_CREATED"; |
91
|
|
|
const TRANSFER_NORMAL_SUCCEEDED = "TRANSFER_NORMAL_SUCCEEDED"; |
92
|
|
|
const TRANSFER_NORMAL_FAILED = "TRANSFER_NORMAL_FAILED"; |
93
|
|
|
|
94
|
|
|
const PAYIN_REFUND_CREATED = "PAYIN_REFUND_CREATED"; |
95
|
|
|
const PAYIN_REFUND_SUCCEEDED = "PAYIN_REFUND_SUCCEEDED"; |
96
|
|
|
const PAYIN_REFUND_FAILED = "PAYIN_REFUND_FAILED"; |
97
|
|
|
|
98
|
|
|
const PAYOUT_REFUND_CREATED = "PAYOUT_REFUND_CREATED"; |
99
|
|
|
const PAYOUT_REFUND_SUCCEEDED = "PAYOUT_REFUND_SUCCEEDED"; |
100
|
|
|
const PAYOUT_REFUND_FAILED = "PAYOUT_REFUND_FAILED"; |
101
|
|
|
|
102
|
|
|
const TRANSFER_REFUND_CREATED = "TRANSFER_REFUND_CREATED"; |
103
|
|
|
const TRANSFER_REFUND_SUCCEEDED = "TRANSFER_REFUND_SUCCEEDED"; |
104
|
|
|
const TRANSFER_REFUND_FAILED = "TRANSFER_REFUND_FAILED"; |
105
|
|
|
|
106
|
|
|
const PAYIN_REPUDIATION_CREATED = "PAYIN_REPUDIATION_CREATED"; |
107
|
|
|
const PAYIN_REPUDIATION_SUCCEEDED = "PAYIN_REPUDIATION_SUCCEEDED"; |
108
|
|
|
const PAYIN_REPUDIATION_FAILED = "PAYIN_REPUDIATION_FAILED"; |
109
|
|
|
|
110
|
|
|
const KYC_CREATED = "KYC_CREATED"; |
111
|
|
|
const KYC_SUCCEEDED = "KYC_SUCCEEDED"; |
112
|
|
|
const KYC_FAILED = "KYC_FAILED"; |
113
|
|
|
const KYC_VALIDATION_ASKED = "KYC_VALIDATION_ASKED"; |
114
|
|
|
|
115
|
|
|
const DISPUTE_DOCUMENT_CREATED = "DISPUTE_DOCUMENT_CREATED"; |
116
|
|
|
const DISPUTE_DOCUMENT_VALIDATION_ASKED = "DISPUTE_DOCUMENT_VALIDATION_ASKED"; |
117
|
|
|
const DISPUTE_DOCUMENT_SUCCEEDED = "DISPUTE_DOCUMENT_SUCCEEDED"; |
118
|
|
|
const DISPUTE_DOCUMENT_FAILED = "DISPUTE_DOCUMENT_FAILED"; |
119
|
|
|
|
120
|
|
|
const DISPUTE_CREATED = "DISPUTE_CREATED"; |
121
|
|
|
const DISPUTE_SUBMITTED = "DISPUTE_SUBMITTED"; |
122
|
|
|
const DISPUTE_ACTION_REQUIRED = "DISPUTE_ACTION_REQUIRED"; |
123
|
|
|
const DISPUTE_FURTHER_ACTION_REQUIRED = "DISPUTE_FURTHER_ACTION_REQUIRED"; |
124
|
|
|
const DISPUTE_CLOSED = "DISPUTE_CLOSED"; |
125
|
|
|
const DISPUTE_SENT_TO_BANK = "DISPUTE_SENT_TO_BANK"; |
126
|
|
|
|
127
|
|
|
const TRANSFER_SETTLEMENT_CREATED = "TRANSFER_SETTLEMENT_CREATED"; |
128
|
|
|
const TRANSFER_SETTLEMENT_SUCCEEDED = "TRANSFER_SETTLEMENT_SUCCEEDED"; |
129
|
|
|
const TRANSFER_SETTLEMENT_FAILED = "TRANSFER_SETTLEMENT_FAILED"; |
130
|
|
|
|
131
|
|
|
const MANDATE_CREATED = "MANDATE_CREATED"; |
132
|
|
|
const MANDATED_FAILED = "MANDATED_FAILED"; |
133
|
|
|
const MANDATE_ACTIVATED = "MANDATE_ACTIVATED"; |
134
|
|
|
const MANDATE_SUBMITTED = "MANDATE_SUBMITTED"; |
135
|
|
|
|
136
|
|
|
const PREAUTHORIZATION_PAYMENT_WAITING = "PREAUTHORIZATION_PAYMENT_WAITING"; |
137
|
|
|
// (not currently available) 'PREAUTHORIZATION_PAYMENT_EXPIRED', |
|
|
|
|
138
|
|
|
const PREAUTHORIZATION_PAYMENT_CANCELED = "PREAUTHORIZATION_PAYMENT_CANCELED"; |
139
|
|
|
const PREAUTHORIZATION_PAYMENT_VALIDATED = "PREAUTHORIZATION_PAYMENT_VALIDATED"; |
140
|
|
|
|
141
|
|
|
public static function getKYCRefusalArray() : array |
142
|
|
|
{ |
143
|
|
|
return [ |
144
|
|
|
self::DOCUMENT_UNREADABLE, |
145
|
|
|
self::DOCUMENT_NOT_ACCEPTED, |
146
|
|
|
self::DOCUMENT_HAS_EXPIRED, |
147
|
|
|
self::DOCUMENT_INCOMPLETE, |
148
|
|
|
self::DOCUMENT_MISSING, |
149
|
|
|
self::DOCUMENT_DO_NOT_MATCH_USER_DATA, |
150
|
|
|
self::DOCUMENT_DO_NOT_MATCH_ACCOUNT_DATA, |
151
|
|
|
self::SPECIFIC_CASE, |
152
|
|
|
self::DOCUMENT_FALSIFIED, |
153
|
|
|
self::UNDERAGE_PERSON, |
154
|
|
|
self::OTHER, |
155
|
|
|
self::TRIGGER_PEPS, |
156
|
|
|
self::TRIGGER_SANCTIONS_LISTS, |
157
|
|
|
self::TRIGGER_INTERPOL |
158
|
|
|
]; |
159
|
|
|
} |
160
|
|
|
|
161
|
|
|
public static function getIncomeRangeFromId(int $id) : string |
162
|
|
|
{ |
163
|
|
|
switch ($id) { |
164
|
|
|
case 1: |
165
|
|
|
$range = "incomes <18K€"; |
166
|
|
|
break; |
167
|
|
|
case 2: |
168
|
|
|
$range = "incomes between 18 and 30K€"; |
169
|
|
|
break; |
170
|
|
|
case 3: |
171
|
|
|
$range = "incomes between 30 and 50K€"; |
172
|
|
|
break; |
173
|
|
|
case 4: |
174
|
|
|
$range = "incomes between 50 and 80K€"; |
175
|
|
|
break; |
176
|
|
|
case 5: |
177
|
|
|
$range = "incomes between 80 and 120K€"; |
178
|
|
|
break; |
179
|
|
|
case 6: |
180
|
|
|
$range = "incomes>120K€"; |
181
|
|
|
break; |
182
|
|
|
default: |
183
|
|
|
$range = "Unknown range"; |
184
|
|
|
} |
185
|
|
|
|
186
|
|
|
return $range; |
187
|
|
|
} |
188
|
|
|
|
189
|
|
|
public static function isPersonTypeOk($personType) |
190
|
|
|
{ |
191
|
|
|
return in_array($personType, self::getPersonTypeArray()); |
192
|
|
|
} |
193
|
|
|
|
194
|
|
|
public static function getPersonTypeArray() |
195
|
|
|
{ |
196
|
|
|
return [ |
197
|
|
|
self::NATURAL_PERSON_TYPE, |
198
|
|
|
self::LEGAL_PERSON_TYPE |
199
|
|
|
]; |
200
|
|
|
} |
201
|
|
|
|
202
|
|
|
public static function isDocumentTypeOk($documentType) |
203
|
|
|
{ |
204
|
|
|
return in_array($documentType, self::getDocumentTypeArray()); |
205
|
|
|
} |
206
|
|
|
|
207
|
|
|
public static function getDocumentTypeArray() |
208
|
|
|
{ |
209
|
|
|
return [ |
210
|
|
|
self::IDENTITY_PROOF, |
211
|
|
|
self::REGISTRATION_PROOF, |
212
|
|
|
self::ARTICLES_OF_ASSOCIATION, |
213
|
|
|
self::SHAREHOLDER_DECLARATION, |
214
|
|
|
self::ADDRESS_PROOF |
215
|
|
|
]; |
216
|
|
|
} |
217
|
|
|
|
218
|
|
|
// https://docs.mangopay.com/endpoints/v2.01/hooks#e246_the-hook-object |
219
|
|
|
// 16th Jan 2017 |
220
|
|
|
|
221
|
|
|
public static function isEventTypeOk($eventType) |
222
|
|
|
{ |
223
|
|
|
return in_array($eventType, self::getAllEventTypes()); |
224
|
|
|
} |
225
|
|
|
|
226
|
|
|
public static function isEventTypeToDoWithKYC($eventType) |
227
|
|
|
{ |
228
|
|
|
return substr($eventType, 0, 4) == "KYC_"; |
229
|
|
|
} |
230
|
|
|
|
231
|
|
|
public static function isEventTypeToDoWithPayIn($eventType) |
232
|
|
|
{ |
233
|
|
|
return substr($eventType, 0, 6) == "PAYIN_"; |
234
|
|
|
} |
235
|
|
|
|
236
|
|
|
public static function getAllEventTypes() |
237
|
|
|
{ |
238
|
|
|
return [ |
239
|
|
|
self::PAYIN_NORMAL_CREATED, |
240
|
|
|
self::PAYIN_NORMAL_SUCCEEDED, |
241
|
|
|
self::PAYIN_NORMAL_FAILED, |
242
|
|
|
|
243
|
|
|
self::PAYOUT_NORMAL_CREATED, |
244
|
|
|
self::PAYOUT_NORMAL_SUCCEEDED, |
245
|
|
|
self::PAYOUT_NORMAL_FAILED, |
246
|
|
|
|
247
|
|
|
self::TRANSFER_NORMAL_CREATED, |
248
|
|
|
self::TRANSFER_NORMAL_SUCCEEDED, |
249
|
|
|
self::TRANSFER_NORMAL_FAILED, |
250
|
|
|
|
251
|
|
|
self::PAYIN_REFUND_CREATED, |
252
|
|
|
self::PAYIN_REFUND_SUCCEEDED, |
253
|
|
|
self::PAYIN_REFUND_FAILED, |
254
|
|
|
|
255
|
|
|
self::PAYOUT_REFUND_CREATED, |
256
|
|
|
self::PAYOUT_REFUND_SUCCEEDED, |
257
|
|
|
self::PAYOUT_REFUND_FAILED, |
258
|
|
|
|
259
|
|
|
self::TRANSFER_REFUND_CREATED, |
260
|
|
|
self::TRANSFER_REFUND_SUCCEEDED, |
261
|
|
|
self::TRANSFER_REFUND_FAILED, |
262
|
|
|
|
263
|
|
|
self::PAYIN_REPUDIATION_CREATED, |
264
|
|
|
self::PAYIN_REPUDIATION_SUCCEEDED, |
265
|
|
|
self::PAYIN_REPUDIATION_FAILED, |
266
|
|
|
|
267
|
|
|
self::KYC_CREATED, |
268
|
|
|
self::KYC_SUCCEEDED, |
269
|
|
|
self::KYC_FAILED, |
270
|
|
|
self::KYC_VALIDATION_ASKED, |
271
|
|
|
|
272
|
|
|
self::DISPUTE_DOCUMENT_CREATED, |
273
|
|
|
self::DISPUTE_DOCUMENT_VALIDATION_ASKED, |
274
|
|
|
self::DISPUTE_DOCUMENT_SUCCEEDED, |
275
|
|
|
self::DISPUTE_DOCUMENT_FAILED, |
276
|
|
|
|
277
|
|
|
self::DISPUTE_CREATED, |
278
|
|
|
self::DISPUTE_SUBMITTED, |
279
|
|
|
self::DISPUTE_ACTION_REQUIRED, |
280
|
|
|
self::DISPUTE_FURTHER_ACTION_REQUIRED, |
281
|
|
|
self::DISPUTE_CLOSED, |
282
|
|
|
self::DISPUTE_SENT_TO_BANK, |
283
|
|
|
|
284
|
|
|
self::TRANSFER_SETTLEMENT_CREATED, |
285
|
|
|
self::TRANSFER_SETTLEMENT_SUCCEEDED, |
286
|
|
|
self::TRANSFER_SETTLEMENT_FAILED, |
287
|
|
|
|
288
|
|
|
self::MANDATE_CREATED, |
289
|
|
|
self::MANDATED_FAILED, |
290
|
|
|
self::MANDATE_ACTIVATED, |
291
|
|
|
self::MANDATE_SUBMITTED, |
292
|
|
|
|
293
|
|
|
self::PREAUTHORIZATION_PAYMENT_WAITING, |
294
|
|
|
// (not currently available) 'PREAUTHORIZATION_PAYMENT_EXPIRED', |
|
|
|
|
295
|
|
|
self::PREAUTHORIZATION_PAYMENT_CANCELED, |
296
|
|
|
self::PREAUTHORIZATION_PAYMENT_VALIDATED |
297
|
|
|
|
298
|
|
|
]; |
299
|
|
|
} |
300
|
|
|
} |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.