Доставка
Расчёт доставки для виджета. Запрос идёт с cookie витрины и токеном CSRF.
Расчёт доставки
Метод отвечает, только если в магазине включён виджет доставки. Иначе статус 403 без тела.
address_data обязателен. В него кладут результат подсказки адреса: город, индекс, код КЛАДР. variant_id считает доставку для одной модификации. Несколько модификаций передают объектом variants: ключ — id модификации, значение — количество.
В ответе только способы, которые виджету разрешено показывать и которые подходят заказу. Самовывоз без точек в городе в список не попадает.
| Параметр | Описание |
|---|---|
address_data обязательныйобъект |
Результат подсказки адреса: город, индекс, код КЛАДР. |
variant_id необязательныйчисло |
Считать доставку для одной модификации. |
variants необязательныйобъект |
Несколько модификаций: ключ — id, значение — количество. |
const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
const response = await fetch("/front_api/deliveries/calculate.json", {
method: "POST",
credentials: "same-origin",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
"X-CSRF-Token": csrfToken
},
body: JSON.stringify({
variant_id: 2176487200,
address_data: {
city: "Москва",
zip: "101000",
kladr_id: "7700000000000"
}
})
});
const data = await response.json();
Ответ · 200
{
"deliveries": [
{
"id": 9,
"position": 0,
"title": "Самовывоз",
"description": "<p>На пункте выдачи</p>",
"price": 0,
"show_price": true,
"charge_up_to": null,
"delivery_interval": {
"min_days": null,
"max_days": null,
"description": ""
},
"errors": [],
"warnings": []
},
{
"id": 17,
"position": 1,
"title": "Курьером",
"description": "<p>Доставка курьером </p>",
"price": 300,
"show_price": true,
"delivery_interval": {
"min_days": null,
"max_days": null,
"description": ""
},
"errors": [],
"warnings": []
}
]
}
У способа с диапазоном цены вместо price приходят price_min и price_max. show_price: false значит, что цену в виджете показывать не нужно. errors не прячет способ: виджет может показать текст ошибки.
Запрос не записывает адрес в корзину. Он только считает стоимость.