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
|
|
|
public static function getKYCRefusalArray() : array |
81
|
|
|
{ |
82
|
|
|
return [ |
83
|
|
|
self::DOCUMENT_UNREADABLE, |
84
|
|
|
self::DOCUMENT_NOT_ACCEPTED, |
85
|
|
|
self::DOCUMENT_HAS_EXPIRED, |
86
|
|
|
self::DOCUMENT_INCOMPLETE, |
87
|
|
|
self::DOCUMENT_MISSING, |
88
|
|
|
self::DOCUMENT_DO_NOT_MATCH_USER_DATA, |
89
|
|
|
self::DOCUMENT_DO_NOT_MATCH_ACCOUNT_DATA, |
90
|
|
|
self::SPECIFIC_CASE, |
91
|
|
|
self::DOCUMENT_FALSIFIED, |
92
|
|
|
self::UNDERAGE_PERSON, |
93
|
|
|
self::OTHER, |
94
|
|
|
self::TRIGGER_PEPS, |
95
|
|
|
self::TRIGGER_SANCTIONS_LISTS, |
96
|
|
|
self::TRIGGER_INTERPOL |
97
|
|
|
]; |
98
|
|
|
} |
99
|
|
|
|
100
|
|
|
public static function getIncomeRangeFromId(int $id) : string |
101
|
|
|
{ |
102
|
|
|
switch ($id) { |
103
|
|
|
case 1: |
104
|
|
|
$range = "incomes <18K€"; |
105
|
|
|
break; |
106
|
|
|
case 2: |
107
|
|
|
$range = "incomes between 18 and 30K€"; |
108
|
|
|
break; |
109
|
|
|
case 3: |
110
|
|
|
$range = "incomes between 30 and 50K€"; |
111
|
|
|
break; |
112
|
|
|
case 4: |
113
|
|
|
$range = "incomes between 50 and 80K€"; |
114
|
|
|
break; |
115
|
|
|
case 5: |
116
|
|
|
$range = "incomes between 80 and 120K€"; |
117
|
|
|
break; |
118
|
|
|
case 6: |
119
|
|
|
$range = "incomes>120K€"; |
120
|
|
|
break; |
121
|
|
|
default: |
122
|
|
|
$range = "Unknown range"; |
123
|
|
|
} |
124
|
|
|
|
125
|
|
|
return $range; |
126
|
|
|
} |
127
|
|
|
|
128
|
|
|
public static function isPersonTypeOk($personType) |
129
|
|
|
{ |
130
|
|
|
return in_array($personType, self::getPersonTypeArray()); |
131
|
|
|
} |
132
|
|
|
|
133
|
|
|
public static function getPersonTypeArray() |
134
|
|
|
{ |
135
|
|
|
return [ |
136
|
|
|
self::NATURAL_PERSON_TYPE, |
137
|
|
|
self::LEGAL_PERSON_TYPE |
138
|
|
|
]; |
139
|
|
|
} |
140
|
|
|
|
141
|
|
|
public static function isDocumentTypeOk($documentType) |
142
|
|
|
{ |
143
|
|
|
return in_array($documentType, self::getDocumentTypeArray()); |
144
|
|
|
} |
145
|
|
|
|
146
|
|
|
public static function getDocumentTypeArray() |
147
|
|
|
{ |
148
|
|
|
return [ |
149
|
|
|
self::IDENTITY_PROOF, |
150
|
|
|
self::REGISTRATION_PROOF, |
151
|
|
|
self::ARTICLES_OF_ASSOCIATION, |
152
|
|
|
self::SHAREHOLDER_DECLARATION, |
153
|
|
|
self::ADDRESS_PROOF |
154
|
|
|
]; |
155
|
|
|
} |
156
|
|
|
|
157
|
|
|
// https://docs.mangopay.com/endpoints/v2.01/hooks#e246_the-hook-object |
158
|
|
|
// 16th Jan 2017 |
159
|
|
|
|
160
|
|
|
public static function isEventTypeOk($eventType) |
161
|
|
|
{ |
162
|
|
|
return in_array($eventType, self::getAllEventTypes()); |
163
|
|
|
} |
164
|
|
|
|
165
|
|
|
public static function isEventTypeToDoWithKYC($eventType) |
166
|
|
|
{ |
167
|
|
|
return substr($eventType, 0,4) == "KYC_"; |
168
|
|
|
} |
169
|
|
|
|
170
|
|
|
public static function getAllEventTypes() |
171
|
|
|
{ |
172
|
|
|
return [ |
173
|
|
|
'PAYIN_NORMAL_CREATED', |
174
|
|
|
'PAYIN_NORMAL_SUCCEEDED', |
175
|
|
|
'PAYIN_NORMAL_FAILED', |
176
|
|
|
|
177
|
|
|
'PAYOUT_NORMAL_CREATED', |
178
|
|
|
'PAYOUT_NORMAL_SUCCEEDED', |
179
|
|
|
'PAYOUT_NORMAL_FAILED', |
180
|
|
|
|
181
|
|
|
'TRANSFER_NORMAL_CREATED', |
182
|
|
|
'TRANSFER_NORMAL_SUCCEEDED', |
183
|
|
|
'TRANSFER_NORMAL_FAILED', |
184
|
|
|
|
185
|
|
|
'PAYIN_REFUND_CREATED', |
186
|
|
|
'PAYIN_REFUND_SUCCEEDED', |
187
|
|
|
'PAYIN_REFUND_FAILED', |
188
|
|
|
|
189
|
|
|
'PAYOUT_REFUND_CREATED', |
190
|
|
|
'PAYOUT_REFUND_SUCCEEDED', |
191
|
|
|
'PAYOUT_REFUND_FAILED', |
192
|
|
|
|
193
|
|
|
'TRANSFER_REFUND_CREATED', |
194
|
|
|
'TRANSFER_REFUND_SUCCEEDED', |
195
|
|
|
'TRANSFER_REFUND_FAILED', |
196
|
|
|
|
197
|
|
|
'PAYIN_REPUDIATION_CREATED', |
198
|
|
|
'PAYIN_REPUDIATION_SUCCEEDED', |
199
|
|
|
'PAYIN_REPUDIATION_FAILED', |
200
|
|
|
|
201
|
|
|
'KYC_CREATED', |
202
|
|
|
'KYC_SUCCEEDED', |
203
|
|
|
'KYC_FAILED', |
204
|
|
|
'KYC_VALIDATION_ASKED', |
205
|
|
|
|
206
|
|
|
'DISPUTE_DOCUMENT_CREATED', |
207
|
|
|
'DISPUTE_DOCUMENT_VALIDATION_ASKED', |
208
|
|
|
'DISPUTE_DOCUMENT_SUCCEEDED', |
209
|
|
|
'DISPUTE_DOCUMENT_FAILED', |
210
|
|
|
|
211
|
|
|
'DISPUTE_CREATED', |
212
|
|
|
'DISPUTE_SUBMITTED', |
213
|
|
|
'DISPUTE_ACTION_REQUIRED', |
214
|
|
|
'DISPUTE_FURTHER_ACTION_REQUIRED', |
215
|
|
|
'DISPUTE_CLOSED', |
216
|
|
|
'DISPUTE_SENT_TO_BANK', |
217
|
|
|
|
218
|
|
|
'TRANSFER_SETTLEMENT_CREATED', |
219
|
|
|
'TRANSFER_SETTLEMENT_SUCCEEDED', |
220
|
|
|
'TRANSFER_SETTLEMENT_FAILED', |
221
|
|
|
|
222
|
|
|
'MANDATE_CREATED', |
223
|
|
|
'MANDATED_FAILED', |
224
|
|
|
'MANDATE_ACTIVATED', |
225
|
|
|
'MANDATE_SUBMITTED', |
226
|
|
|
|
227
|
|
|
'PREAUTHORIZATION_PAYMENT_WAITING', |
228
|
|
|
// (not currently available) 'PREAUTHORIZATION_PAYMENT_EXPIRED', |
|
|
|
|
229
|
|
|
'PREAUTHORIZATION_PAYMENT_CANCELED', |
230
|
|
|
'PREAUTHORIZATION_PAYMENT_VALIDATED', |
231
|
|
|
|
232
|
|
|
]; |
233
|
|
|
} |
234
|
|
|
} |
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.