Расчёт доставки по маршруту


Расчёт доставки по маршруту

/delivery/distance

Расчёт стоимости доставки по вашим тарифам в зависимости от расстояния или времени.
Подразумевает использование специального виджета с построением маршрута на карте (Яндекс). Полученные от Яндекса значения расстояния и времени маршрута передаются данным методом для получения стоимости по вашим тарифам.

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

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

Параметр Описание
key Ключ доступа
zone Код зоны доставки
distance Расстояние, км
duration Время, часы
Необходимо, если ваши тарифы строятся от времени доставки, а не отрасстояния.
offers

Состав груза - JSON-массив товаров.

Пример:

[{
     "count":2,
     "price":150,
     "weight":0.3,
     "dimensions":"20*20*10"
  }, {
      "count":1,
      "price":50,
      "weight":0.2,
      "dimensions":"10*10*30"
  }]
weight Вес груза, кг.
Для упрощения можно передать вместо offers, если ваши тарифы учитывают только вес груза.

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

Параметры, отмеченные , - обязательны в зависимости от других параметров.

curl --request POST 'https://api.esplc.ru/delivery/distance' \
--header 'Content-Type: application/json' \
--data-raw '{
    "key":"7229k9e07gfa23cd208300f30cafb",
    "zone":"66z257375c8e2",
    "distance": 1.5,
    "duration": 2.1,
    "offers": [{ "count": 2, "dimensions": "50*45*35",  "price": 2068, "weight": 1.2 } ]
}'

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.esplc.ru/delivery/distance',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "key":"7229k9e07gfa23cd208300f30cafb",
    "zone":"66z257375c8e2",
    "distance": 1.5,
    "duration": 2.1,
    "offers": [{ "count": 2, "dimensions": "50*45*35",  "price": 2068, "weight": 1.2 } ]
}',
  CURLOPT_HTTPHEADER => ['Content-Type: application/json']
]);

$response = curl_exec($curl);

curl_close($curl);
print_r(json_decode($response,1));

Обратите внимание: data.time присутствует в ответе только если передан параметр duration.
Значение data.time в случае получения стоимости доставки через API избыточно, требуется для работы наших виджетов.

{
    "http_status": 200,
    "http_status_message": "",
    "data": {
        "price": {
            "value": 225,
            "unit": "рублей"
        },
        "time": {
            "value": 2,
            "unit": "часа"
        }
    }