Stock Reservation

Проверяет наличие варианта и цену до оплаты, резервирует остатки до подтверждения и закрывает пробелы чекаута в официальном плагине Payload ecommerce.

Сообщество 1 1/нед MIT v1.0.0

Установка

pnpm add payload-stock-reservation

Описание

Плагин работает поверх `@payloadcms/plugin-ecommerce` и решает две проблемы его чекаута. Официальный плагин проверяет наличие при вызове `initiatePayment` и списывает остаток в `confirmOrder`, но между этими шагами ничего не записывает. Из-за этого два покупателя проходят валидацию на один и тот же последний товар. Официальный плагин также полностью пропускает проверку остатков и цен для вариантов, потому что ветка с вариантами находится внутри условия, требующего отсутствия варианта у товара. Обе проблемы приводят к уходу остатков в минус после оплаты. `stockReservationPlugin` оборачивает эндпоинты `post /payments/:adapter/initiate` и `post /payments/:adapter/confirm-order`, а не заменяет их. Перед инициацией плагин перечитывает корзину, проверяет каждую позицию на доступность и записывает резерв вне транзакции запроса, чтобы конкурентные запросы видели его сразу. Резервы на один товар или вариант ранжируются от старых к новым, при равенстве timestamp разрешает по идентификатору. Резерв сохраняет за собой товар, только если суммарное количество всех резервов до него включительно не превышает остаток на складе. При подтверждении заказа сначала выполняется оригинальный обработчик, затем резервы корзины освобождаются. Добавляется одна коллекция `stock-holds` с проиндексированными полями `cart`, `stockCollection`, `stockDocument` и `expiresAt`. Ничего не добавляется в продукты, варианты, корзины или заказы. Коллекция закрыта от API и скрыта в админке. Эндпоинт `/stock-reservation/release-expired` удаляет просроченные резервы, доступ авторизованному пользователю или по секрету `Bearer`. Опция `sweepOnCheckout` удаляет просроченные резервы текущей корзины в начале каждого чекаута, планировщик для этого не нужен. В настройках доступны `ttlSeconds` (по умолчанию 900), `defaultCurrency`, `refuseNegativeInventory`, `holdScanLimit` и переопределение slug коллекций корзин, продуктов, вариантов и резервов. Плагин нужно подключать после `ecommercePlugin`. При запуске он логирует ошибку, если не находит эндпоинтов чекаута для обертки. Нет runtime-зависимостей и админ-компонентов, что сохраняет стабильность между минорными релизами Payload. Проверено на Payload 3.88.0, требуется Payload версии 3.88 или новее.

О пакете

Имя пакета
payload-stock-reservation
Последняя версия
1.0.0
Размер
40 кБ
Лицензия
MIT
Загрузок в неделю
1
Последняя публикация
21 авг. 2026 г.

Ещё от Poseidonas

Профиль автора

Barcodes

Добавляет штрихкоды Code 128, EAN-13 и QR в коллекции товаров Payload с печатью этикеток и опциональными кнопками в админке.

AI Manager

Плагин Payload для автогенерации товарных описаний, заголовков, атрибутов и переводов через Claude, ChatGPT, Gemini или Kimi с пропуском уже сгенерированного контента.

EU VAT

Рассчитывает НДС ЕС для магазинов на Payload и записывает разбивку по каждому заказу: ставки, реверсивный заряд, проверку VIES и отчёт OSS.

Stock Alerts

Отправляет письмо при падении остатков товара или варианта ниже порога, с поддержкой бэкордера и публичным полем статуса.

Shipping Rates

Добавляет зоны доставки, расчет стоимости и endpoint для quoted в магазинах на @payloadcms/plugin-ecommerce.

Shipping Classes

Добавляет поля веса, размеров и класса доставки в коллекции товаров и вариантов Payload с каноническим хранением в граммах и миллиметрах.