Backend Matrix: post #2138 — TG.ME

🛡 Как защитить REST API от двойных списаний и дублей

Сеть нестабильна. Клиент отправляет POST /payments, списание происходит, но ответ падает по таймауту. Пользователь нажимает «Оплатить» еще раз. Без обработки идемпотентности вы спишете деньги дважды.

Стандартное решение в бэкенд-архитектуре — Idempotency-Key в заголовках:

sequenceDiagram
Client->>Backend: POST /pay (Header: Idempotency-Key: uuid-123)
Backend->>Redis: SETNX idempotency:uuid-123 "processing"
Backend->>DB: Выполняем платеж
Backend->>Redis: Сохраняем ответ сервера в Кэш
Backend->>Client: 200 OK (Payment success)
July 26, 2026 226 3