Сервис не должен считать оплату успешной при ошибке биллинга. Он сохраняет состояние операции, различает отказ и неизвестный результат и выполняет безопасное восстановление.
Если биллинг в моменте упал или вернул ошибку, что делает ваш сервис?
Сервис не должен считать оплату успешной при ошибке биллинга. Он сохраняет состояние операции, различает отказ и неизвестный результат и выполняет безопасное восстановление.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сервис не должен считать оплату успешной при ошибке биллинга. Он сохраняет состояние операции, различает отказ и неизвестный результат и выполняет безопасное восстановление.
Timeout может означать, что деньги списались, но ответ потерялся. Поэтому повтор должен использовать идемпотентный ключ, а неопределённый результат проверяют через статус операции, webhook или reconciliation. Явный бизнес-отказ показывают пользователю, временный сбой обрабатывают по ограниченной retry-политике. Доступ выдают только по подтверждённому результату. На собеседовании важно назвать фактическое поведение своего сервиса, не обещая, что любое исключение безопасно решается повторным POST.