Вступить в клуб →
сложнаявопросKafka и надёжность интеграций

Повтор запроса на оплату списывает деньги дважды

Мобильный клиент отправляет POST /payments. При сетевом таймауте он повторяет запрос. Иногда первый запрос всё-таки доходит и обрабатывается — клиент получает второе списание. Какое решение устраняет причину, а не симптом?

  • Перед вставкой платежа делать `SELECT` по параметрам и создавать запись, только если похожего платежа нет
  • Убрать повторы на клиенте и показывать ошибку сети — пусть пользователь сам решает, нажимать ли кнопку ещё раз
  • Клиент передаёт ключ идемпотентности; сервер хранит его с уникальным ограничением в БД и на повторе возвращает результат первой операции
  • Увеличить таймаут клиента до нескольких минут, чтобы повторов на сетевых сбоях практически не возникало

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела