SEPA úhrada (EPC)
EpcPayment implementuje EPC069-12 v3.1, QR kód pre SEPA úhradu (často nazývaný GiroCode). Sumy sú hodnoty Money z money-for-laravel — presné menšie jednotky, bez zaokrúhľovania s pohyblivou čiarkou:
use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Qr\Enums\{EpcCharset, EpcVersion};
use RoundlyConsulting\Qr\Payloads\Payments\Epc\EpcPayment;
$svg = Qr::epc(new EpcPayment(
name: 'Roundly Consulting s.r.o.',
iban: 'SK46 1100 0000 0029 4714 7960',
bic: 'TATRSKBX', // optional for EEA IBANs in version 002
amount: Money::ofMinor(12550, 'EUR'), // EUR only, 0.01 – 999 999 999.99
purpose: 'GDDS',
reference: 'RF18539007547034', // ISO 11649 structured reference …
// text: 'Invoice 2026-0042', // … or free text (not both)
information: 'Thank you',
version: EpcVersion::V002,
charset: EpcCharset::Utf8,
strictCharset: false,
))->svg();Argumenty
| Argument | Pravidlo |
|---|---|
name | Meno príjemcu, 1–70 znakov. |
iban | Reťazec alebo Iban; musí byť platný IBAN. |
bic | Voliteľný. Povinný vo verzii 001 a vo verzii 002 pre IBAN mimo EHP. |
amount | Voliteľný Money, len EUR, 0.01 – 999 999 999.99. |
purpose | Voliteľný kód účelu, 1–4 veľké písmená alebo číslice (napr. GDDS). |
reference | Štruktúrovaná referencia, 1–35 znakov; hodnota RF… musí spĺňať ISO 11649. |
text | Neštruktúrovaná správa pre príjemcu, 1–140 znakov — nie spolu s reference. |
information | Informácia od príjemcu pre platiteľa, 1–70 znakov. |
version / charset / strictCharset | Cez Qr::… null prevezme hodnoty z konfigurácie payments.epc.*; priame toQrString() použije predvolené hodnoty štandardu (002, UTF-8, bez striktnej sady). |
Čo určuje štandard
- Prvky oddelené LF bez koncového oddeľovača, najviac 331 bajtov v deklarovanej znakovej sade — dlhší payload vyhodí PaymentPayloadTooLongException.
- Korekcia chýb M, najviac verzia 13, segmentácia byte, bez ECI a bez zvyšovania — tieto nastavenia sú uzamknuté.
- Verzia 001 vyžaduje BIC; verzia 002 bez BIC vyžaduje IBAN z EHP (EÚ 27 + IS, LI, NO).
- Osem znakových sád (UTF-8 a ISO-8859-1, -2, -4, -5, -7, -10, -15); znak, ktorý sada nevie zobraziť, vyhodí chybu unrepresentable s názvom poľa.
- strictCharset obmedzí name, text, information a reference na podmnožinu SEPA Latin.
- Ak je dostupné ext-intl, text sa pred kontrolou dĺžky normalizuje na NFC.
Parsovanie naskenovaného kódu
$payment = EpcPayment::fromString($scannedPayload); // parse (LF or CRLF)
$carried = Qr::epc($payment)->payload()->toQrString(); // the exact string the code carries (config applied)
$standard = $payment->toQrString(); // standard defaults for null fields — ignores configSerializovaná podoba zodpovedá štandardu — toto je príklad z EPC069-12 §2.3, ktorý testy balíka reprodukujú bajt po bajte:
BCD
001
1
SCT
BHBLDEHHXXX
Franz Mustermänn
DE71110220330123456789
EUR12.3
GDDS
RF18539007547034Kódy EPC majú predvolene citlivosť Personal; pre kód vytlačený na verejnej stránke faktúry ju znížte na Public.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.