
API
REST API
Компонент предоставляет REST API через роутер MiniShop3, доступный по базовому маршруту /api/v1/cdek.
Эндпоинты фронтенда
Все эндпоинты защищены TokenMiddleware (требуется токен ms3).
GET /suggestions
Получение подсказок адреса от сервиса DaData.
| Параметр | Тип | Описание |
|---|---|---|
query | string | Строка поиска (обязательно) |
country | string | Код или название страны |
GET /postal-code
Получение почтового индекса по названию города.
| Параметр | Тип | Описание |
|---|---|---|
city | string | Название города (обязательно) |
country | string | Код или название страны |
GET /status
Получение статуса доставки (стоимость, сроки).
| Параметр | Тип | Описание |
|---|---|---|
postal_code | string | Почтовый индекс |
POST /status
Сохранение данных выбранного ПВЗ в сессии. Принимает JSON-тело запроса с произвольными полями.
GET /points
Получение списка ПВЗ.
| Параметр | Тип | Описание |
|---|---|---|
postal_code | string | Почтовый индекс (обязательно) |
city | string | Название города |
country | string | Название страны |
Ответ:
json
{
"success": true,
"data": {
"html": "<select>...</select>",
"points": [
{
"code": "KSD20",
"name": "Краснодар, ПВЗ",
"location": {
"address": "ул. Уральская, 124",
"latitude": 45.03,
"longitude": 38.97
},
"work_time": "Пн-Пт 09:00-18:00"
}
],
"postal_code": "350059",
"coordinates": {
"latitude": 45.03,
"longitude": 38.97
}
}
}Эндпоинт менеджера
POST /order/update-point
Обновление выбранного ПВЗ и пересчёт стоимости доставки для существующего заказа. Доступен только для администраторов (проверка isMember('Administrator')).
| Параметр | Тип | Описание |
|---|---|---|
order_id | int | ID заказа (обязательно) |
point | string | Код ПВЗ |
pointData | object | Полный объект данных ПВЗ |
Ответ:
json
{
"success": true,
"data": {
"point": "KSD20",
"delivery_cost": 346.5,
"cost": 12622.5
}
}Использование
API используется внутренними модулями компонента. Для кастомных интеграций можно обращаться к эндпоинтам напрямую через fetch:
javascript
const assetsUrl = '/assets/components/minishop3/';
const response = await fetch(`${assetsUrl}api.php?route=/api/v1/cdek/points&postal_code=350059`);
const data = await response.json();