NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
QR for Laravel

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

ArgumentPravidlo
nameMeno príjemcu, 1–70 znakov.
ibanReťazec alebo Iban; musí byť platný IBAN.
bicVoliteľný. Povinný vo verzii 001 a vo verzii 002 pre IBAN mimo EHP.
amountVoliteľný Money, len EUR, 0.01 – 999 999 999.99.
purposeVoliteľ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.
textNeštruktúrovaná správa pre príjemcu, 1–140 znakov — nie spolu s reference.
informationInformácia od príjemcu pre platiteľa, 1–70 znakov.
version / charset / strictCharsetCez 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 config

Serializovaná 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
RF18539007547034

Kó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 kryptomien

Odoslaní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.