Všetky výnimky sú v RoundlyConsulting\Coupons\Exceptions a dedia z CouponException, čo je RuntimeException, takže celý balík zachytíte jedným typom:
CouponException (RuntimeException) — catch-all for the package
├── CouponNotFound ::forCode(string $code)
├── CouponCodeTaken ::forCode(string $code, ?Throwable $previous = null)
├── InvalidCouponDefinition ::blankCode()
│ ::fixedWithoutCurrency(string $code)
│ ::percentOutOfRange(int $basisPoints)
│ ::negativeValue(int $value)
├── InvalidCouponConfiguration ::invalidCharset(string $reason) (+ bad coupons.code.length)
│ ::codeSpaceExhausted(int $attempts)
└── CouponNotRedeemable — catch-all for "cannot redeem"
├── CurrencyMismatch ::forCode(string $code, string $expected, string $actual)
├── MinimumSpendNotMet ::forCode(string $code, Money $minimumSpend)
├── CouponExpired ::forCode(string $code) (expired or not yet active)
├── CouponAtMaxUsage ::forCode(string $code)
└── CouponAlreadyRedeemed ::forCode(string $code) (per-redeemer cap)| Výnimka | Dedí z | Kedy sa vyhodí |
|---|---|---|
CouponNotFound | CouponException | Kódu nezodpovedá žiadny kupón — findOrFail(), preview(), redeem(), revoke(). check() namiesto toho vráti NotFound. |
CouponCodeTaken | CouponException | Explicitný kód, ktorý už má nezmazaný kupón, v akejkoľvek veľkosti písmen — aj keď ho súbežná požiadavka obsadí medzi kontrolou a zápisom. |
InvalidCouponDefinition | CouponException | Prázdny explicitný kód, pevná zľava bez meny, záporná pevná hodnota alebo percento mimo 0..10 000 bázických bodov. |
InvalidCouponConfiguration | CouponException | Nepoužiteľné code.length alebo code.charset, route_key či default_currency, ktorý nie je reťazcom, prípadne vyčerpaný priestor kódov. Uvádza kľúč; hlásenie o code.charset abecedu nikdy nevypíše. |
CouponNotRedeemable | CouponException | Základný typ pre každý dôvod, prečo kupón nemožno uplatniť. |
CurrencyMismatch | CouponNotRedeemable | Kupón je uzamknutý na inú menu, než je mena ceny. |
MinimumSpendNotMet | CouponNotRedeemable | Cena je pod minimálnou hodnotou nákupu. |
CouponExpired | CouponNotRedeemable | Platnosť uplynula alebo ešte nie je aktívny. |
CouponAtMaxUsage | CouponNotRedeemable | Celkový limit použití je vyčerpaný. |
CouponAlreadyRedeemed | CouponNotRedeemable | Limit na zákazníka je vyčerpaný. |
Chyby na úrovni peňazí
Niektoré chyby pochádzajú z money-for-laravel: RoundlyConsulting\Money\Exceptions\CurrencyMismatch pri priamom volaní discountFor(), apply() alebo meetsMinimumSpend() s nezhodnou menou — odlišná od CurrencyMismatch balíka pri uplatnení — a ďalej AmountOverflow, InvalidMoneyValue a RoundingNecessary pri percente jemnejšom ako celé bázické body.
Coupons::prune() so záporným oknom vyhodí obyčajnú InvalidArgumentException, nie CouponException — okno v budúcnosti by zmazalo platné kupóny.
Texty výnimiek sú anglické a určené vývojárom, napr. „Coupon [SAVE20] is expired or not yet active.“ Pre texty pre zákazníkov použite Coupons::check(), pravidlo Redeemable alebo RedemptionFailureReason::translationKey().
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.