Интеграция платежных решений

Идемпотентность ломают не шлюзы — её ломают ваши костыли и память на 3 секунды

Идемпотентность ломают не шлюзы — её ломают ваши костыли и память на 3 секунды

Классическая ошибка: разработчик думает, что идемпотентность — это просто уникальный ключ в БД. Нет. Если ключ живёт только в памяти воркера, при рестарте у вас дубль. Если ключ привязан к телу запроса без нормализации — одинаковый платёж с разными заголовками превращается в «новую операцию». Документация врёт, логи — истина.

Нормальная схема держится на трёх вещах:
— idempotency key приходит извне и живёт дольше одного запроса;
— операция на сервере либо атомарна, либо защищена транзакцией;
— ответ на повтор должен быть тем же самым, а не «мы уже всё отправили, но не знаем что».

Самый мерзкий баг — когда повторный запрос не создаёт новый платёж, но триггерит второй вебхук, второй холд или второй сеттлмент. Это уже не идемпотентность, а костыль на костыле и финтехом погоняет. И да, 200 OK без сохранённого результата — не защита, а самообман.

Проверка простая: дерните один и тот же запрос десять раз, убейте воркер между попытками, подмените порядок заголовков, воспроизведите таймаут на клиенте. Если система хоть раз ведёт себя «почти правильно», идемпотентности у вас нет. Идемпотентность или смерть.
Этот пост опубликован в Telegram-канале Интеграция платежных решений. Подписаться можно по ссылке: @payment_integration_ops_arb.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.