Refunds

Добавляет полный и частичный возврат средств в заказы Payload ecommerce с лимитом по позициям, опциональным возвратом на склад и неизменяемой историей.

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

Установка

pnpm add payload-refunds

Описание

Плагин добавляет обработку полных и частичных возвратов в заказы Payload ecommerce. Он создаёт коллекцию `refunds`, где каждый возврат оформлен как обычный документ, и добавляет в коллекцию заказов поля `refundedAmount` и `refundableAmount`, которые синхронизируются с записями о возвратах. Все суммы хранятся и сравниваются как целые числа в минимальных единицах валюты (копейках, центах). Дробные значения не округляются, а отклоняются. Плагин расширяет `@payloadcms/plugin-ecommerce` и должен регистрироваться после того, как коллекция заказов уже существует. Если коллекция отсутствует, конфигурация возвращается без изменений, поэтому плагин безопасно подключать в любом проекте. `refundedAmount` пересчитывается заново из записей о возвратах при каждой записи и никогда не инкрементируется, что исключает рассогласование с историей. Возврат может включать несколько позиций заказа. Сумма возвращённых единиц по всем записям не превышает количества заказанного товара. Возврат отклоняется с ошибкой `RefundError` (HTTP 400), если сумма равна нулю, отрицательна, дробная, превышает остаток к возврату или если лимит по позиции исчерпан. Хук `onRefund` выполняется после валидации и до записи в базу. Если вызов платёжного провайдера завершится неудачей, не останется никаких следов. Возврат объекта `reference` из хука сохраняет идентификатор возврата на стороне провайдера в записи. Опциональный restock возвращает товары на склад в документ продукта или варианта через compare-and-set записи с повторными попытками, чтобы избежать перезаписи при параллельных изменениях. `updateTransactionStatus` помечает соответствующую транзакцию как `refunded` после полного возврата суммы заказа. Опция `refundedStatus` управляет статусом самого заказа: пустая строка оставляет его без изменений, что подходит для частичных возвратов. Пакет не содержит админ-компонентов и не имеет рантайм-зависимостей, включая прямые импорты `payload`, что сохраняет стабильность между минорными релизами Payload. Плагин не вычисляет цену отдельной позиции, поскольку официальный ecommerce-плагин не хранит её в строке заказа, поэтому лимиты по позициям применяются только по количеству. Запись о возврате доступна только для добавления: хук `beforeChange` отклоняет любые операции, кроме `create`, поэтому история возвратов остаётся неизменной.

О пакете

Имя пакета
payload-refunds
Последняя версия
1.0.1
Размер
52 кБ
Лицензия
MIT
Загрузок в неделю
3
Последняя публикация
21 авг. 2026 г.

Ещё от Poseidonas

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

Barcodes

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

AI Manager

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

EU VAT

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

Stock Reservation

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

Stock Alerts

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

Shipping Rates

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