Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="payments-payment-events"></a>

# Платёжные события

## Коротко

Повторный или запоздалый вебхук не должен повторять списание и ломать состояние заказа.

## Плохо

```text
Каждый payment_intent.succeeded повторно выдаёт покупку.
```

## Хорошо

```text
event_id сохранён.
Переход состояния проверен. Повтор безопасен.
```

## Почему

Доставка события и бизнес-операция не образуют общую сетевую транзакцию.

## Когда применять

При неоднозначности уточняйте актуальное состояние у провайдера. Сохранение event_id и изменение локального состояния связываются транзакционно. Разные event_id тоже могут описывать один объект и тип события: выдачу покупки дополнительно защищает уникальность бизнес-операции по payment_id.

## Как проверить

- Отправьте одно событие дважды и поменяйте порядок событий.

## Человек

Определяет допустимые переходы статусов, отмены и возвраты.

## Агент

Реализует серверную обработку событий и проверяет дубликат, ошибку и сверку в тестовом окружении.

Контроль результата:

- Отправьте одно событие дважды и поменяйте порядок событий.

## Источники

- [Receive Stripe events in your webhook endpoint](https://docs.stripe.com/webhooks)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/payments/stripe/rules/payment-events.md)
