Ответ вслух Middle System design на фронте спрашивают часто обновлено

Оформление заказа с оплатой

Вопрос

Спроектируй чекаут: корзина, адрес, оплата. Деньги настоящие.

Веди разговор вслух, как на секции. Начинать с решения - главная ошибка: первые полторы минуты только вопросы.

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Здесь проверяют не форму, а понимание, что деньги настоящие. Главные две вещи.

Что должно прозвучать в ответе

  • уточнил способы оплаты, доставку, требуется ли фискализация

  • многошаговая форма: где живёт черновик и переживает ли он перезагрузку

  • валидация на клиенте - удобство, источник правды всегда сервер

  • цена пересчитывается на сервере: клиенту нельзя доверять сумму

  • идемпотентность оплаты: повторная отправка не создаёт второй заказ

  • редирект на платёжную страницу и возврат: что если пользователь закрыл вкладку

  • вебхук - источник правды о статусе, а не возврат пользователя

  • блокировка кнопки и понятная ошибка при отказе

Что могут спросить следом

  • Что если вебхук не пришёл, а пользователь вернулся с успехом?
  • Как показать, что оплата в обработке?
  • Где хранить черновик многошаговой формы?

Разбор

Здесь проверяют не форму, а понимание, что деньги настоящие.

Главные две вещи. Первая: сумма считается на сервере. Клиент показывает, но не решает - иначе скидку подставят из консоли. Вторая: идемпотентность. Пользователь дважды нажал «оплатить», сеть подвисла, он обновил страницу - второго заказа быть не должно. Ключ идемпотентности генерируется один раз на попытку оформления.

Возврат с платёжной страницы ненадёжен: пользователь может закрыть вкладку после успешной оплаты. Поэтому источник правды - вебхук от платёжной системы, а экран «спасибо» лишь отображает состояние, опрашивая заказ.

Типичная авария: каскадное удаление сносит запись о платеже, система считает подписку неоплаченной, и клиент платит второй раз. Вывод, который стоит произнести: финансовые записи не удаляются никогда, состояние платежа - конечный автомат.

Черновик формы переживает перезагрузку, шаги отражаются в адресе, кнопка блокируется на время запроса.

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

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