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

PAY by square

PayBySquare implementuje špecifikáciu by square 1.0.0, 1.1.0 a 1.2.0 (predvolená). Dokument obsahuje jednu alebo viac platieb — prvá je preferovaná — každú s jedným alebo viacerými bankovými účtami:

use Carbon\CarbonImmutable;
use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Qr\Enums\BySquare\BySquareVersion;
use RoundlyConsulting\Qr\Payloads\Payments\BySquare\{BankAccount, Beneficiary, PayBySquare, Payment};

$account = new BankAccount('SK46 1100 0000 0029 4714 7960', 'TATRSKBX');
$beneficiary = new Beneficiary('Roundly Consulting s.r.o.', street: 'Tolstého 5', city: '811 06 Bratislava');

$document = new PayBySquare(
    payments: [Payment::order(
        amount: Money::ofMinor(12550, 'EUR'),
        accounts: [$account],
        beneficiary: $beneficiary,
        dueDate: CarbonImmutable::parse('2026-10-15'),
        variableSymbol: '20260042',
        constantSymbol: '0308',
        note: 'Faktúra 2026-0042',
    )],
    invoiceId: '2026-0042',
    version: BySquareVersion::V1_2_0,     // null → config payments.bysquare.version
    deburr: true,                         // null → config payments.bysquare.deburr
);

$svg = Qr::payBySquare($document)->size(220)->svg();

Kódovanie a dekódovanie

$string = Qr::payBySquare($document)->payload()->toQrString();  // the string the code carries (config applied)
$standard = $document->encode();          // standard defaults (1.2.0, deburr on) for null fields — ignores config
$model = $document->serialize();          // the tab-separated data model
$same = PayBySquare::decode($string);     // parse a PAY by square string

Qr::payBySquare() doplní chýbajúce version alebo deburr z payments.bysquare.*; $document->encode() (aj toQrString()) konfiguráciu nečíta a použije predvolené hodnoty štandardu, takže sa s obsahom QR kódu zhoduje len pri predvolenej konfigurácii alebo ak dokument nastaví version/deburr sám.

Kód je čistý reťazec base32hex (prefix 00… pre 1.0.0, 04… pre 1.1.0, 08… pre 1.2.0), ktorý obaľuje dátový model chránený CRC-32 a skomprimovaný vlastnou implementáciou LZMA v balíku. Vždy ide o jeden alfanumerický QR segment bez ECI; korekcia chýb je predvolene M. Poškodený reťazec vyhodí BySquareDecodeException s dôvodom, ktorý pomenuje zlyhaný krok.

Trvalé príkazy a inkasá

use RoundlyConsulting\Qr\Enums\BySquare\{DirectDebitScheme, DirectDebitType, Month, Periodicity};
use RoundlyConsulting\Qr\Payloads\Payments\BySquare\{DirectDebitDetails, StandingOrderDetails};

// Standing order
Payment::standingOrder(
    new StandingOrderDetails(Periodicity::Monthly, day: 15, months: [Month::January, Month::July], lastDate: CarbonImmutable::parse('2027-12-31')),
    Money::ofMinor(3000, 'EUR'), [$account], $beneficiary,
);

// Direct debit
Payment::directDebit(
    new DirectDebitDetails(scheme: DirectDebitScheme::Sepa, type: DirectDebitType::Recurrent, mandateId: 'M-2026-7', maxAmount: Money::ofMinor(5000, 'EUR')),
    Money::ofMinor(1999, 'EUR'), [$account], $beneficiary,
);

// Amount left to the payer
Payment::order(null, [$account], $beneficiary, currency: 'EUR');
EnumHodnoty
BySquareVersionV1_0_0, V1_1_0, V1_2_0
PeriodicityDaily, Weekly, Biweekly, Monthly, Bimonthly, Quarterly, Semiannually, Annually
MonthJanuary … December (bitové príznaky; Month::mask() / Month::fromMask())
DirectDebitSchemeOther, Sepa
DirectDebitTypeOneOff, Recurrent

Limity

  • Suma ≥ 0; len meny podľa ISO 4217 — mena sumy, alebo currency:, ak je suma null (vtedy je povinná).
  • Variabilný a špecifický symbol najviac 10 číslic, konštantný symbol najviac 4 číslice; referencia platiteľa ≤ 35; poznámka ≤ 140; číslo faktúry ≤ 10.
  • Aspoň jeden účet na platbu; ID mandátu, veriteľa a zmluvy ≤ 35.
  • Deň trvalého príkazu 1–7 pri týždennej/dvojtýždennej periodicite, inak 1–31, pri dennej žiadny; maxAmount inkasa v mene platby.
  • Meno príjemcu 1–70, ulica a mesto ≤ 70.

Verzie a diakritika

Verzia 1.2.0 vyžaduje meno príjemcu pri každej platbe; 1.0.0 blok príjemcu nemá. So zapnutým deburr (predvolene) sa z poznámky a údajov príjemcu odstráni diakritika a limity sa potom overia znova. Dátumy sú kalendárne dátumy — zadávajte ich v časovom pásme, ktoré máte na mysli.

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.