Open source
Coupons for Laravel
composer require roundly-consulting/coupons-for-laravelPrehľad
Kompletný systém zľavových kupónov pre Laravel. Vytvárajte kupóny s pevnou či percentuálnou zľavou alebo s dopravou zadarmo, s uzamknutím meny, minimálnou hodnotou nákupu, obdobím platnosti a celkovým limitom či limitom na zákazníka. Pri uplatnení sa každé pravidlo overí a použitie započíta v jednej uzamknutej databázovej transakcii — limit 100 znamená presne 100 aj pri náraze zákazníkov. Každá suma je presné Money z money-for-laravel, správne aj pre meny bez desatinných miest či s tromi. Licencia MIT a minimum závislostí: Laravel, ext-bcmath a dva základné balíky Roundly — žiadne externé runtime závislosti.
Čo získate
Tri typy zliav
Pevné sumy v najmenších jednotkách meny, percentá v bázických bodoch s voliteľným stropom a doprava zadarmo ako príznak pre vlastný riadok dopravy.
Pravidlá pod vašou kontrolou
Uzamknutie na menu, minimálna hodnota nákupu, obdobie platnosti, celkový limit použití a limit na zákazníka — vrátane nákupu bez registrácie.
Atomické uplatnenie
Všetky kontroly aj navýšenie počtu použití bežia v jednej transakcii nad riadkom uzamknutým cez lockForUpdate, takže limit 100 znamená presne 100.
Jedna kontrola oprávnenosti
Coupons::check(), redeem(), isRedeemableBy() aj pravidlo Redeemable zdieľajú jednu kontrolu — pevné poradie, presné výnimky a preložiteľné hlásenia.
Presné peniaze
Každá suma je Money z money-for-laravel — presná aj pre meny bez desatinných miest či s tromi, nikdy pod nulou a kombinovateľná v DiscountStack.
Udalosti, príkazy a fake
Päť udalostí, núdzové ukončenie platnosti, príkaz na čistenie a Coupons::fake() — záznamník s asserciami pre každé vytvorenie, uplatnenie, odvolanie aj čistenie.
Fasáda, DI alebo akcie
Volajte fasádu Coupons, injektujte CouponManager s rovnakým API alebo spúšťajte jednoúčelové akcie vo vlastných jobs — za všetkými tromi je jedna cesta.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie a spustenie dvoch migrácií a voliteľne publikovanie konfigurácie a prekladov.
Konfigurácia
Každý konfiguračný kľúč, jeho predvolená hodnota a env premenná — model kupónu, typ kľúča zákazníka, mena, sledovanie, formát kódov a route key.
Peniaze, jednotky a uzamknutie meny
Ako sa ukladá hodnota kupónu — v najmenších jednotkách meny alebo v bázických bodoch — a kedy musí byť kupón uzamknutý na jednu menu.
Fasáda Coupons
Jeden vstupný bod na všetko — vytvorenie, vyhľadanie, kontrola, náhľad, uplatnenie, odvolanie a čistenie kupónov, priamo alebo cez Coupons::code().
DI a akcie
Namiesto fasády injektujte CouponManager alebo jednoúčelové akcie spúšťajte sami — vrátane úplnej mapy metód fasády na akcie.
Vytváranie kupónov
Vytvárajte kupóny s pevnou, percentuálnou zľavou aj s dopravou zadarmo cez CreateCouponData — konštruktory, stropy, minimum a validácia.
Generované kódy
Nastavte dĺžku a abecedu generovaných kódov — kryptograficky bezpečná náhoda, kódy bez ohľadu na veľkosť písmen a validácia pri každom použití.
Uplatnenie kupónu
Overenie a uplatnenie v jednom atomickom kroku — uzamknutá transakcia, pevné poradie kontrol, RedemptionResult a výnimka pre každé zlyhanie.
Model Coupon
Metódy životného cyklu, kontroly stavu, casty a výpočet zľavy na modeli Coupon — activate, expire, limity, apply a discountFor.
Pomocné metódy na zobrazenie
Metódy bez výnimiek pre šablóny a API — zostávajúce použitia, percento využitia, oprávnenosť zákazníka a bezpečný náhľad zľavy.
Zákazníci a limity na zákazníka
Pridajte HasCoupons do modelu User, obmedzte použitia na zákazníka, čítajte históriu uplatnení a používajte kľúče UUID alebo ULID.
Validačné pravidlo
Overte pole so zľavovým kódom pravidlom Redeemable — rovnaké kontroly ako pri uplatnení a preložiteľné hlásenie pre prvý dôvod zlyhania.
Typy zliav a kombinovanie
Enum DiscountType — názvy pre administráciu, prevod na Discount z money a kombinovanie kupónov s ďalšími zľavami v DiscountStack.
Query scopes a route binding
Vyhľadávajte aktívne, expirované, vyčerpané a uplatniteľné kupóny cez query scopes a viažte parameter {coupon} podľa kódu alebo id.
Udalosti
Päť udalostí pre analytiku, odhaľovanie podvodov a upozornenia na vypredanie — kupón vytvorený, uplatnený, odmietnutý, vyčerpaný či odvolaný.
Artisan príkazy
Núdzový vypínač, ktorý kupónom okamžite ukončí platnosť, a príkaz na archiváciu alebo zmazanie dávno expirovaných kupónov.
Výnimky
Jedna hierarchia pod CouponException — zachyťte celý balík, každý dôvod, prečo kupón nemožno uplatniť, alebo každú príčinu zvlášť.
Testovanie
Coupons::fake() zaznamená vytvorenia, uplatnenia, odmietnutia, odvolania aj čistenia bez zápisu do databázy — plus stavy factory pre databázové testy.
Rozširovanie
Použite vlastnú podtriedu Coupon cez coupons.model a využite kontrolu oprávnenosti vo vlastných tokoch objednávky.
Databázová schéma
Tabuľky coupons a coupon_redemptions stĺpec po stĺpci — typy, predvolené hodnoty, zdieľaný stĺpec meny a soft deletes.
Požiadavky
PHP 8.4+ s ext-bcmath, Laravel 12 alebo 13, MySQL/MariaDB, PostgreSQL alebo SQLite a dva balíky Roundly, ktoré nainštaluje Composer.
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.