Автоплатёж
Автоплатёж — опция, которая позволяет автоматически пополнять ваш баланс, когда он приближается к нулю.
Правила обработки автоплатежей
Когда наступает момент совершения автоплатежа для проекта создаётся задача AddAutoPayment. Найти её и отследить статус можно в разделе Задачи во вкладке Общие проекты.
Виды статусов:
Completed (Выполнен)
Наиболее применимый статус задачи по отношению к автоплатежам. В него переводятся задачи в случае:
- Успешного автоплатежа.
- Неуспешного платежа, когда точно понятно, что платёж провести не удастся. Сюда попадают все или большая часть ошибок прикладного уровня от платёжной системы:
- Недостаточный баланс.
- Карта просрочена.
- Общий отказ эмитента.
- Требуется дополнительная аутентификация.
- Другие подобные.
Перевод в этот статус не означает, что платёж действительно произошёл. Этот статус информирует только о том, что была совершена попытка автоплатежа и препятствий для совершения новой попытки нет. Нотификация отправляется в любом случае.
Рисунок 1. Нотификация об успешном платеже со статусом Completed
Рисунок 2. Нотификация о неуспешном платеже со статусом Completed
Failed (Ошибка выполнения)
В этот статус задача переводится в случае:
- Всех ошибок, которые заранее невозможно классифицировать по частоте возникновения и возможности автоматической обработки (то есть по умолчанию все остальные, не входящие в предыдущий пункт).
- Ошибок, когда важно обратить внимание технической поддержки на возникшую проблему. Например:
- ошибка неверного (истёкшего) ключа (токена) API;
- ошибка десериализации ответа от сервера;
- ошибка неверного запроса ( в общем смысле);
- другие подобные.
Кроме нотификации пользователя никакие другие действия не предпринимаются. При повторных исключениях (например, в случае перезапуска) нотификация повторяется.
Детализация проблемы
Любой перевод в статус логируется с указанием причины перевода.
ErrorMessage задачи содержит описание ошибки из платёжной системы, если такое присылается.
Например:
The operation failed. Result type: Com.Cloudmng.Shared.Commands.VoidCommandResult