thecnology / czeurqrcode
UniversalQRCodeGenerator
Requires
- php: ^8.0.0
- endroid/qr-code: ^6.0
- rikudou/skqrpayment: ^4.2
- smhg/sepa-qr-data: ^3.0
- sunfoxcz/spayd-php: ^2.0
Requires (Dev)
- phpunit/phpunit: ^11.0.0
This package is auto-updated.
Last update: 2026-05-04 15:21:02 UTC
README
thanks to Endroid QR Code for QR code generation
thanks to sunfoxcz/spayd-php for SPAYD payment request generation
thanks to rikudou/skqrpayment for Slovak Pay by Square generation
Popis
Balíček pro generování QR kódů s automatickou detekcí typu platby
Tento balíček vytváří QR kódy pro platby s inteligentní logikou:
- Pro CZK platby → Generuje českou QR platbu (SPAYD)
- Pro EUR +
country: 'SK'→ Generuje slovenskou Pay by Square platbu - Pro ostatní měny → Generuje SEPA platbu (evropský standard)
Funkčnost
Balíček rozpozná správný formát na základě parametrů (currency, country, IBAN/účet) a podle toho vybere odpovídající standard:
- CZK + číslo účtu/kód banky → Česká QR platba (SPAYD)
- EUR +
country: 'SK'+ IBAN → Slovenská QR platba (Pay by Square) - Ostatní (EUR/USD/... + IBAN) → SEPA platba (evropský standard)
- Vrací hotový QR kód připravený k použití
- Možnost přizpůsobení vzhledu QR kódu (velikost, barvy, text)
- Podpora pro přidání loga do QR kódu
Tabulka rozhodování
| currency | country | IBAN | účet+banka | Výsledek |
|---|---|---|---|---|
| CZK | – | – | ✓ | SPAYD (CZ) |
| EUR | SK |
✓ | – | Pay by Square (SK) |
| EUR/jiné | – / null |
✓ | – | SEPA (EU) |
Použití
Ideální pro aplikace, které potřebují podporovat české QR platby, slovenské Pay by Square i mezinárodní SEPA převody v jednom řešení. Balíček umožňuje snadné generování QR kódů pro různé platební standardy bez nutnosti psát vlastní logiku detekce.
Instalace
composer require thecnology/czeurqrcode
ℹ️ Pro slovenské Pay by Square platby je vyžadována binárka
xzv systému (LZMA1 komprese).
- Linux (Debian/Ubuntu):
apt install xz-utils- macOS:
brew install xz- Docker image v tomto repu už
xz-utilsobsahuje.
Instalace skrz Docker
docker pull djvitto/czeurqrcode:latest docker run -d -p 8080:80 --name czeurqrcode djvitto/czeurqrcode:latest
Image obsahuje HTTP endpoint, který přijímá URL parametry a vrací PNG s QR kódem.
Docker URL příklady
CZ — Česká QR platba (SPAYD)
http://localhost:8080/?bankCode=2010&accountNumber=123456789&amount=100¤cy=CZK&vs=123456789&message=Test&size=300&label=Děkujeme!
SK — Slovenská QR platba (Pay by Square)
Vyžaduje country=SK + IBAN. Bez country=SK by se vygenerovala SEPA.
http://localhost:8080/?amount=100¤cy=EUR&country=SK&iban=SK6807200002891987426353&vs=123456&message=Platba&size=300&label=Ďakujeme!
EU — SEPA platba
http://localhost:8080/?amount=100¤cy=EUR&iban=CZ6508000000192000145399&swift=GIBACZPX&recipientName=Jan%20Novak&message=Test&size=300&label=Děkujeme!
Podporované URL parametry
| Parametr | Povinný | Popis |
|---|---|---|
amount |
✓ | Částka |
currency |
✓ | CZK / EUR / USD |
country |
– (jen pro SK) | SK vynutí Pay by Square, CZ ponechá SPAYD |
bankCode |
– (jen pro CZ) | Kód banky (CZ) |
accountNumber |
– (jen pro CZ) | Číslo účtu (CZ) |
iban |
– (povinný pro SK/EU) | IBAN |
swift |
– (pro SEPA) | BIC/SWIFT kód |
recipientName |
– (pro SEPA) | Jméno příjemce |
vs |
– | Variabilní symbol |
message |
– | Zpráva (max 35 znaků) |
size |
– | Velikost QR (50–300 px) |
label |
– | Popisek pod QR kódem |
Příklady použití
CZ — Česká QR platba (SPAYD)
Pro tuzemské CZK platby použij číslo účtu + kód banky. Knihovna vygeneruje SPAYD.
$qr = new QrCodeGenerator(); $request = new PaymentRequest( amount: 100.00, currency: PaymentRequest::CURRENCY_CZK, message: 'Nejaka zprava co uvidi vlastnik uctu pri prijeti platby', accountNumber: '100000', bankCode: '2010', variableSymbol: '123456789', ); header('Content-Type: image/png'); echo $qr->getQrCode(qrData: $request->getQrCodeData(), qrLabel: 'Děkujeme za zaplacení!')->getString();
SK — Slovenská QR platba (Pay by Square)
Pro slovenské banky použij EUR + IBAN + parametr country: COUNTRY_SK.
Bez country: 'SK' by se vygenerovala SEPA, kterou slovenské banky méně podporují.
$qr = new QrCodeGenerator(); $request = new PaymentRequest( amount: 100.00, currency: PaymentRequest::CURRENCY_EUR, message: 'Platba za sluzby', variableSymbol: '123456789', iban: 'SK6807200002891987426353', country: PaymentRequest::COUNTRY_SK, // klíčové: vynutí formát Pay by Square ); header('Content-Type: image/png'); echo $qr->getQrCode(qrData: $request->getQrCodeData(), qrLabel: 'Ďakujeme!')->getString();
EU — SEPA platba
Pro mezinárodní EUR / cizoměnové platby v rámci SEPA. Bez country parametru
(nebo s country: null) se použije evropský standard.
$qr = new QrCodeGenerator(); $request = new PaymentRequest( amount: 100.00, currency: PaymentRequest::CURRENCY_EUR, message: 'Nejaka zprava co uvidi vlastnik uctu pri prijeti platby', iban: 'CZ6500000000000000000000', bic: 'FIOBCZPPXXX', recipientName: 'Recipient name', // Pouze pro SEPA QR ); header('Content-Type: image/png'); echo $qr->getQrCode(qrData: $request->getQrCodeData(), qrLabel: 'Děkujeme za zaplacení!')->getString();
//moznost konfigurovat vzhled QR kódu - logo $logo = new Logo( path: __DIR__.'/assets/bender.png', resizeToWidth: 50, punchoutBackground: true ); //moznost konfigurovat vzhled QR kódu $qr = new QrCodeGenerator( size: 300, // Size of the QR code in pixels margin: 10, // Margin around the QR code logo: $logo, // Logo to be added to the QR code errorCorrectionLevel: ErrorCorrectionLevel::Low, roundBlockSizeMode: RoundBlockSizeMode::Margin, foregroundColor: new Endroid\QrCode\Color\Color(0,0,0), // Foreground color in hex format backgroundColor: new Endroid\QrCode\Color\Color(255,255,244), // Background color in hex format labelColor: new Endroid\QrCode\Color\Color(100,0,0) // Color for the label text );