Как реализовать обработчик/SDK для банка, если запрос на создание транзакции завершился таймаутом и неизвестно, была ли транзакция создана? Как гарантировать доведение до финального статуса?

Таймаут означает неизвестный результат, а не доказанный отказ. Сохраните локальную операцию и стабильный idempotency key, затем сверяйте статус с банком и повторяйте запрос только по его контракту.

Короткий ответ

Что ответить на собеседовании

Таймаут означает неизвестный результат, а не доказанный отказ. Сохраните локальную операцию и стабильный idempotency key, затем сверяйте статус с банком и повторяйте запрос только по его контракту.

Подробный разбор

Ответ с пояснениями

Таймаут означает неизвестный результат, а не доказанный отказ. Сохраните локальную операцию и стабильный idempotency key, затем сверяйте статус с банком и повторяйте запрос только по его контракту.

Используйте статусы pending/succeeded/failed, проверенные webhooks, периодический reconciliation и уникальный внешний идентификатор. Повтор не должен создавать новое списание; события обрабатываются идемпотентно, переходы состояния — атомарно. При недоступности банка окончательный исход гарантировать за конечное время нельзя: нужны ограниченные retries, мониторинг и ручная сверка. Новый ключ после таймаута опасен двойным платежом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее