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

Повтор запроса после таймаута привёл к двойному списанию

Мобильное приложение отправляет POST /api/v1/payments. Ответ не приходит за таймаут (сеть у клиента нестабильна), приложение автоматически повторяет запрос.

В итоге у клиента два списания: первый запрос на сервере успешно обработался, ответ просто не дошёл.

Что нужно заложить в контракт, чтобы это не повторялось?

  • Увеличить таймаут приложения и полностью запретить автоматические повторы запросов на стороне клиента
  • Перед каждым `POST /payments` вызывать `GET /payments` и проверять, нет ли уже такого платежа за последние минуты
  • Заменить POST на PUT: PUT идемпотентен по определению, поэтому дубли платежей исчезнут сами
  • Передавать ключ идемпотентности: по повторному запросу с тем же ключом сервер вернёт результат первой операции

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

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

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

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