Вопрос проверяет понимание жизненного цикла платежа после списания средств и умение безопасно обрабатывать ошибки и возвраты.
Корректная обработка возвратов и ошибок требует считать backend источником истины и не полагаться на клиентские статусы. Платеж может быть отменён, возвращён или завершён с ошибкой спустя время. Клиент должен уметь корректно показывать промежуточные состояния и восстанавливаться после перезапуска. Без явной модели состояний легко получить дубли, расхождения и жалобы пользователей.
Возвраты и ошибки — это не исключения, а нормальные сценарии платежного флоу, которые должны быть заложены в архитектуру.
Определение:Финальный статус платежа — это состояние, подтверждённое backend’ом, а не клиентом или SDK.
Следствие:
клиент не принимает решений о деньгах
UI отображает только подтверждённые состояния
отказ банка
отмена пользователем
ошибка сети
Поведение клиента:
показать ошибку
разрешить повтор
не менять бизнес-состояние
Самый опасный сценарий:
деньги списаны
подтверждение не получено
пользователь видит ошибку
Решение:
статус "в обработке"
повторная проверка через backend
уведомление после подтверждения
Возврат:
может быть мгновенным
может занимать дни
может быть частичным
Клиенту важно:
корректно отобразить статус
не инициировать повторный платёж
синхронизироваться с сервером
Явно моделировать состояния платежа
Делать операции идемпотентными
Хранить историю операций
Логировать ошибки и возвраты
Ошибки и возвраты — это часть платежной системы. Надёжность достигается только при серверной валидации и четкой модели состояний.