- What is rikudou/czqrpayment and what does it do?
- It is a small, framework-agnostic PHP library that builds Czech QR Platba / SPAYD payment strings containing IBAN, amount, variable, specific and constant symbols, a message and a due date, which you then render as a scannable QR code for bank transfers. It is MIT licensed, distributed as rikudou/czqrpayment and maintained by a single author. It fits invoicing, subscription billing and bank-transfer checkout flows aimed at Czech customers.
- How do I install rikudou/czqrpayment in a Laravel application?
- Install it with Composer using composer require rikudou/czqrpayment. Because the library is framework-neutral there is no Laravel service provider to register, so instantiate the classes directly or bind them inside your own service provider. Wrap all usage in an internal service such as CzechQrPaymentGenerator so your domain code never depends on package classes directly.
- Does this package generate the QR image or only the payment payload string?
- Based on the technical evaluation, the library is expected to produce a formatted SPAYD payment payload string, with the QR image left to a separate renderer. Confirm this in the README before committing, because if it does render images it may pull in GD or Imagick as extensions. Keeping rendering separate lets you swap the renderer or the payload generator independently.
- Which Laravel and PHP versions are supported by rikudou/czqrpayment?
- The package is framework-neutral PHP, so it installs into any Laravel version as long as the PHP constraint in its composer.json is satisfied. There is no Laravel-specific version constraint to worry about, but you should read the require section for the exact PHP version and any required extensions. Pin the package version in composer.json and review transitive dependencies during upgrades.
- How do I build a Czech QR payment with IBAN, amount and variable symbol?
- Populate the payment object with the recipient IBAN, the amount and currency, and the variable, specific and constant symbols, plus optional message and due date, then call the method that returns the SPAYD string. Validate the inputs first, since IBAN checksums, amount precision and symbol lengths all affect whether Czech banking apps accept the code. Always keep a plain-text bank transfer instruction as a fallback next to the QR code.
- Does it support domestic Czech account numbers, other currencies and amount rounding?
- QR Platba payloads are IBAN-based, so domestic account numbers with a bank code normally need converting to IBAN before encoding; verify which input formats the current release accepts. Currency is part of the SPAYD payload, but CZK is the primary use case and other currencies should be tested against the standard's rules. Amounts must be encoded with the correct decimal precision, so write explicit tests for rounding and for zero-decimal edge cases.
- How are Czech diacritics and payload length limits handled?
- SPAYD payloads are UTF-8 and have a maximum length, so characters such as ě, š, č, ř and ž in the message field must be encoded correctly and long messages truncated deliberately. Measure byte length rather than character count when guarding against overflow. Where a field risks exceeding the limit, shorten the message instead of letting encoding or validation fail at invoice time.
- How should I test that generated QR payments scan correctly?
- Generate payloads for known-good inputs and check them with an independent SPAYD or QR validator, then scan them in real Czech banking apps on both iOS and Android. Add contract tests that assert the exact output string so formatting changes in a new package release are caught immediately. Cover edge cases such as minimum and maximum amounts, long messages, all three symbols and missing optional fields.
- Is rikudou/czqrpayment safe to use in production given its low adoption?
- Adoption signals are weak, with roughly 29 GitHub stars and no known dependents, and it is a single-maintainer package, so treat it as a small replaceable utility rather than core infrastructure. Pin the version, monitor releases and reviews, and keep the blast radius limited by using it only for deterministic string generation. Because the output is a standard payload, an adapter boundary makes a fork or replacement cheap if maintenance stalls, and you should preserve text bank-transfer instructions when QR generation fails.
- What alternatives exist and how should I wrap this package in Laravel?
- Alternatives include other SPAYD or QR Platba generators, or implementing the payload yourself since the Czech QR Payment specification is relatively short. Whichever you pick, hide it behind an internal CzechQrPaymentGenerator interface and map results to your own DTO so Blade templates and domain models never reference package classes. That keeps a future swap to one adapter change plus your existing contract tests.