Skip to content

Commit 80d496a

Browse files
committed
wip
1 parent eb2fe1a commit 80d496a

File tree

3 files changed

+301
-3
lines changed

3 files changed

+301
-3
lines changed

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,14 @@ $client->api()->doApplePay(...);
4545
> [!NOTE]
4646
> The client automatically adds the `merchant`, `salt` and `sdkVersion` parameters to the body as well as the `Signature` header to the request.
4747
48+
### Error Handling
49+
50+
SimplePay responses with `HTTP 200` even if the operation is failed or an error occured. The handle this properly the Client has a built-in middleware that checks whether the response contains any errors, if so, it throws an `ApiException`.
51+
52+
```php
53+
try {
54+
$client->api()->start(...);
55+
} catch (ApiException $exception) {
56+
Log::info()
57+
}
58+
```

src/Client.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Client
1818
/**
1919
* The client version.
2020
*/
21-
public const VERSION = '1.0.0';
21+
public const VERSION = '0.1.1';
2222

2323
/**
2424
* The transaction API instance.
@@ -96,9 +96,11 @@ protected function client(): ClientInterface
9696
$body = json_decode($body, true) ?? [];
9797

9898
if (empty($body['redirectUrl'] ?? '') && ! empty($body['errorCodes'] ?? [])) {
99+
$code = (int) ($body['errorCodes'][0] ?? 999);
100+
99101
throw new ApiException(
100-
'SimplePay error.',
101-
(int) $body['errorCodes'][0] ?? 999,
102+
Error::message($code),
103+
$code,
102104
$response->getHeaders(),
103105
$response->getBody()
104106
);

src/Error.php

Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
<?php
2+
3+
namespace Cone\SimplePay;
4+
5+
abstract class Error
6+
{
7+
/**
8+
* Get the message for the error code.
9+
*/
10+
public static function message(string|int $code): string
11+
{
12+
$message = match ((string) $code) {
13+
'999' => 'Általános hibakód',
14+
'1529' => 'SimplePay belső hiba',
15+
'2003' => 'Megadott jelszó érvénytelen',
16+
'2004' => 'Általános hibakód',
17+
'2006' => 'Megadott kereskedő nem található',
18+
'2008' => 'Megadott e-mail nem megfelelő',
19+
'2010' => 'Megadott tranzakcióazonosító nem megfelelő',
20+
'2013' => 'Nincs elég fedezet a kártyán',
21+
'2014' => 'Fizetéshez jelszó szükséges',
22+
'2016' => 'A felhasználó megszakította a fizetés',
23+
'2019' => 'Időtúllépés az elfogadói kommunikációban',
24+
'2020' => 'Elfogadó bank oldali hiba',
25+
'2021' => 'Kártyakibocsátó interaktív 3DS ellenőrzést igényel',
26+
'2030' => 'Kártya nem törölhető, mert egyenlege pozitív / Megadott összeg helytelen',
27+
'2040' => 'Érvénytelen devizanem',
28+
'2063' => 'Kártya inaktív',
29+
'2064' => 'Hibás bankkártya adatok',
30+
'2066' => 'Kártya nem terhelhető / limittúllépés miatt',
31+
'2071' => 'Hibás bankkártya adatok / nem létező kártya',
32+
'2072' => 'Kártya lejárat nem megfelelő / nem létező kártya',
33+
'2073' => 'A megadott CVC nem megfelelő / nem létező kártya',
34+
'2074' => 'Kártyabirtokos neve több, mint 32 karakter',
35+
'2078' => 'Általános hiba, a kártyakibocsátó bank nem adja meg a hiba okát',
36+
'2079' => 'A routingnak megfelelő elfogadó bank',
37+
'2130' => 'Helytelen bemeneti kód',
38+
'2131' => 'Helytelen cím megadás',
39+
'2132' => 'Helytelen születési dátum',
40+
'3002' => '3DS folyamat hiba',
41+
'3003' => '3DS folyamat hiba',
42+
'3004' => 'Redirect 3DS challenge folyamán (vásárló átirányítása szükséges a kártyakibocsátó ACS szerverére a kapott URL felhasználásával)',
43+
'3012' => '3DS folyamat hiba, nem 3DS képes kártya, 3DS valamelyik szereplőnél levő probléma',
44+
'3013' => '3DS folyamat hiba',
45+
'5000' => 'Általános hibakód',
46+
'5010' => 'A kereskedői fiók nem található',
47+
'5011' => 'A tranzakció nem található',
48+
'5012' => 'A kereskedői fiók nem egyezik meg',
49+
'5013' => 'A tranzakció már létezik (és nincs újraindíthatóként jelölve',
50+
'5014' => 'A tranzakció nem megfelelő típusú',
51+
'5015' => 'A tranzakció éppen fizetés alatt',
52+
'5016' => 'Tranzakció időtúllépés (elfogadói/acquirer oldal felől érkező kérés során',
53+
'5017' => 'A tranzakció meg lett szakítva (elfogadói/acquirer oldal felől érkező kérés során',
54+
'5018' => 'A tranzakció már kifizetésre került (így újabb művelet nem kezdeményezhető',
55+
'5020' => 'A kérésben megadott érték vagy az eredeti tranzakcióösszeg ("originalTotal") ellenőrzése sikertelen',
56+
'5021' => 'A tranzakció már lezárásra került (így újabb Finish művelet nem kezdeményezhető',
57+
'5022' => 'A tranzakció nem a kéréshez elvárt állapotban van',
58+
'5023' => 'Ismeretlen / nem megfelelő fiók devizanem',
59+
'5025' => 'Érvénytelen név',
60+
'5026' => 'Tranzakció letiltva (sikertelen fraud-vizsgálat következtében',
61+
'5027' => 'Tranzakció zárolási probléma',
62+
'5028' => 'A tranzakció nem egyeztetett',
63+
'5029' => 'A tranzakció még nem került visszatérítésre',
64+
'5030' => 'A művelet nem engedélyezett',
65+
'5033' => 'Visszatérítési tranzakció törlése nem engedélyezett',
66+
'5040' => 'Tárolt kártya nem található',
67+
'5041' => 'Tárolt kártya lejárt',
68+
'5042' => 'Tárolt kártya inaktiválva',
69+
'5043' => 'Fantom tárolt kártya',
70+
'5044' => 'Recurring nincs engedélyezve',
71+
'5045' => 'Ismétlődő regisztrációhoz távoli azonosító szükséges',
72+
'5046' => 'Ismétlődő regisztrációhoz IDTS szükséges',
73+
'5047' => 'Ismétlődő IDTS',
74+
'5048' => 'Recurring until szükséges',
75+
'5049' => 'Recurring until eltér',
76+
'5071' => 'Tárolt kártya érvénytelen hossz',
77+
'5072' => 'Tárolt kártya érvénytelen művelet',
78+
'5080' => 'Eredeti azonosító eltérés az ismétlődő regisztrációnál',
79+
'5081' => 'Recurring token nem található',
80+
'5082' => 'Recurring token használatban',
81+
'5083' => 'Token times szükséges',
82+
'5084' => 'Token times túl nagy',
83+
'5085' => 'Token until szükséges',
84+
'5086' => 'Token until túl nagy',
85+
'5087' => 'Token maxAmount szükséges',
86+
'5088' => 'Token maxAmount túl nagy',
87+
'5089' => 'Recurring és oneclick regisztráció egyszerre nem indítható egy tranzakcióban',
88+
'5090' => 'Recurring token szükséges',
89+
'5091' => 'Recurring token inaktív',
90+
'5092' => 'Recurring token lejárt',
91+
'5093' => 'Recurring account eltérés',
92+
'5094' => 'Érvénytelen időtúllépés meghatározás',
93+
'5095' => 'Előre kiválasztott fizetési mód szükséges',
94+
'5110' => 'Nem megfelelő visszatérítendő összeg',
95+
'5111' => 'Az orderRef és a transactionId közül az egyik küldése kötelező',
96+
'5113' => 'A hívó kliensprogram megnevezése, verziószáma ("sdkVersion") kötelező',
97+
'5201' => 'A kereskedői fiók azonosítója ("merchant") hiányzik',
98+
'5213' => 'A kereskedői tranzakcióazonosító ("orderRef") hiányzik',
99+
'5216' => 'Érvénytelen szállítási összeg',
100+
'5217' => 'Érvénytelen módszer',
101+
'5219' => 'Email cím ("customerEmail") hiányzik, vagy nem email formátumú',
102+
'5220' => 'A tranzakció nyelve ("language") nem megfelelő',
103+
'5223' => 'A tranzakció pénzneme ("currency") nem megfelelő, vagy hiányzik',
104+
'5226' => 'Érvénytelen kommunikációs állapot',
105+
'5227' => 'Érvénytelen időtúllépés meghatározás',
106+
'5227' => 'Kommunikációs hiba',
107+
'5228' => 'Visszatérítési limit túllépve',
108+
'5229' => 'Visszatérítési határidő lejárt',
109+
'5230' => 'Visszatérítés nem engedélyezett',
110+
'5302' => 'Nem megfelelő aláírás (signature) a beérkező kérésben. (A kereskedői API-ra érkező hívás aláírás-ellenőrzése sikertelen)',
111+
'5303' => 'Nem megfelelő aláírás (signature) a beérkező kérésben. (A kereskedői API-ra érkező hívás aláírás-ellenőrzése sikertelen)',
112+
'5304' => 'Időtúllépés miatt sikertelen hívás',
113+
'5305' => 'Sikertelen tranzakcióküldés a fizetési rendszer (elfogadói/acquirer oldal) felé',
114+
'5306' => 'Sikertelen tranzakciólétrehozás',
115+
'5307' => 'A kérésben megadott devizanem ("currency") nem egyezik a fiókhoz beállítottal',
116+
'5308' => 'A kérésben érkező kétlépcsős tranzakcióindítás nem engedélyezett a kereskedői fiókon',
117+
'5309' => 'Számlázási adatokban a címzett hiányzik ("name" természetes személy esetén, "company" jogi személy esetén',
118+
'5310' => 'Számlázási adatokban a város kötelező',
119+
'5311' => 'Számlázási adatokban az irányítószám kötelező',
120+
'5312' => 'Számlázási adatokban a cím első sora kötelező',
121+
'5313' => 'A megvásárlandó termékek listájában ("items") a termék neve ("title") kötelező',
122+
'5314' => 'A megvásárlandó termékek listájában ("items") a termék egységára ("price") kötelező',
123+
'5315' => 'A megvásárlandó termékek listájában ("items") a rendelt mennyiség ("amount") kötelező pozitív egész szám',
124+
'5316' => 'Szállítási adatokban a címzett kötelező ("name" természetes személy esetén, "company" jogi személy esetén',
125+
'5317' => 'Szállítási adatokban a város kötelező',
126+
'5318' => 'Szállítási adatokban az irányítószám kötelező',
127+
'5319' => 'Szállítási adatokban a cím első sora kötelező',
128+
'5320' => 'A hívó kliensprogram megnevezése, verziószáma ("sdkVersion") kötelező',
129+
'5321' => 'Formátumhiba / érvénytelen JSON string',
130+
'5322' => 'Érvénytelen ország',
131+
'5323' => 'Lezárás összege érvénytelen',
132+
'5324' => 'Termékek listája ("items"), vagy tranzakciófőösszeg ("total") szükséges',
133+
'5325' => 'Érvénytelen URL',
134+
'5326' => 'Hiányzó cardId',
135+
'5327' => 'Lekérdezendő kereskedői tranzakcióazonosítók ("orderRefs") maximális számának (50) túllépése',
136+
'5328' => 'Lekérdezendő SimplePay tranzakcióazonosítók ("transactionIds") maximális számának (50) túllépése',
137+
'5329' => 'Lekérdezendő tranzakcióindítás időszakában "from" az "until" időpontot meg kell előzze',
138+
'5330' => 'Lekérdezendő tranzakcióindítás időszakában "from" és "until" együttesen adandó meg',
139+
'5331' => 'Érvénytelen tranzakció forrás',
140+
'5332' => 'Tranzakció azonosítója és célpontja szükséges',
141+
'5333' => 'Hiányzó tranzakció azonosító',
142+
'5334' => 'Bankkártya adatok szükségesek',
143+
'5335' => 'Bankkártya BIN szükséges',
144+
'5336' => 'Csalásellenes hash szükséges',
145+
'5337' => 'Hiba összetett adat szöveges formába írásakor',
146+
'5338' => 'Acquirer tranzakció azonosítója szükséges',
147+
'5339' => 'Lekérdezendő tranzakciókhoz tartozóan vagy az indítás időszaka ("from" és "until") vagy az azonosítólista ("orderRefs" vagy "transactionIds") megadandó',
148+
'5340' => 'A tranzakció nem tárcához kötött',
149+
'5341' => 'Partner opció szükséges',
150+
'5342' => 'Partner számlák szükségesek',
151+
'5343' => 'Nem megfelelő tranzakcióstátusz',
152+
'5344' => 'Nem megfelelő tranzakcióstátusz',
153+
'5345' => 'Áfa összege kisebb, mint 0',
154+
'5346' => 'Érvénytelen tranzakciós mód',
155+
'5347' => 'Érvénytelen Auchan részletfizetés',
156+
'5348' => 'JWT szükséges',
157+
'5349' => 'A tranzakció nem engedélyezett az elszámoló fiókon (AMEX, TSP',
158+
'5350' => 'Érvénytelen email',
159+
'5351' => 'Érvénytelen nap',
160+
'5352' => 'Simple business fiók hiba / nem létező fiók',
161+
'5353' => 'Érvénytelen kezdő és záró paraméterek',
162+
'5354' => 'Érvénytelen eszközazonosító',
163+
'5355' => 'Nem SoftPOS számla',
164+
'5356' => 'Érvénytelen sablon',
165+
'5357' => 'Érvénytelen rendelési hivatkozás',
166+
'5358' => 'Érvénytelen időszak',
167+
'5359' => 'SoftPOS nem elérhető',
168+
'5360' => 'A tranzakció távoli hozzárendelése sikertelen',
169+
'5361' => 'A tranzakció távoli törlése sikertelen',
170+
'5362' => 'A tranzakció távoli lejáratának beállítása sikertelen',
171+
'5363' => 'Eredeti tranzakció szükséges',
172+
'5364' => 'Érvénytelen további információ',
173+
'5370' => 'Érvénytelen termékár',
174+
'5371' => 'Érvénytelen termékmennyiség',
175+
'5380' => 'E-mail paraméterek szükségesek',
176+
'5381' => 'E-mail típus szükséges',
177+
'5382' => 'Ügyfél e-mail címe szükséges',
178+
'5401' => 'Érvénytelen salt, nem 32-64 hosszú',
179+
'5402' => 'Tranzakció alapja szükséges',
180+
'5403' => 'Simple tranzakció a fizetés alatt',
181+
'5404' => 'Érvénytelen tranzakció állapot',
182+
'5405' => 'A tranzakció nem CDE munkamenetben van',
183+
'5413' => 'Létrejött utalási tranzakció',
184+
'5501' => 'Böngésző accept kötelező',
185+
'5502' => 'Böngésző agent kötelező',
186+
'5503' => 'Böngésző ip kötelező',
187+
'5504' => 'Böngésző java kötelező',
188+
'5505' => 'Böngésző nyelv kötelező',
189+
'5506' => 'Böngésző szín kötelező',
190+
'5507' => 'Böngésző magasság kötelező',
191+
'5508' => 'Böngésző szélesség kötelező',
192+
'5509' => 'Böngésző tz kötelező',
193+
'5530' => 'Érvénytelen type',
194+
'5601' => 'Érvénytelen azonosító kód',
195+
'5601' => 'Tranzakció limit túllépve',
196+
'5602' => 'Érvénytelen üzenet',
197+
'5603' => 'Érvénytelen tranzakciós helyzet',
198+
'5604' => 'Érvénytelen kiskereskedelmi adatok',
199+
'5605' => 'Érvénytelen eszköz',
200+
'5606' => 'Érvénytelen számlaazonosító',
201+
'5607' => 'Érvénytelen ügyfél adatok',
202+
'5608' => 'Érvénytelen ellenőrző kód',
203+
'5608' => 'Túl nagy adatmennyiség',
204+
'5700' => 'Hiányzó sikeres hitelesítési kommunikáció',
205+
'5701' => 'Ajánlás már elküldve',
206+
'5702' => 'Hiányzó részletfizetési adat',
207+
'5703' => 'Érvénytelen opció index',
208+
'5704' => 'Tartomány választás nem elérhető',
209+
'5705' => 'Teljes összegű fizetés nem elérhető',
210+
'5706' => 'Hiba az acquiring hívás során',
211+
'5707' => 'Részletfizetési adat értelmezési hiba',
212+
'5708' => 'Érvénytelen részletfizetési szám',
213+
'5709' => 'Hiányzó részletfizetési opció',
214+
'5710' => 'Hiányzó sikeres ajánlási kommunikáció',
215+
'5711' => 'Elszámolószámla-azonosító szükséges',
216+
'5712' => 'Sorozat méret szükséges',
217+
'5812' => 'Érvénytelen kártyatípus',
218+
'5813' => 'Kártya / tranzakció elutasítva',
219+
'5900' => 'Érvénytelen alkalmazás platform',
220+
'5901' => 'Érvénytelen időbélyeg',
221+
'5902' => 'Mobilalkalmazás nem található',
222+
'5903' => 'Deeplink adatcsomag nem található',
223+
'5904' => 'Platform vagy belső azonosítók szükségesek',
224+
'5905' => 'Visszatérő URL-ek szükségesek',
225+
'5906' => 'Több visszatérő URL megadva',
226+
'6100' => 'RTP (Real-Time Payment) nem engedélyezett',
227+
'6101' => 'Érvénytelen csomag hivatkozás',
228+
'6102' => 'Érvénytelen rendelési hivatkozás',
229+
'6103' => 'Érvénytelen teljes összeg',
230+
'6104' => 'Érvénytelen pénznem',
231+
'6105' => 'Ügyfél szükséges',
232+
'6106' => 'Szükséges az ügyfél e-mail címe vagy bankszámlaszáma',
233+
'6107' => 'Érvénytelen ügyfél e-mail cím',
234+
'6108' => 'Érvénytelen ügyfél bankszámlaszám',
235+
'6109' => 'Érvénytelen ismétlődő idők',
236+
'6110' => 'Szükséges az ismétlődés időtartama',
237+
'6111' => 'Az ismétlődés időtartama túllépve',
238+
'6112' => 'Érvénytelen ismétlődő nap',
239+
'6113' => 'Érvénytelen ismétlődő intervallum',
240+
'6114' => 'Üres fizetések',
241+
'6115' => 'Érvénytelen fizetési eredmény',
242+
'6116' => 'Érvénytelen kereskedő',
243+
'6117' => 'Szükséges az SDK verziója',
244+
'6118' => 'A tranzakció már létezik',
245+
'6119' => 'Érvénytelen nyelv',
246+
'6120' => 'Érvénytelen tranzakciós állapot',
247+
'6121' => 'Érvénytelen csomag vagy rendelési hivatkozás',
248+
'6122' => 'Érvénytelen lekérdezési paraméterek',
249+
'6123' => 'Rendelési azonosító méret túllépés',
250+
'6124' => 'A kezdő dátum az záró dátum után van',
251+
'6125' => 'Kezdő és záró dátum együtt szükséges',
252+
'6126' => 'Hiányzó RTP azonosító',
253+
'6127' => 'Érvénytelen állapot',
254+
'6128' => 'Érvénytelen határidő',
255+
'6129' => 'Lekérdezéshez rendelési hivatkozás vagy tranzakció azonosító szükséges',
256+
'6130' => 'Giro hiba',
257+
'6131' => 'A tranzakció nem létezik',
258+
'6132' => 'Ügyfél vagy bankszámla szükséges',
259+
'6133' => 'Túl hosszú közlemény',
260+
'6134' => 'A bankszámla már be van állítva',
261+
'6135' => 'Tranzakciók számának túllépése',
262+
'6140' => 'Tranzakció inicializálása',
263+
'6141' => 'Várakozás a bankszámla adatokra',
264+
'6142' => 'A tranzakció elküldésre kész',
265+
'6143' => 'A tranzakció elküldve',
266+
'6144' => 'A tranzakció fogadva',
267+
'6145' => 'A tranzakció elfogadva',
268+
'6146' => 'A tranzakció elutasítva',
269+
'6147' => 'A tranzakció lejárt',
270+
'6148' => 'A tranzakció visszafordítva',
271+
'6149' => 'Sikertelen tranzakció',
272+
'6150' => 'Változtathatatlan tranzakció',
273+
'6151' => 'Fizetett tranzakció',
274+
'6153' => 'Tranzakció nem található',
275+
'6154' => 'Tranzakció végállapotban',
276+
'6155' => 'Érvénytelen partner bankszámla',
277+
'6156' => 'Visszafordítás folyamatban',
278+
'6157' => 'Tranzakciók szükségesek',
279+
'6999' => 'Általános hiba',
280+
default => 'Unknown error',
281+
};
282+
283+
return sprintf('[%s] %s', (string) $code, $message);
284+
}
285+
}

0 commit comments

Comments
 (0)