Passed
Push — master ( 321d9a...47ef66 )
by
unknown
03:21
created

MangoPayConstants.php (9 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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
    // PAY IN Status' CREATED, SUCCEEDED, FAILED
142
    const       PAYIN_NEW                           = "PAY-IN-CREATED-WAITING-FOR-HOOK-UPDATE";
143
    const       PAYIN_CREATED                       = "CREATED";
144
    const       PAYIN_SUCCEEDED                     = "SUCCEEDED";
145
    const       PAYIN_FAILED                        = "FAILED";
146
147
148
149
    public static function getErrorCodeFriendlyReason($mangoErrorCode)
0 ignored issues
show
The parameter $mangoErrorCode is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
150
    {
151
152
    }
153
154
    public static function getErrorCodeMangoPayReason($mangoErrorCode)
155
    {
156
        $msg = "";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
157
        switch ($mangoErrorCode) {
158
            case "001999":
159
                $msg = "Generic Operation error. Mangopay has no information for the bank yet.";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
160
                break;
161
            case "001001":
162
                $msg = "Unsufficient wallet balance. The wallet balance doesn’t allow to process transaction.";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
163
                break;
164
            case "001002":
165
                $msg = "Author is not the wallet owner. The user ID used as Author has to be the wallet owner.";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
166
                break;
167
            case "001011":
168
                $msg = "Transaction amount is higher than maximum permitted amount.";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
169
                break;
170
            case "001012":
171
                $msg = "Transaction amount is lower than minimum permitted amount.";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
172
                break;
173
            case "001013":
174
                $msg = "Invalid transaction amount.";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
175
                break;
176
            case "001014":
177
                $msg = "CreditedFunds must be more than 0 (DebitedFunds can not equal Fees).";
0 ignored issues
show
$msg is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
178
                break;
179
        }
180
    }
181
182
    public static function getKYCRefusalArray() : array
183
    {
184
        return [
185
            self::DOCUMENT_UNREADABLE,
186
            self::DOCUMENT_NOT_ACCEPTED,
187
            self::DOCUMENT_HAS_EXPIRED,
188
            self::DOCUMENT_INCOMPLETE,
189
            self::DOCUMENT_MISSING,
190
            self::DOCUMENT_DO_NOT_MATCH_USER_DATA,
191
            self::DOCUMENT_DO_NOT_MATCH_ACCOUNT_DATA,
192
            self::SPECIFIC_CASE,
193
            self::DOCUMENT_FALSIFIED,
194
            self::UNDERAGE_PERSON,
195
            self::OTHER,
196
            self::TRIGGER_PEPS,
197
            self::TRIGGER_SANCTIONS_LISTS,
198
            self::TRIGGER_INTERPOL
199
        ];
200
    }
201
202
    public static function getIncomeRangeFromId(int $id) : string
203
    {
204
        switch ($id) {
205
            case 1:
206
                $range = "incomes <18K€";
207
                break;
208
            case 2:
209
                $range = "incomes between 18 and 30K€";
210
                break;
211
            case 3:
212
                $range = "incomes between 30 and 50K€";
213
                break;
214
            case 4:
215
                $range = "incomes between 50 and 80K€";
216
                break;
217
            case 5:
218
                $range = "incomes between 80 and 120K€";
219
                break;
220
            case 6:
221
                $range = "incomes>120K€";
222
                break;
223
            default:
224
                $range = "Unknown range";
225
        }
226
227
        return $range;
228
    }
229
230
    public static function isPersonTypeOk($personType)
231
    {
232
        return in_array($personType, self::getPersonTypeArray());
233
    }
234
235
    public static function getPersonTypeArray()
236
    {
237
        return [
238
            self::NATURAL_PERSON_TYPE,
239
            self::LEGAL_PERSON_TYPE
240
        ];
241
    }
242
243
    public static function isDocumentTypeOk($documentType)
244
    {
245
        return in_array($documentType, self::getDocumentTypeArray());
246
    }
247
248
    public static function getDocumentTypeArray()
249
    {
250
        return [
251
            self::IDENTITY_PROOF,
252
            self::REGISTRATION_PROOF,
253
            self::ARTICLES_OF_ASSOCIATION,
254
            self::SHAREHOLDER_DECLARATION,
255
            self::ADDRESS_PROOF
256
        ];
257
    }
258
259
    //  https://docs.mangopay.com/endpoints/v2.01/hooks#e246_the-hook-object
260
    // 16th Jan 2017
261
262
    public static function isEventTypeOk($eventType)
263
    {
264
        return in_array($eventType, self::getAllEventTypes());
265
    }
266
267
    public static function isEventTypeToDoWithKYC($eventType)
268
    {
269
        return substr($eventType, 0, 4) == "KYC_";
270
    }
271
272
    public static function isEventTypeToDoWithPayIn($eventType)
273
    {
274
        return substr($eventType, 0, 6) == "PAYIN_";
275
    }
276
277
    public static function getAllEventTypes()
278
    {
279
        return [
280
            self::PAYIN_NORMAL_CREATED,
281
            self::PAYIN_NORMAL_SUCCEEDED,
282
            self::PAYIN_NORMAL_FAILED,
283
284
            self::PAYOUT_NORMAL_CREATED,
285
            self::PAYOUT_NORMAL_SUCCEEDED,
286
            self::PAYOUT_NORMAL_FAILED,
287
288
            self::TRANSFER_NORMAL_CREATED,
289
            self::TRANSFER_NORMAL_SUCCEEDED,
290
            self::TRANSFER_NORMAL_FAILED,
291
292
            self::PAYIN_REFUND_CREATED,
293
            self::PAYIN_REFUND_SUCCEEDED,
294
            self::PAYIN_REFUND_FAILED,
295
296
            self::PAYOUT_REFUND_CREATED,
297
            self::PAYOUT_REFUND_SUCCEEDED,
298
            self::PAYOUT_REFUND_FAILED,
299
300
            self::TRANSFER_REFUND_CREATED,
301
            self::TRANSFER_REFUND_SUCCEEDED,
302
            self::TRANSFER_REFUND_FAILED,
303
304
            self::PAYIN_REPUDIATION_CREATED,
305
            self::PAYIN_REPUDIATION_SUCCEEDED,
306
            self::PAYIN_REPUDIATION_FAILED,
307
308
            self::KYC_CREATED,
309
            self::KYC_SUCCEEDED,
310
            self::KYC_FAILED,
311
            self::KYC_VALIDATION_ASKED,
312
313
            self::DISPUTE_DOCUMENT_CREATED,
314
            self::DISPUTE_DOCUMENT_VALIDATION_ASKED,
315
            self::DISPUTE_DOCUMENT_SUCCEEDED,
316
            self::DISPUTE_DOCUMENT_FAILED,
317
318
            self::DISPUTE_CREATED,
319
            self::DISPUTE_SUBMITTED,
320
            self::DISPUTE_ACTION_REQUIRED,
321
            self::DISPUTE_FURTHER_ACTION_REQUIRED,
322
            self::DISPUTE_CLOSED,
323
            self::DISPUTE_SENT_TO_BANK,
324
325
            self::TRANSFER_SETTLEMENT_CREATED,
326
            self::TRANSFER_SETTLEMENT_SUCCEEDED,
327
            self::TRANSFER_SETTLEMENT_FAILED,
328
329
            self::MANDATE_CREATED,
330
            self::MANDATED_FAILED,
331
            self::MANDATE_ACTIVATED,
332
            self::MANDATE_SUBMITTED,
333
334
            self::PREAUTHORIZATION_PAYMENT_WAITING,
335
            // (not currently available) 'PREAUTHORIZATION_PAYMENT_EXPIRED',
336
            self::PREAUTHORIZATION_PAYMENT_CANCELED,
337
            self::PREAUTHORIZATION_PAYMENT_VALIDATED
338
339
        ];
340
    }
341
}