Stock Reservation

Prüft Variantenbestand und Preis vor dem Checkout und hält reservierten Bestand bis zur Zahlungsbestätigung, als Erweiterung des offiziellen Payload-E-Commerce-Plugins.

Community 1 1/Wo. MIT v1.0.0

Installation

pnpm add payload-stock-reservation

Über

Dieses Plugin setzt auf `@payloadcms/plugin-ecommerce` und behebt zwei Lücken im Checkout-Prozess. Das offizielle Plugin liest die Verfügbarkeit in `initiatePayment` und verringert den Bestand in `confirmOrder`, schreibt aber dazwischen nichts. Zwei Kunden können die Prüfung für dieselbe letzte Einheit passieren. Das offizielle Plugin prüft Variantenbestand und Preis überhaupt nicht, weil der Varianten-Zweig in einer Bedingung liegt, die voraussetzt, dass der Artikel keine Variante hat. Beide Probleme führen dazu, dass der Bestand nach der Zahlung negativ wird. `stockReservationPlugin` umschließt die Endpunkte `post /payments/:adapter/initiate` und `post /payments/:adapter/confirm-order`, anstatt sie zu ersetzen. Vor der Initiierung wird der Warenkorb neu gelesen, jede Position gegen den erfassten Bestand minus aktive Holds geprüft und ein Hold außerhalb der Request-Transaktion geschrieben, damit konkurrierende Requests ihn sofort sehen. Holds für dasselbe Produkt oder dieselbe Variante werden nach Alter sortiert, mit Identifikator als Tie-Breaker. Ein Hold behält seinen Bestand nur, wenn die laufende Summe bis einschließlich seiner Position im erfassten Bestand liegt. Bei der Bestätigung läuft der ursprüngliche Handler zuerst, danach werden die Holds des Warenkorbs freigegeben. Das Plugin fügt eine einzelne `stock-holds`-Collection mit indizierten Feldern für `cart`, `stockCollection`, `stockDocument` und `expiresAt` hinzu. Es werden keine Felder an Produkte, Varianten, Warenkörbe oder Bestellungen angefügt. Die Collection ist für API-Zugriffe gesperrt und im Admin-Panel verborgen. Ein Endpunkt `/stock-reservation/release-expired` löscht abgelaufene Holds und akzeptiert entweder einen angemeldeten Benutzer oder einen `Bearer`-Secret. `sweepOnCheckout` löscht zu Beginn jedes Checkouts die abgelaufenen Holds für den aktuellen Warenkorb, sodass kein Scheduler erforderlich ist. Zu den Optionen gehören `ttlSeconds` (Standard 900), `defaultCurrency`, `refuseNegativeInventory`, `holdScanLimit`, `sweepOnCheckout`, `releaseSecret` und Slug-Overrides für die Collections. Das Plugin muss nach `ecommercePlugin` gelistet werden und gibt beim Start einen Fehler aus, wenn keine Checkout-Endpunkte zum Umschließen gefunden werden. Es hat keine Laufzeitabhängigkeiten und keine Admin-Komponenten. Getestet gegen Payload 3.88.0, erforderlich ist Payload 3.88 oder neuer unter 4.

Paketinformationen

Paketname
payload-stock-reservation
Neueste Version
1.0.0
Entpackte Größe
40 kB
Lizenz
MIT
Wöchentliche Downloads
1
Zuletzt veröffentlicht
21. Aug. 2026

Mehr von Poseidonas

Profil ansehen

Ähnliche Plugins

Mehr in Commerce