Выбор ответа Senior Переходы состояний и опыт обновлено

События не по порядку

Вопрос

Статус подписки меняется по вебхукам платёжной системы: «оплата прошла», «оплата не прошла», «подписка отменена». Какая проверка найдёт самый коварный дефект?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Старое событие, пришедшее позже или повторно, не откатит статус. Внешние системы не гарантируют порядок и единственность доставки, вебхук могут прислать повторно и с задержкой.

Варианты ответа

  1. Каждый вебхук по отдельности меняет статус подписки правильно
  2. Вебхук с неверной подписью отклоняется и не меняет статус
  3. Старое событие, пришедшее позже или повторно, не откатит статусправильный ответ
  4. Новый статус сразу отображается в личном кабинете клиента

Разбор

Внешние системы не гарантируют порядок и единственность доставки, вебхук могут прислать повторно и с задержкой. Если система просто применяет последнее пришедшее событие, опоздавшее старое событие откатит подписку, и клиент, который заплатил, потеряет доступ. Правильная обработка учитывает время события или версию и идемпотентна. Проверка отдельных вебхуков нужна, но этот класс ошибок не ловит. Подпись это безопасность, тоже важно, но про другое. Отображение статуса вторично.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.