При недоступном шлюзе сохраняйте платёж как принятую к обработке операцию и возвращайте её статус, а не ложный успех. Надёжность строится на идемпотентности, очереди и сверке результата.
Спроектируй архитектуру отказоустойчивой системы обработки платежей, чтобы при падении банковского шлюза пользователи не видели ошибок 500, но платежи гарантированно обрабатывались
При недоступном шлюзе сохраняйте платёж как принятую к обработке операцию и возвращайте её статус, а не ложный успех. Надёжность строится на идемпотентности, очереди и сверке результата.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При недоступном шлюзе сохраняйте платёж как принятую к обработке операцию и возвращайте её статус, а не ложный успех. Надёжность строится на идемпотентности, очереди и сверке результата.
После долговечной записи операции клиент получает идентификатор и pending. Worker обращается к банку с устойчивым ключом, использует ограниченные повторы и circuit breaker. Если ответ потерян, сначала выясняется статус, чтобы не списать деньги повторно. Webhook проверяется и обрабатывается идемпотентно, периодическая сверка восстанавливает пропуски. Пользователь видит ожидание или окончательный отказ. Абсолютную гарантию успешной оплаты дать нельзя: возможны отказ банка и истечение срока; гарантируют сохранность и доведение операции до определённого состояния.