Errors   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 318
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 269
c 3
b 0
f 0
dl 0
loc 318
ccs 2
cts 2
cp 1
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A getMessage() 0 3 1
1
<?php
2
3
namespace PagOnline;
4
5
final class Errors
6
{
7
    // Ok statuses
8
    public const IGFS_000 = 'IGFS_000';
9
10
    // Pending statuses
11
    public const IGFS_814 = 'IGFS_814';
12
13
    // Fail statuses
14
    public const IGFS_001 = 'IGFS_001';
15
    public const IGFS_00155 = 'IGFS_00155';
16
    public const IGFS_00156 = 'IGFS_00156';
17
    public const IGFS_00157 = 'IGFS_00157';
18
    public const IGFS_00158 = 'IGFS_00158';
19
    public const IGFS_00159 = 'IGFS_00159';
20
21
    public const IGFS_002 = 'IGFS_002';
22
    public const IGFS_00260 = 'IGFS_00260';
23
    public const IGFS_00261 = 'IGFS_00261';
24
25
    public const IGFS_003 = 'IGFS_003';
26
    public const IGFS_004 = 'IGFS_004';
27
    public const IGFS_00452 = 'IGFS_00452';
28
    public const IGFS_00456 = 'IGFS_00456';
29
30
    public const IGFS_005 = 'IGFS_005';
31
32
    public const IGFS_006 = 'IGFS_006';
33
34
    public const IGFS_007 = 'IGFS_007';
35
36
    public const IGFS_00701 = 'IGFS_00701';
37
    public const IGFS_00704 = 'IGFS_00704';
38
    public const IGFS_00705 = 'IGFS_00705';
39
40
    public const IGFS_008 = 'IGFS_008';
41
42
    public const IGFS_009 = 'IGFS_009';
43
    public const IGFS_00950 = 'IGFS_00950';
44
    public const IGFS_00951 = 'IGFS_00951';
45
    public const IGFS_00952 = 'IGFS_00952';
46
47
    public const IGFS_010 = 'IGFS_010';
48
    public const IGFS_01000 = 'IGFS_01000';
49
50
    public const IGFS_011 = 'IGFS_011';
51
    public const IGFS_014 = 'IGFS_014';
52
    public const IGFS_015 = 'IGFS_015';
53
    public const IGFS_016 = 'IGFS_016';
54
    public const IGFS_018 = 'IGFS_018';
55
    public const IGFS_020 = 'IGFS_020';
56
    public const IGFS_021 = 'IGFS_021';
57
    public const IGFS_029 = 'IGFS_029';
58
    public const IGFS_030 = 'IGFS_030';
59
    public const IGFS_032 = 'IGFS_032';
60
    public const IGFS_033 = 'IGFS_033';
61
    public const IGFS_083 = 'IGFS_083';
62
    public const IGFS_085 = 'IGFS_085';
63
    public const IGFS_086 = 'IGFS_086';
64
    public const IGFS_087 = 'IGFS_087';
65
    public const IGFS_088 = 'IGFS_088';
66
    public const IGFS_091 = 'IGFS_091';
67
    public const IGFS_092 = 'IGFS_092';
68
    public const IGFS_093 = 'IGFS_093';
69
    public const IGFS_095 = 'IGFS_095';
70
    public const IGFS_096 = 'IGFS_096';
71
    public const IGFS_097 = 'IGFS_097';
72
    public const IGFS_098 = 'IGFS_098';
73
    public const IGFS_10000 = 'IGFS_10000';
74
    public const IGFS_101 = 'IGFS_101';
75
    public const IGFS_102 = 'IGFS_102';
76
    public const IGFS_104 = 'IGFS_104';
77
    public const IGFS_107 = 'IGFS_107';
78
    public const IGFS_108 = 'IGFS_108';
79
    public const IGFS_112 = 'IGFS_112';
80
    public const IGFS_115 = 'IGFS_115';
81
    public const IGFS_117 = 'IGFS_117';
82
    public const IGFS_118 = 'IGFS_118';
83
    public const IGFS_119 = 'IGFS_119';
84
    public const IGFS_121 = 'IGFS_121';
85
    public const IGFS_122 = 'IGFS_122';
86
    public const IGFS_123 = 'IGFS_123';
87
    public const IGFS_125 = 'IGFS_125';
88
    public const IGFS_129 = 'IGFS_129';
89
    public const IGFS_160 = 'IGFS_160';
90
    public const IGFS_164 = 'IGFS_164';
91
    public const IGFS_180 = 'IGFS_180';
92
    public const IGFS_181 = 'IGFS_181';
93
    public const IGFS_1921 = 'IGFS_1921';
94
    public const IGFS_1922 = 'IGFS_1922';
95
    public const IGFS_1923 = 'IGFS_1923';
96
    public const IGFS_20000 = 'IGFS_20000';
97
    public const IGFS_20001 = 'IGFS_20001';
98
    public const IGFS_20007 = 'IGFS_20007';
99
    public const IGFS_20010 = 'IGFS_20010';
100
    public const IGFS_20011 = 'IGFS_20011';
101
    public const IGFS_20012 = 'IGFS_20012';
102
    public const IGFS_20013 = 'IGFS_20013';
103
    public const IGFS_20014 = 'IGFS_20014';
104
    public const IGFS_20018 = 'IGFS_20018';
105
    public const IGFS_20019 = 'IGFS_20019';
106
    public const IGFS_20020 = 'IGFS_20020';
107
    public const IGFS_20021 = 'IGFS_20021';
108
    public const IGFS_20022 = 'IGFS_20022';
109
    public const IGFS_20023 = 'IGFS_20023';
110
    public const IGFS_20024 = 'IGFS_20024';
111
    public const IGFS_20025 = 'IGFS_20025';
112
    public const IGFS_20026 = 'IGFS_20026';
113
    public const IGFS_20027 = 'IGFS_20027';
114
    public const IGFS_20028 = 'IGFS_20028';
115
    public const IGFS_20029 = 'IGFS_20029';
116
    public const IGFS_20030 = 'IGFS_20030';
117
    public const IGFS_20031 = 'IGFS_20031';
118
    public const IGFS_20032 = 'IGFS_20032';
119
    public const IGFS_20033 = 'IGFS_20033';
120
    public const IGFS_20034 = 'IGFS_20034';
121
    public const IGFS_20035 = 'IGFS_20035';
122
    public const IGFS_20036 = 'IGFS_20036';
123
    public const IGFS_20037 = 'IGFS_20037';
124
    public const IGFS_20038 = 'IGFS_20038';
125
    public const IGFS_20044 = 'IGFS_20044';
126
    public const IGFS_20090 = 'IGFS_20090';
127
    public const IGFS_20100 = 'IGFS_20100';
128
129
    public const IGFS_400 = 'IGFS_400';
130
    public const IGFS_800 = 'IGFS_800';
131
    public const IGFS_801 = 'IGFS_801';
132
    public const IGFS_802 = 'IGFS_802';
133
    public const IGFS_803 = 'IGFS_803';
134
    public const IGFS_804 = 'IGFS_804';
135
    public const IGFS_805 = 'IGFS_805';
136
    public const IGFS_807 = 'IGFS_807';
137
    public const IGFS_808 = 'IGFS_808';
138
    public const IGFS_809 = 'IGFS_809';
139
    public const IGFS_810 = 'IGFS_810';
140
    public const IGFS_811 = 'IGFS_811';
141
    public const IGFS_812 = 'IGFS_812';
142
    public const IGFS_813 = 'IGFS_813';
143
    public const IGFS_815 = 'IGFS_815';
144
145
    public const IGFS_90000 = 'IGFS_90000';
146
    public const IGFS_90005 = 'IGFS_90005';
147
148
    public const IGFS_902 = 'IGFS_902';
149
    public const IGFS_903 = 'IGFS_903';
150
    public const IGFS_907 = 'IGFS_907';
151
    public const IGFS_908 = 'IGFS_908';
152
    public const IGFS_909 = 'IGFS_909';
153
    public const IGFS_910 = 'IGFS_910';
154
    public const IGFS_911 = 'IGFS_911';
155
    public const IGFS_912 = 'IGFS_912';
156
    public const IGFS_913 = 'IGFS_913';
157
    public const IGFS_990 = 'IGFS_990';
158
159
    /**
160
     * Array with all messages.
161
     *
162
     * @var array
163
     */
164
    public const MESSAGES = [
165
        self::IGFS_000 => 'TRANSACTION OK',
166
167
        // Pending statuses
168
        self::IGFS_814 => 'TRANSACTION PENDING',
169
170
        // Fail statuses
171
        self::IGFS_001 => 'UNKNOWN RECIPIENT',
172
        self::IGFS_00155 => 'INVALID BATCH ID',
173
        self::IGFS_00156 => 'NOT UNIQUE BATCH ID',
174
        self::IGFS_00157 => 'INVALID PAYMENT METHOD',
175
        self::IGFS_00158 => 'NOT NUMERIC CARD NUMBER',
176
        self::IGFS_00159 => 'NOT EXISTENT CARD NUMBER',
177
178
        self::IGFS_002 => 'EXPIRED CARD',
179
        self::IGFS_00260 => 'THE AMOUNT OF THE CLAIM EXCEEDS THE AMOUNT OF THE MOVEMENT',
180
        self::IGFS_00261 => 'THE AMOUNT OF THE MOVEMENT EXCEEDS THE AMOUNT OF THE AUTHORISATION',
181
182
        self::IGFS_003 => 'WRONG CARD',
183
        self::IGFS_004 => 'BLACKLISTED CARD',
184
        self::IGFS_00452 => 'NOT EXISTENT TERMINAL CODE',
185
        self::IGFS_00456 => 'WRONG TERMINAL CODE',
186
        self::IGFS_005 => 'FORMATTING ERROR',
187
        self::IGFS_006 => 'FILE SYSTEM ERROR',
188
        self::IGFS_007 => 'COMMUNICATION ERROR',
189
        self::IGFS_00701 => 'UNPROCESSED BATCH ID',
190
        self::IGFS_00704 => 'NOT NUMERIC BATCH ID',
191
        self::IGFS_00705 => 'NOT EXISTENT BATCH ID',
192
193
        self::IGFS_008 => 'AUTHORIZATION DENIED',
194
195
        self::IGFS_009 => 'WITHDRAW CARD',
196
        self::IGFS_00950 => 'BATCH UPLOAD DIRECTORY NOT EXISTS',
197
        self::IGFS_00951 => 'BATCH DOWNLOAD DIRECTORY NOT EXISTS',
198
        self::IGFS_00952 => 'BATCH ARCHIVE DIRECTORY NAME NOT EXISTS',
199
200
        self::IGFS_010 => 'UNAUTHORIZED MERCHANT',
201
        self::IGFS_01000 => 'TRANSACTION DENIED BY THE ANTI-FRAUD SYSTEM',
202
203
        self::IGFS_011 => 'CONTACT ACQUIRER',
204
        self::IGFS_014 => 'NON-CONTRACTED MERCHANT',
205
        self::IGFS_015 => 'UNMANAGED CARD',
206
        self::IGFS_016 => 'CARD IN NEGATIVE OR FOREIGN RANGE',
207
        self::IGFS_018 => 'CARD NON-EXISTENT',
208
        self::IGFS_020 => 'INVALID CARD',
209
        self::IGFS_021 => 'WRONG MERCHANT CODE',
210
        self::IGFS_029 => 'WRONG EXPIRATION DATE',
211
        self::IGFS_030 => 'INSUFFICIENT FUNDS',
212
        self::IGFS_032 => 'INVALID AMOUNT',
213
        self::IGFS_033 => 'ORIGINAL TRANSACTION NOT FOUND',
214
        self::IGFS_083 => 'TRANSACTION ENCRYPTION ERROR',
215
        self::IGFS_085 => 'WRONG CURRENCY CODE',
216
        self::IGFS_086 => 'SYSTEM MALFUNCTION',
217
        self::IGFS_087 => 'ACQUIRER NOT REACHABLE',
218
        self::IGFS_088 => 'NO RESPONSE FROM ACQUIRER',
219
        self::IGFS_091 => 'MALFUNCTION OF THE AQUIRER SYSTEM',
220
        self::IGFS_092 => 'UNKNOWN TRANSACTION',
221
        self::IGFS_093 => 'ALREADY PRESENT CONFIRMATION',
222
        self::IGFS_095 => 'CANCELLATION DUE TO NON-EXISTENT NOTIFICATION',
223
        self::IGFS_096 => 'CANCELLATION DUE TO NON-EXISTENT AUTHORISATION',
224
        self::IGFS_097 => 'CONFIRMATION FOR NON-EXISTENT AUTHORISATION',
225
        self::IGFS_098 => 'AMOUNT EXCEEDING THE AMOUNT AUTHORISED',
226
        self::IGFS_10000 => 'INVALID CHARACTERS',
227
        self::IGFS_101 => 'WRONG MAC',
228
        self::IGFS_102 => 'FRAUD SUSPECT',
229
        self::IGFS_104 => 'RESTRICTED CARD',
230
        self::IGFS_107 => 'CONTACT ISSUER',
231
        self::IGFS_108 => 'CONTACT ISSUER: SPECIAL CASE',
232
        self::IGFS_112 => 'INSERT PIN',
233
        self::IGFS_115 => 'FUNCTION NOT SUPPORTED ON CARD',
234
        self::IGFS_117 => 'WRONG PIN',
235
        self::IGFS_118 => 'ACCOUNT NOT FOUND OR NOT ENABLED',
236
        self::IGFS_119 => 'OPERATION NOT ALLOWED TO THE HOLDER',
237
        self::IGFS_121 => 'EXCEEDED LIMIT AMOUNT',
238
        self::IGFS_122 => 'SECURITY ERROR',
239
        self::IGFS_123 => 'FREQUENCY LIMIT EXCEEDED',
240
        self::IGFS_125 => 'CARD NOT ACTIVE',
241
        self::IGFS_129 => 'SUSPECTED FRAUD ON CARD',
242
        self::IGFS_160 => 'LOST CARD',
243
        self::IGFS_164 => 'DATE BEFORE THE CARD WAS BLOCKED',
244
        self::IGFS_180 => 'ERRORED DATA',
245
        self::IGFS_181 => 'INCORRECT SENSITIVE DATA',
246
        self::IGFS_1921 => '3DS: IMPOSSIBLE TO AUTHENTICATE CARD (PARES=U)',
247
        self::IGFS_1922 => '3DS: AUTHENTICATION FAILED (PARES=N)',
248
        self::IGFS_1923 => '3DS: IMPOSSIBLE TO VERIFY CARD REGISTRATION (VERES=U)',
249
        self::IGFS_20000 => 'MISSING DATA',
250
        self::IGFS_20001 => 'INVALID OPERATION CODE',
251
        self::IGFS_20007 => 'INVALID ORDER STATUS',
252
        self::IGFS_20010 => 'INVALID REPLY URL',
253
        self::IGFS_20011 => 'INVALID ERROR URL',
254
        self::IGFS_20012 => 'INVALID SHOP ID',
255
        self::IGFS_20013 => 'INVALID LANGUAGE CODE',
256
        self::IGFS_20014 => 'INVALID ADDITIONAL FIELD',
257
        self::IGFS_20018 => 'INVALID CVV2',
258
        self::IGFS_20019 => 'SHOPID NON VALIDO', // Duplicates IGFS_20012
259
        self::IGFS_20020 => 'INVALID ADDITIONAL FIELD', // Duplicates IGFS_20014
260
        self::IGFS_20021 => 'INVALID API VERSION FIELD',
261
        self::IGFS_20022 => 'INVALID SIGNATURE FIELD',
262
        self::IGFS_20023 => 'INVALID PAYMENT ID FIELD',
263
        self::IGFS_20024 => 'MISSING AUTHORISATION CODE',
264
        self::IGFS_20025 => 'INVALID REFERENCE DATA FIELD',
265
        self::IGFS_20026 => 'DUPLICATED SHOP ID',
266
        self::IGFS_20027 => 'INVALID BATCH REQUEST',
267
        self::IGFS_20028 => 'MISSING BATCH DATA',
268
        self::IGFS_20029 => 'INVALID BATCH DATA',
269
        self::IGFS_20030 => 'INVALID BATCH DATA DIRECTORY',
270
        self::IGFS_20031 => 'DUPLICATED BATCH DATA',
271
        self::IGFS_20032 => 'INVALID BATCH FILE NAME',
272
        self::IGFS_20033 => 'BATCH DATA NOT FOUND',
273
        self::IGFS_20034 => 'INVALID BATCH SHOPID',
274
        self::IGFS_20035 => 'INVALID ORDER ID',
275
        self::IGFS_20036 => 'INVALID PAN',
276
        self::IGFS_20037 => 'INVALID CVV2',
277
        self::IGFS_20038 => 'WRONG EXPIRATION DATE',
278
        self::IGFS_20044 => 'INVALID PAYMENT DESCRIPTION',
279
        self::IGFS_20090 => 'TRANSACTION DELETED BY THE USER',
280
        self::IGFS_20100 => 'ERROR IN MERCHANT NOTIFICATION',
281
282
        self::IGFS_400 => 'CANCELLATION OK', // "Storno"
283
        self::IGFS_800 => 'TERMINAL NOT ENABLED',
284
        self::IGFS_801 => 'WRONG SELECTED BANK',
285
        self::IGFS_802 => 'PIN ATTEMPTS EXHAUSTED',
286
        self::IGFS_803 => 'WRONG TERMINAL CODE',
287
        self::IGFS_804 => 'MISALIGNED KEY',
288
        self::IGFS_805 => 'ENCRYPTION ERROR',
289
        self::IGFS_807 => 'CLOSED TERMINAL',
290
        self::IGFS_808 => 'TERMINAL NOT CLOSED',
291
        self::IGFS_809 => 'SEQUENCE FAILURE',
292
        self::IGFS_810 => 'TERMINAL NOT RECOGNIZED',
293
        self::IGFS_811 => 'TERMINAL LOCKED',
294
        self::IGFS_812 => 'TERMINAL FORCEDLY CLOSED',
295
        self::IGFS_813 => 'OPERATION NOT PERMITTED',
296
        self::IGFS_815 => 'LOCKED CARD',
297
298
        self::IGFS_90000 => 'DATABASE ERROR',
299
        self::IGFS_90005 => 'WRONG TIMESTAMP',
300
301
        self::IGFS_902 => 'INVALID TRANSACTION',
302
        self::IGFS_903 => 'RESEND TRANSACTION',
303
        self::IGFS_907 => 'NON ADHERING ISSUER',
304
        self::IGFS_908 => 'DESTINATION NOT FOUND',
305
        self::IGFS_909 => 'SYSTEM ERROR',
306
        self::IGFS_910 => 'ISSUER SYSTEM NOT ACTIVE',
307
        self::IGFS_911 => 'TIME OUT',
308
        self::IGFS_912 => 'ISSUER NOT REACHABLE',
309
        self::IGFS_913 => 'DUPLICATED TRANSACTION',
310
        self::IGFS_990 => 'INACTIVE PAYMENT TOOL',
311
    ];
312
313
    /**
314
     * Get message.
315
     *
316
     * @param string $errorCode
317
     *
318
     * @return null|string
319
     */
320 2
    public static function getMessage(string $errorCode): ?string
321
    {
322 2
        return self::MESSAGES[$errorCode] ?? null;
323
    }
324
}
325