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

Клиент повторил платёж после таймаута и создал второе списание

Метод POST /payments создаёт платёж. Из-за сетевого таймаута клиентское приложение не получило ответ и через 20 секунд отправило тот же запрос ещё раз. В итоге у клиента два списания на одну сумму, хотя оба запроса были идентичны.

Какое требование должно было быть заложено в контракт интеграции?

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

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

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

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

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