corsikcorsik

Быстрый старт

Шаг 1. Получите API-ключи

Подсказка

Если у вас старый ключ пакета «JavaScript API и HTTP Геокодер» — впишите его в поле «API-ключ Яндекс.Карт (JavaScript API)». После разделения продуктов нужные тарифы уже привязаны к нему, и он авторизует карту, геокодирование и построение маршрутов. Отдельные ключи получать не нужно. В этом случае обязательно включите галочку «Есть платный ключ „API Получения деталей маршрута“» в настройках доставки — иначе маршрут по дорогам будет строиться по данным OpenStreetMap, хотя ваш ключ уже умеет строить его через Яндекс. Подробнее — в разделе «Способ построения маршрута».

Раньше Яндекс выдавал единый ключ — пакет «JavaScript API и HTTP Геокодер», который сразу включал и карту, и геокодирование адресов, и построение маршрутов. Затем Яндекс разделил продукты на отдельные API: теперь каждый из них нужно получить по отдельности, а потом связать вместе на одном ключе. После разделения продуктов все необходимые тарифы должны были автоматически привязаться к вашим старым ключам, поэтому существующие ключи продолжают работать без изменений.

Ключи Яндекса

Получите ключи в Кабинете разработчика Яндекса. Для работы модуля нужны следующие API:

  • JavaScript API — отрисовка карты на странице оформления заказа;
  • API Геокодера — определение координат по адресу;
  • API Геосаджеста — подсказки адресов от Яндекса (если используете подсказки Яндекса);
  • API Получения деталей маршрута — построение маршрута до склада через JS API. Нужен только если в настройках выбран способ построения маршрута «По дорогам» и включена галочка «Есть платный ключ „API Получения деталей маршрута“». Для новых пользователей Яндекса этот API платный.

Раздел «Подключенные продукты» в Кабинете разработчика Яндекса

В разделе «Подключенные продукты» видно, какие API уже подключены к вашему аккаунту, их статус, тариф («Бесплатный» / «Бесплатный с ограничениями» / платный) и сколько запросов израсходовано за сегодня. Недостающий API добавляется кнопкой «Подключить API». Проверяйте эту страницу, если расчёт внезапно перестал работать: скорее всего, исчерпана суточная квота запросов.

Затем свяжите полученные API на одном ключе в разделе «Ключи». Раньше это делалось через окно «Выберите API», теперь привязка живёт в меню-троеточии () справа от строки ключа:

  1. Найдите в списке нужный ключ (обычно тот, у которого продукт JavaScript API).
  2. Нажмите в правой части строки.
  3. Выберите «Привязать продукт» и отметьте нужный API — API Геокодера, API Геосаджеста, API Получения деталей маршрута.
  4. Повторите для каждого API, который вам нужен. Лишний сервис можно убрать пунктом «Отвязать продукт».

Раздел «Ключи» в Кабинете разработчика Яндекса — меню-троеточие с пунктом «Привязать продукт»

В колонке «Продукт» видно, какие API уже привязаны к ключу и активны ли они. Ключ со статусом «Не настроен» у какого-либо продукта работать с этим API не будет — откройте ⋯ → «Настроить» и завершите настройку.

Способ построения маршрута и платный ключ

Расстояние до клиента модуль считает одним из трёх способов. По умолчанию маршрут строится линейно (от точки до точки), и «API Получения деталей маршрута» тогда не нужен вовсе. Способ выбирается в настройках модуля — «Сервис → Расчет стоимости доставки по зонам → Настройки → Доставка», блок «Настройки расчёта стоимости».

Настройки расчёта стоимости: способ построения маршрута и галочка о платном ключе

Способ построения маршрутаГалочка «Есть платный ключ»Кто строит маршрутЧто нужно от Яндекса
Линейный от точки до точкине важнаМодуль (прямая линия)Только JavaScript API и API Геокодера
По дорогамвключенаЯндексДополнительно API Получения деталей маршрута
По дорогамвыключенаOpenStreetMapНичего дополнительно, карта остаётся Яндекса

Внимание

Старый ключ пакета «JavaScript API и HTTP Геокодер» — галочку включите: маршрутизация в такой ключ уже входит. Новый ключ — галочку не включайте: маршрут по дорогам будет строиться по данным OpenStreetMap бесплатно.

Галочка включена — маршрут строит Яндекс. К ключу должен быть привязан «API Получения деталей маршрута», иначе расчёт вернёт ошибку scriptError и стоимость доставки не посчитается.

Галочка выключена — маршрут строится по данным OpenStreetMap, карта остаётся Яндекса. Дополнительные ключи не нужны.

Ключ DaData

Если используете подсказки DaData (вместо Яндекс Геосаджеста), получите ключ для пакета DaData — он не связан с ключами Яндекса.

Сохранение API-ключей

Сохраните полученные ключи в административной части вашего сайта в разделе “Сервис → Расчет стоимости доставки по зонам → Настройки”.

  • В разделе Доставка вставьте ваш ключ Яндекс.Карт в поле «API-ключ Яндекс.Карт (JavaScript API)». Этого одного ключа достаточно для карты, геокодирования адресов и построения маршрутов — при условии, что к нему привязаны нужные API (см. выше).
  • В разделе Подсказки выберите нужные подсказки и вставьте соответствующий API-ключ. Для подсказок Яндекса — поле API ключ Яндекс Геосаджеста, для подсказок DaData — поле API ключ DaData.

Внимание

Ограничьте API-ключи по HTTP Referer / разрешённому домену в кабинете провайдера — ключ Яндекс.Карт в разделе «Ключи» Кабинета разработчика Яндекса, а ключ DaData — в профиле DaData. Эти ключи работают на стороне клиента (карта, подсказки адресов, геокодирование и построение маршрутов выполняются в браузере), поэтому видны в исходном коде страницы. Именно ограничение по Referer/домену не даёт использовать ваши ключи на чужих сайтах.

Шаг 2. Подключите API

Для корректной работы модуля необходимо подключить Яндекс.Карты на вашем сайте, добавив тег <script>, который загрузит на страницу JS API.

<script src="https://api-maps.yandex.ru/2.1/?apikey=YOUR_MAP_API_KEY&suggest_apikey=YOUR_SUGGEST_API_KEY&lang=ru_RU"></script>

Важно проверить

Внимание

Проверьте, не подключены ли Яндекс.Карты уже на вашем сайте, так как повторное подключение не рекомендуется. Убедитесь, что карты не подключаются другим модулем.

Способы подключения

Подключение в компоненте sale.order.ajax

Вы можете добавить подключение внутри компонента sale.order.ajax. В файле template.php найдите строку с подключением Яндекс.Карт:

<script src="<?=$scheme?>://api-maps.yandex.ru/2.1/?lang=<?=$locale?>"></script>

и замените на:

<?php
$apiKey = htmlspecialcharsbx(Bitrix\Main\Config\Option::get('fileman', 'yandex_map_api_key', ''));
$apiKeyGeoSuggest = htmlspecialcharsbx(Bitrix\Main\Config\Option::get('corsik.yadelivery', 'api_key_geoSuggest'));
?>
<script src="<?= $scheme ?>://api-maps.yandex.ru/2.1/?lang=<?= $locale ?><?= $apiKey ? "&apikey=$apiKey" : "" ?><?= $apiKeyGeoSuggest ? "&suggest_apikey=$apiKeyGeoSuggest" : "" ?>"></script>

Подключение с помощью метода модуля

Модуль предоставляет публичный API Asset::addYandexMapLink(), который подключает Яндекс.Карты с нужными ключами (API-ключ + ключ подсказок) на вашей странице.

Пример подключения в <head> вашего сайта (модуль 26.3.2+):

if (Bitrix\Main\Loader::includeModule('corsik.yadelivery'))
{
    Corsik\YaDelivery\Public\Service\Asset::addYandexMapLink();
}

Если нужен сам тег или URL без подключения — Asset::getYandexMapLink() / Asset::getYandexMapLink(true).

В версиях модуля до 26.3.2 используйте устаревший аналог — Corsik\YaDelivery\Handler::getYandexMapLink():

if (Bitrix\Main\Loader::includeModule('corsik.yadelivery'))
{
    Bitrix\Main\Page\Asset::getInstance()->addString(Corsik\YaDelivery\Handler::getYandexMapLink(), true);
}

Автоматическое подключение

Если вы не выполнили ни один из пунктов по подключению <script>, модуль в течение 5 секунд ожидает подключения и загрузки Яндекс.Карт. Если карты не будут подключены, модуль подключит их автоматически с нужными ключами. Однако, если ранее были подключены Яндекс.Карты без ключей, расчет не будет работать.

Шаг 3. Выберите нужные настройки и сохраните их

Перейдите в настройки модуля “Сервис → Расчет стоимости доставки по зонам → Настройки”. Примените нужные настройки модуля, перейдя в разделы Доставки, Подсказки, Дополнительные поля, Визуальные настройки.

Шаг 4. Создание складов и зон доставки

Перейдите в модуль “Сервис → Расчет стоимости доставки по зонам”.

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

Шаг 5. Создание профиля доставки

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