Практическое руководство

Как организовать доставку и расчёт её стоимости на сайте

Как спроектировать доставку в интернет-магазине: зоны, ограничения товара, расчёт стоимости, срок действия тарифа, ошибки API и подтверждение заказа.

Материал WebexlabПодготовлено 5 мин чтения

Краткий ответ

Доставка на сайте должна учитывать адрес, состав заказа, ограничения перевозки и источник тарифа. Показывайте, когда цена рассчитана точно, а когда требуется подтверждение; при изменении корзины пересчитывайте условия и не подменяйте недоступный расчёт нулевой стоимостью.

Опишите правила до подключения калькулятора

Кнопка выбора доставки скрывает несколько решений: куда можно отправить товар, каким способом, с какого склада и за чей счёт. Начните с правил магазина и договорённостей с перевозчиками. Для хрупкого, крупного или температурного товара допустимые варианты могут отличаться. Наличие адреса в форме ещё не означает возможность выполнить доставку.

Разделите срок комплектации заказа и срок перевозки. Покупатель обычно воспринимает показанную дату как общий результат, поэтому подпись должна объяснять расчёт. Если магазин обещает только ориентир, не оформляйте его как подтверждённый интервал. Укажите момент, когда условия становятся окончательными, и действие при изменении после обращения.

Соберите необходимые данные

Соберите необходимые данные — сравнение
ОбъектКакие сведения нужныПоследствие отсутствия
ТоварВес, габариты, ограниченияНельзя достоверно рассчитать вариант
СкладАдрес, доступность, время комплектацииОшибка маршрута или срока
ПокупательДостаточная часть адреса и способ полученияНевозможно выбрать зону
ПеревозчикТариф, ограничения, ответ APIНужен резервный сценарий
ЗаказСостав, количество, скидкиТребуется повторный расчёт

Собирайте данные по мере необходимости. Для предварительной оценки может хватить населённого пункта, а точный адрес понадобится позже. Не требуйте лишние поля только потому, что они есть в интерфейсе перевозчика. При этом не выдавайте приблизительный тариф за окончательный, если отсутствует существенная часть адреса или габаритов.

Спроектируйте выбор варианта

Показывайте доступные способы с различиями: стоимость, ориентир срока, пункт получения и ограничения. Недоступный вариант можно скрыть или объяснить причину, если это помогает человеку изменить заказ. Сообщение «ошибка» не подсказывает, проблема во всём сервисе или только в выбранном товаре. Для самовывоза укажите место и условие готовности заказа.

При смене адреса или состава корзины прежний тариф становится кандидатом на пересчёт. До подтверждения не позволяйте незаметно сохранить устаревшую сумму. Если новая стоимость отличается, покажите изменение до завершения. Сценарии оформления связаны с проектированием заказа, поэтому калькулятор нельзя принимать отдельно от всей покупки.

Обработайте недоступность внешнего расчёта

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

Для API перевозчика изучите ограничения конкретного контракта. Частый пересчёт при каждом символе адреса может создавать лишние запросы. Объединяйте действия пользователя разумно и следите за актуальностью ответа: поздний ответ для старой корзины не должен заменять новый. Подробные ограничения обмена разобраны в статье о лимитах API.

Учебный сценарий смешанной корзины

Предположим, два товара отправляются с разных складов, а один не подходит для постамата. Интерфейс должен либо объяснить разделение доставки, либо предложить общий доступный вариант по правилам магазина. Нельзя показывать тариф лёгкого товара для всего заказа. Пример не задаёт универсальную политику — он проверяет согласованность данных и обещания.

Покупатель удаляет крупный товар. Система пересчитывает варианты, сохраняет новый состав и показывает доступный постамат. Если расчёт временно недоступен, заказ не получает случайную бесплатную доставку. Сотрудник видит, какие условия ещё предстоит подтвердить, и не принимает их за окончательно согласованные.

Проверьте граничные случаи

  • Адрес вне зоны и адрес с неоднозначным населённым пунктом.
  • Недостаточные габариты одного товара и изменение количества.
  • Закрытый пункт выдачи или недоступный перевозчик.
  • Устаревший ответ после смены корзины.
  • Повторное открытие сохранённого заказа с новым тарифом.

Для каждой проверки запишите ожидаемое сообщение и итоговое состояние заказа. Одинаково важны интерфейс покупателя и данные сотрудника. Если люди видят разные суммы без объяснения, технически работающий калькулятор всё равно создаёт операционную ошибку.

Что считать готовым результатом

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

Как сохранить выбранный способ доставки при изменении корзины

Допустим, покупатель выбрал пункт выдачи, а затем добавил крупногабаритный товар. Пересчитайте допустимость доставки и объясните, почему прежний вариант больше не подходит. Нельзя сохранять старую стоимость только потому, что интерфейс уже показал итог.

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

Термины из материала

Следующий шаг

Применить к вашему проекту

Спроектируем расчёт доставки и понятные состояния оформления заказа для ваших товаров и регионов.

Обсудить задачу
Все материалы блога