Coupons

Fügt Payload-E-Commerce-Carts und -Bestellungen Rabattcodes mit prozentualen und Festbetragsrabatten, Nutzungslimits und Gültigkeitszeiträumen hinzu.

Community 1 4/Wo. MIT v1.0.1

Installation

pnpm add payload-coupons

Über

Dieses Plugin fügt einem Payload-E-Commerce-Shop Rabattcodes und Rabatte hinzu. Es erstellt eine `coupons`-Collection für prozentuale und Festbetragsrabatte, Gültigkeitsbereiche (ganzer Warenkorb, ausgewählte Produkte oder Kategorien), Produkt- und Kategorieausschlüsse, Mindest- und Höchstwarenkorbwerte pro Währung, einen Gültigkeitszeitraum sowie Gesamt- und kundenbezogene Nutzungslimits. Eine verborgene `coupon-redemptions`-Collection protokolliert jede beanspruchte Nutzung als separates Dokument. Das Plugin ergänzt die Cart- und Orders-Collections um eine `discount`-Gruppe und ein `total`-Feld, sodass der Warenkorb sein `subtotal` behält und der Rabatt im `total` abgebildet wird. Alle Beträge werden als ganzzahlige Kleinbeträge (minor units) gespeichert und niemals als Fließkommazahlen. Prozentwerte liegen in Basispunkten vor. Die Aufteilung auf die Zeilen wird mit `BigInt` berechnet, damit die Teilebeträge sich immer zur Gesamtsumme addieren und keine Position mehr erhält, als ihr zusteht. Das Plugin ist für `@payloadcms/plugin-ecommerce` und beliebige Cart- und Orders-Collections ausgelegt, mit überschreibbaren Slugs für Carts, Orders, Products, Variants, Categories und Customers. Relationship-Felder werden nur für Collections angelegt, die in der Konfiguration vorhanden sind. Ein Shop ohne `categories`-Collection erhält so eine Coupons-Collection ohne Kategorie-Scope anstelle einer fehlerhaften Konfiguration. Drei REST-Endpunkte stehen zur Verfügung: `POST /coupons/validate` prüft einen Code gegen einen Warenkorb, ohne ihn zu beanspruchen. `POST /carts/:id/apply-coupon` weist einen Code zu und `POST /carts/:id/remove-coupon` entfernt ihn wieder. Ein nicht verwendbarer Code wird mit einem stabilen, maschinenlesbaren Grund abgelehnt (etwa `EXPIRED`, `MINIMUM_NOT_MET`, `USAGE_LIMIT_REACHED`, `CUSTOMER_LIMIT_REACHED` oder `NO_ELIGIBLE_ITEMS`). Das Frontend sollte auf den Reason-Code und nicht auf den englischen Text reagieren. Bei der Bestellerstellung beansprucht das Plugin eine Redemption und verknüpft sie mit der Bestellung. Die Option `refuseOrderOnInvalidCoupon` kann stattdessen einen Fehler werfen, um das Speichern der Bestellung ohne Rabatt zu verhindern. Die Berechnungslogik ist als `computeDiscount`, `allocate`, `percentageOf` und `toBasisPoints` exportiert. `normalizeCode` wandelt einen Code in Großbuchstaben um und entfernt umgebende Leerzeichen, wie es das Plugin selbst tut. So kann eine Storefront die Aufteilung anzeigen, bevor der Warenkorb gespeichert wird. Das Paket hat keine Runtime-Abhängigkeiten und keine eigenen Admin-Komponenten, was es über kleinere Payload-Releases hinweg stabil hält. Als Peer-Dependencies werden Payload >=3.50 <4 und Node >=20 vorausgesetzt.

Paketinformationen

Paketname
payload-coupons
Neueste Version
1.0.1
Entpackte Größe
64 kB
Lizenz
MIT
Wöchentliche Downloads
4
Zuletzt veröffentlicht
21. Aug. 2026

Mehr von Poseidonas

Profil ansehen

Ähnliche Plugins

Mehr in Commerce