Интеграция расчёта стоимости доставки через API

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Интеграция расчёта стоимости доставки через API
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1260
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Интеграция расчёта стоимости доставки через API

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

Архитектура расчёта

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

class DeliveryCalculator
{
    private array $providers;

    public function calculate(Cart $cart, Address $destination): Collection
    {
        $requests = collect($this->providers)->map(function ($provider) use ($cart, $destination) {
            return $provider->calculateAsync($cart, $destination); // возвращает Promise
        });

        return collect(async_all($requests))  // параллельное выполнение
            ->flatten()
            ->sortBy('price')
            ->filter(fn($option) => $option->isAvailable());
    }
}

Параллельные запросы через Guzzle Pool или ReactPHP HTTP. Таймаут на каждый внешний запрос — не более 2–3 секунд. Если провайдер не ответил — его вариант просто не включается в список.

Унифицированный формат варианта доставки

class DeliveryOption
{
    public string $providerId;    // 'cdek', 'boxberry', 'pochta'
    public string $serviceCode;   // 'cdek_express', 'cdek_pvz'
    public string $name;          // 'СДЭК: Экспресс'
    public string $type;          // 'courier' | 'pvz' | 'postamat'
    public int $price;            // в копейках
    public ?int $priceWithDiscount;
    public int $minDays;
    public int $maxDays;
    public ?string $pvzCode;      // если нужно выбрать точку
    public array $meta;           // доп. данные провайдера
}

Кеширование результатов

Расчёт повторяется при каждом изменении адреса или состава корзины. Кешировать имеет смысл по ключу {cart_hash}:{destination_hash} на 10–15 минут.

$cacheKey = "delivery:{$cart->hash()}:{$destination->hash()}";
return Cache::remember($cacheKey, 900, fn() => $this->fetchFromProviders($cart, $destination));

Параметры для расчёта

Каждый провайдер требует разные параметры, но основа общая:

  • Размеры и вес посылки (суммарные по всем товарам в корзине)
  • Город/регион отправления (адрес склада)
  • Город/регион назначения
  • Объявленная ценность (влияет на стоимость страховки)
  • Количество мест

Габариты извлекаются из товаров: если продавец не заполнил — применяются дефолтные значения.

Разные склады и точки отправления

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

Отображение результатов

На UI результаты группируются:

  • Курьерская доставка: несколько вариантов по скорости/стоимости
  • Самовывоз из ПВЗ: клик → открывается карта выбора точки
  • Почта России: отдельно (обычно медленнее, дешевле)

Скорость доставки отображается как "1–2 рабочих дня" или "к 15 марта" — для этого нужен производственный календарь (праздники, выходные).

Срок интеграции: 3–5 дней для подключения 2–3 провайдеров с параллельными запросами и кешированием.