Виджет расчета доставки с корзиной

Добавляет на любой сайт полноценную корзину с расчетом доставки и онлайн оплатой заказа

Демонстрация работы

Пример фото товара

Купить кроссовки с доставкой

Цена: 6 500 рублей

Корзина отображается в правом верхнем углу экрана.
Расположение и цвета можно менять как через настройки в личном кабинете, так и через CSS.

Для добавления товара в корзину кликнете по кнопке «Заказать».
Название кнопки может быть любым, настраивается на стороне сайта.


По умолчанию город-отправитель используется тот, который указан в настройках соответствующего ключа (в данном случае - Москва), но его можно изменить при необходимости через атрибут data-from, например чтобы для некоторых брендов расчет был из Екатеринбурга.


Количество товара, которое будет добавлено в корзину по умолчанию равно 1 штуке, можно изменить через поле «Количество».

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

Основные возможности

  • Показывает сразу все варианты доставки нужными вам транспортными компаниями:
    Яндекс Доставка, СДЭК, Почта России, DPD, Деловые Линии, ПЭК, Dostavista, КИТ, Байкал Сервис, Желдорэкспедиция, Возовоз, Энергия, 5POST, Магнит Пост, Постаматы «Халва Экспресс», Grastin, Logsis

    Все интеграции уже сделаны на нашей платформе.
    Вам нужно лишь выбрать какие транспортные компании отображать в виджете и сделать нужные вам настройки в личном кабинете.

  • Пункты самовывоза (ПВЗ) всех служб доставки на одной карте

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

  • Учет веса, габаритов и цены товаров при расчете доставки

    Источником данных весо-габаритных характеристик может быть ваш сайт или настройки в нашем кабинете.

  • Возможность через правила настроить коррекцию стоимости и срока

    На этой странице для примера при выборе DPD с оплатой Наличными при получении добавляется 100% наценка к стоимости доставки. Так же через правила можно сделать коррекцию в зависимости от любых других параметров заказа.

  • Онлайн-оплата заказа

    В настройках есть возможность разрешить онлайн оплату через одну из подключенных к нам платёжных систем. Таким образом выбрав тип оплаты «Картой на сайте» клиент сможет оплатить заказ прямо в виджете. Разрешенные типы оплат и их названия настраиваются в личном кабинете.
    На данный момент доступна оплата через ЮKassa, Альфа-банк, PayKeeper, Т-банк и Точка банк. Другие платежные сервисы и банки добавим по запросу.
    По факту оплаты заказа изменится статус его оплаты в в нашем кабинете, и вам будет отправлено email уведомление что заказ оплачен.

  • Выбор тарифа

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

  • Выбор дополнительных услуг

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

  • Простая настройка и кастомизация внешнего вида под стиль сайта

    Запуск виджета настраивается на любую кнопку сайта.
    Место отображения корзины, а также цвета элементов корзины настраиваются в Личном кабинете. Внешний вид с помощью css можно настроить под дизайн конкретного сайта: цвета, шрифт, форма и расположение блоков.

  • Функции обратного вызова для гибкой встройки в сайт

    Доступные события смотрите ниже в блоке Подключение и настройка.


Подключение и настройка

1. Создайте и настройте аккаунт в сервисе eShopLogistic. Порядок действий описан здесь.

2. Выполните подключение виджета к сайту по документации ниже.

Если что-то не получается - напишите нам через Telegram или в раздел «Поддержка» в нашем кабинете, мы обязательно поможем!


Помимо параметров настройки виджета в личном кабинете, некоторые настройки можно применять прямо при установке виджета.
Это позволяет переопределять указанные в личном кабинете базовые настройки (например, в зависимости от каких-то условий на сайте).

Обязательным параметром, который должен быть указан и не может быть изменён, является ключ виджета - data-key.

Параметр Описание
data-key Ключ виджета. Указан в настройках виджета на вкладке «Подключение на сайте».
data-offers

JSON-строка с данными набора товаров.
Данный атрибут относится к кнопке добавления в корзину.
Например:

<button data-esl-widget-cart
    data-offers='[{ "article":"001","name":"Кроссовки","count":1,"price":6500,"weight":1 }]'>
    Заказать с доставкой
</button>

По клику на кнопке, вместо 1 товара вы можете добавить в виджет сразу несколько. Например, содержимое корзины посетителя (если у вас уже используется штатная корзина), набор связанных товаров или несколько грузовых мест.

Важно! Обязательные элементы:

  • article - артикул или идентификатор товара на сайте
  • name - название товара
  • count - количество
  • price - стоимость единицы товара
  • weight - вес единицы товара, кг

Дополнительно можно (и желательно) указать габариты единицы товара:
dimensions - формат Д*Ш*В в сантиметрах.

Пример:

data-offers='[
    { "article":91,"name":"Радиотелефон DECT","count":1.5,"price":304,"weight":1,"dimensions":"25*15*10" },
    { "article":98,"name":"Кроссовки Puma","count":2,"price":5304,"weight":2.3,"dimensions":"15*15*10" }
]'

Также можно передать ссылку на изображение товара:
image - uri изображения товара (параметр src тега img).

Пример:

data-image="images/product.png"
data-from

Изменение города-отправителя.

В качестве значения используется ФИАС-код или название населённого пункта.
Лучше всего использовать именно ФИАС-код, т.к. населённых пунктов с одинаковым названием может быть несколько.
ФИАС-код можно узнать на сайте Федеральной Адресной Системы: https://fias.nalog.ru/ExtendedSearch.

Примеры (изменит город-отправитель на «Тверь»):
data-from="c52ea942-555e-45c6-9751-58897717b02f" , data-from="Тверь"

data-user

JSON-строка с данными пользователя.

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

Доступные элементы:
name - имя пользователя на сайте; phone - телефон; email - электронная почта.

Пример:

data-user='{ "name": "Иванов Иван Иванович", "email": "test@mail.ru", "phone": "+79100000000"}'
data-ip

IP-адрес посетителя для автоматического определения города.

Может быть получен средствами CMS или напрямую, например посредством php:

<?php echo $_SERVER['REMOTE_ADDR']; ?>
data-order

Если в настройках виджета в нашем личном кабинете Вы настроили отправку заказа, но на определённой странице не хотите разрешать отправку заказа, установите значение data-order="false" .
В таком случае виджет позволит рассчитать доставку, показать ПВЗ на карте, но не будет функции "Отправить заказ".

Удобно при использовании виджета при встраивании в панель управления CMS или иных сервисов, а также для вывода виджета на информационных страницах без привязки к товарам, например «Доставка».

data-terminal-delivery-default

Выбрать указанную транспортную компанию по умолчанию для варианта «курьер».

По умолчанию виджет выбирает самый дешёвый вариант.
Если вы хотите, чтобы конкретная транспортная компания была выбрана не зависимо от стоимости, укажите её код в данном параметре. Например:
data-terminal-delivery-default="sdek"

data-door-delivery-default

Выбрать указанную транспортную компанию по умолчанию для варианта «самовывоз».

По умолчанию виджет выбирает самый дешёвый вариант.
Если вы хотите, чтобы конкретная транспортная компания была выбрана не зависимо от стоимости, укажите её код в данном параметре. Например:
data-door-delivery-default="sdek"

data-controller

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

Актуально для логгирования или отладки.

Параметры, отмеченные , - обязательны.

Доступно 10 функций обратного вызова для каждого ключевого события или ошибки:

  • onLoadApp - инициализация виджета;
  • onSelectedSettlement - выбор населённого пункта;
  • onAllServicesLoaded - получение всех доступных вариантов доставки;
  • onSelectTypeDelivery - выбор типа доставки;
  • onSelectedPayment - выбор варианта оплаты;
  • onSelectedService - выбор варианта доставки;
  • onChangeAdditionalService - выбор дополнительных услуг;
  • onClickSubmit - клик по кнопке отправки заказа;
  • onAcceptAddress - выбор адреса доставки;
  • onSendedOrder - успешная отправка заказа;
  • onGetPaymentSystem - при отправке заказа, если есть включена платёжная система;
  • onAddToCart - товар добавлен в корзину;
  • onInitCart - инициализация корзины;
  • onChangeCountOffer - изменено количество товара в корзине;
  • onRemoveOffer - товар удалён из корзины;
  • onCloseWindow - закрытие окна виджета;
  • onErrorSendOrder - ошибка отправки заказа;
  • onNotAvailableServices - не получено ни одного варианта доставки.

Пример использования:

<script>
    document.addEventListener('DOMContentLoaded', () => {
        const root = document.getElementById('eShopLogisticWidgetCartModule');

        root.addEventListener('eShopLogisticWidgetCartModule:onLoadApp', (event) => {
            console.log('Событие onLoadApp', event.detail)
        });

        root.addEventListener('eShopLogisticWidgetCartModule:onSelectedService', (event) => {
            console.log('Событие onSelectedService', event.detail)
        })

        // ...
    })
</script>
1

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

Добавление ключа доступа

2

Добавьте к ключу виджет типа Готовая корзина с расчетом доставки и отправкой заказа.

Выбор виджета

3

Настройте параметры и функционал виджета по документации.

В том числе включите Режим корзины на соответствующей вкладке настроек.

Настройка виджета

4

Для подключения на сайт в параметре data-key используйте ключ виджета.

Ключ виджета

5

Общий порядок действий для подключения сервиса eShopLogistic на ваш сайт или в МойСклад описан здесь. Подключайтесь по документации и используйте все возможности интеграции со службами доставки для вашего бизнеса.

1. Добавить в нужное место на странице элемент запуска виджета.
Обязательные атрибуты: data-esl-widget-cart и data-offers:

<button data-esl-widget-cart
    data-offers='[{ "article":"001","name":"Кроссовки","count":1,"price":6500,"weight":1 }]'>
    Заказать с доставкой
</button>

2. Добавить блок виджета:

<div id="eShopLogisticWidgetCartModule" data-lazy-load="false" data-key="000000-0-0"></div>

3. Подключить виджет:

<script src="https://api.esplc.ru/widgets/cart-module/app.js"></script>

Примеры

1. Настройка параметров запуска виджета через data-атрибуты

Настроим заголовок окна виджета, город отправления:

<button data-esl-widget-cart
    data-offers='[{ "article":"001","name":"Кроссовки","count":1,"price":6500,"weight":1 }]'>
    Заказать с доставкой
</button>
<div id="eShopLogisticWidgetCartModule"
    data-lazy-load="false"
    data-key="000000-0-0"
    data-from="Самара"
    data-title="Наш заголовок виджета"
</div>

2. Добавление в корзину сразу набора товаров

Для этого нужно просто добавить в атрибут data-offers нужные товары

<button data-esl-widget-cart
    data-offers='[{ "article":"001","name":"Кроссовки","count":1,"price":6500,"weight":1 }, { "article":"002","name":"Шнурки","count":5,"price":250,"weight":0.01 }]'>
    Заказать с доставкой
</button>
<div id="eShopLogisticWidgetCartModule" data-lazy-load="false" data-key="000000-0-0"</div>

3. Изменение кодичества товара в корзину

Нам необходим элемент, задающий количество. Например, это будет обычный input type="number" с идентификатором id="counter":

<input id="counter" class="form-control" type="number" value="1">
<button data-esl-widget-cart id="to-cart"
    data-offers='[{ "article":"001","name":"Кроссовки","count":1,"price":6500,"weight":1 }]'>
    Заказать с доставкой
</button>

Добавим немного javascript:

<script>
document.addEventListener('DOMContentLoaded', () => {
    const button = document.getElementById('to-cart'), offers = JSON.parse(button.dataset.offers)
    document.getElementById('counter').addEventListener('change', (event) => {
        if(typeof offers === "object"){
            offers[0].count = event.target.value
            button.dataset.offers = JSON.stringify(offers)
        }
    })
})
</script>

При изменении количества в поле с идентификатором id="counter" будет изменён параметр data-offers кнопки.
Поэтому при клике на кнопке в корзину будет добавлено соответствующее указанному количество.

4. Отправка события в метрику

Например, необходимо отправить в метрику достижение цели «Отправка заказа»:

<script>
document.addEventListener('DOMContentLoaded', () => {
        document.getElementById('eShopLogisticWidgetCartModule').addEventListener('eShopLogisticWidgetCartModule:onSendedOrder', (event) => {
            ym(ваш_номер_счётчика, 'reachGoal', 'onSendedOrder')
        })
    })
</script>

5. Автоматичекое определение города посетителя

Для этого необходимо определить IP-адрес.

IP-адрес может быть получен средствами CMS или напрямую, например посредством PHP:

<?php echo $_SERVER['REMOTE_ADDR']; ?>

Если нет доступа к переменным сервера (например, для Tilda), можно получить IP-адрес через JS:

<script>
fetch('https://ipapi.co/json/').then(d => d.json()).then(d => document.getElementById('eShopLogisticWidgetCartModule').dataset.ip = d.ip)
</script>

6. Переназначение клика добавления в корзину на другой элемент

Ситуация, когда на странице уже есть кнопка, но с ней нельзя напрямую работать (например, вTilda).

Решение: скрываем штатную кнопку и пробрасываем событие клика с вашего элемента на штатную кнопку.

<button data-esl-widget-cart id="toCart" style="display:none"
 data-offers='[{ "article":"001","name":"Название товара","count":1,"price":45900,"weight":34}]'>
    Заказать с доставкой
</button>
<div id="eShopLogisticWidgetCartModule" data-lazy-load="false" data-key="XXXXXX-XX-XX"></div>
<script src="https://api.esplc.ru/widgets/cart-module/app.js"></script>

<script>
document.addEventListener('DOMContentLoaded', () => {
    const buyButton = document.querySelector('a[href="#rec838534908"]')
    if(buyButton) {
        buyButton.addEventListener('click', event => {
            event.preventDefault()
            document.getElementById('toCart').click()
        })
    }
})
</script>