Пользовались услугами Главной Доставки?
Поздравляем! У Вас уже есть личный кабинет.
Позвоните +7 (495) 660-20-49 и получите доступ к кабинету.
Либо нажмите восстановить пароль.
Пользовались услугами Главной Доставки?
Поздравляем! У Вас уже есть личный кабинет.
Позвоните +7 (495) 660-20-49 и получите доступ к кабинету.
Либо нажмите восстановить пароль.
Пользовались услугами Главной Доставки?
Поздравляем! У Вас уже есть личный кабинет.
Позвоните +7 (495) 660-20-49 и получите доступ к кабинету.
Либо нажмите восстановить пароль.
Для взаимодействия с внешними системами в компании "Главная Доставка" разработан API, доступный для всех клиентов компании. Он позволяет получать предварительный расчёт стоимости, план перевозки, а также оформлять накладные в собственной системе клиента. Пожалуйста, свяжитесь с вашим куратором, чтобы начать процесс интеграции.
Текущая версия API — 2020.01.22.1.
API-сервер доступен по адресу http://api.glavdostavka.ru
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
id | string | Идентификатор запроса. Ответ также содержит этот идентификатор, что позволяет асинхронно обрабатывать несколько запросов | '11119016315a2117bc330dc5.67310202' | |
auth | string | + | Авторизационный токен клиента (см. ниже) | '75743/433ca3e5068add011dcbf60dfbca84bb' |
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
id | string | Идентификатор запроса | '11119016315a2117bc330dc5.67310202' | |
error | object | + | Данные об ошибке | { "code": 0, "message": "" } |
notice | array | Примечания | [ "Не указан груз", "Не указан отправитель" ] | |
result | mixed | Результат выполнения запроса |
Поле | Тип | Обязательный | Формат/описание |
---|---|---|---|
code | int | + | Числовой код ошибки |
message | string | + | Текст ошибки |
Если error.code = 0, то запрос завершился без ошибок.
Структура поля result зависит от вызова. Все вызовы, кроме тестовых, возвращают в данном поле массив. Если в методе возникла обрабатываемая ошибка, массив result будет содержать поле error с текстом ошибки.
Список методом вместе с описанием параметров и структуры ответа приведён далее в документе.
Все закрытые методы требуют авторизации клиента. Авторизация реализована через токен, который представляет из себя составную строку следующего вида:
user_id/user_hash
где user_id — идентификатор пользователя, а user_hash — это авторизационный хэш, который хранится в настройках клиента. Пример токена: '75743/433ca3e5068add011dcbf60dfbca84bb'
Токен должен передаваться в параметре auth, который добавляется к url-запросу (см. пример).
На период тестирования авторизационный токен выдаётся по запросу клиента. В дальнейшем информация о токене будет доступна в ЛК клиента.
<?php
$API_URL = 'http://api.glavdostavka.ru';
$API_KEY = '75743/433ca3e5068add011dcbf60dfbca84bb'; // пример ключа (подставить свой!)
$api_method = '/service/extra/';
$get_params = [
'id' => uniqid(mt_rand(), true),
'auth' => $API_KEY,
];
$post_params = [];
$url = $API_URL.$api_method;
$url.= '?'.http_build_query($get_params);
if (!empty($post_params))
$post_params = http_build_query($post_params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
$response = curl_exec($ch);
if ($response === false)
throw new Exception(sprintf('Api connect error: "%s"', curl_error($ch)), 500);
curl_close($ch);
$response = json_decode($response, true);
var_dump($response);
URL | /service/storehouse/ |
---|---|
HTTP-метод | POST |
Описание | Список складов |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
city_id | int | Фильтрует список, оставляя только склады в указанном городе (по идентификатору) | 20595294 | |
fias_id | string | Фильтрует список, оставляя только склады в указанном городе (по коду ФИАС) | '0c5b2444-70a0-4932-980c-b4dc0d3f02b5' | |
take_in | boolean | Фильтрует список, оставляя только те склады, в которых возможна приёмка груза | true | |
give_out | boolean | Фильтрует список, оставляя только те склады, в которых возможна выдача груза | true |
Чтобы получить склады по конкретному городу, укажите один из параметров — city_id или fias_id. Не передавайте сразу оба параметра.
Ответ
Массив складов, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
storehouse_id | int | + | Идентификатор склада | 21110649 |
title | string | + | Название склада | 'Дмитровка' |
address | string | + | Адрес склада | 'г Москва, Дмитровское шоссе, д 116' |
phone | string | Контактный телефон | '+7(495) 660-20-49' | |
string | Адрес электронной почты | '[email protected]glav-dostavka.ru' | ||
take_in | boolean | + | На складе возможна приёмка груза | true |
give_out | boolean | + | На складе возможна выдача груза | false |
latitude | string | + | Широта | '55.9043420' |
longitude | string | + | Долгота | '37.5455010' |
city_id | int | + | Идентификатор города | 35 |
city_title | string | + | Название города | 'Москва' |
URL | /service/shipping_city/ |
---|---|
HTTP-метод | POST |
Описание | Список складов |
Ответ
Массив городов, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
city_id | int | + | Идентификатор населённого пункта | 43 |
title | string | + | Название населённого пункта во внутреннем формате | 'Екатеринбург г (Свердловская обл)' |
fullname |
string |
+ |
Название населённого пункта в формате DaData |
'Свердловская обл, г Екатеринбург' |
shortname | string | + | Краткое название населённого пункта | 'Екатеринбург' |
kladr_id | int | + | Код КЛАДР (только для городов России). Поле является устаревшим, используйте fias_id. | '6600000100000' |
fias_id | string | + | Код ФИАС (только для городов России) | '2763c110-cb8b-416a-9dac-ad28a55b4402' |
URL | /order/status/ |
---|---|
HTTP-метод | POST |
Описание | Получение информации о накладной по её номеру |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
title | string | + | Номер накладной | 'МСК-СПБ-123456/19' |
Ответ
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
title | string | + | Внутренний номер накладной | 'МСК-СПБ-123456/17' |
report_date | string | + | Дата и время прихода накладной на склад отправления. Формат — YYYY-MM-DD hh:mm:ss | '2017-11-01 12:00:00' |
arrival_plan_date | string | Дата и время планового прихода накладной на склад назначения. Появляется только после приёма накладной на складе отправления. Формат — YYYY-MM-DD hh:mm:ss | '2017-11-15 12:00:00' | |
from_city_id | int | + | Идентификатор города отправления | 35 |
from_city | string | + | Город отправления | 'Москва г' |
from_city_fias | string | ФИАС города отправления (только для городов России) | '0c5b2444-70a0-4932-980c-b4dc0d3f02b5' | |
take_in_storehouse_id | int | Идентификатор склада приёмки | 22842428 | |
to_city_id | int | + | Идентификатор города назначения | 36 |
to_city | string | + | Город назначения | 'Санкт-Петербург г' |
to_city_fias | string | ФИАС города назначения (только для городов России) | 'e0b171b6-bf2e-4d68-ab05-4d42ab2b375a' | |
give_out_storehouse_id | int | Идентификатор склада выдачи | 40 | |
status | string | + | Идентификатор текущего статуса накладной. Расшифровка статуса в методе /order/statuses/ | 'open' |
status_title | srting | + | Текст текущего статуса | 'Заявка оформлена' |
amount | int | + | Количество мест в грузе | 1 |
volume | float | + | Общий объём груза | 2.0 |
weight | float | + | Общий вес груза | 20 |
history | array | + | Массив с историей накладной (см. ниже) |
Поле history
Содержит массив с историей статусов, отсортированный по времени. Структура каждого элемента описана ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
status | string | + | Идентификатор статуса | 'open' |
status_title | string | + | Текст статуса | 'Заявка оформлена' |
date | srting | + | Дата и время перехода накладной в данный статус. Формат — YYYY-MM-DD hh:mm:ss | '2017-11-01 12:00:00' |
URL | /service/extra/ |
---|---|
HTTP-метод | POST |
Описание | Получение списка дополнительных услуг, которые предоставляет компания |
Параметры
-
Ответ
Массив дополнительных услуг, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
service_id | int | + | Идентификатор статуса | 8994057 |
title | string | + | Текст статуса | 'Стреппинг лента' |
parent_services | string[] | Возможные родительские услуги | [ 'pickup', 'delivery' ] |
URL | /service/city/ |
---|---|
HTTP-метод | POST |
Описание | Список населенных пунктов, в которые осуществляется доставка |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
fias_id | string | Фильтрует список, оставляя только город с указанным кодом ФИАС | '0c5b2444-70a0-4932-980c-b4dc0d3f02b5' | |
kladr_id | string | deprecated | Фильтрует список, оставляя только город с указанным кодом КЛАДР. Поле является устаревшим, используйте fias_id. | '7700000000000' |
letter | string | Фильтрует список, оставляя только те города, названия которых начинаются с указанного символа | 'М' |
Ответ
Массив населённых пунктов, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
city_id | int | + | Идентификатор населённого пункта | 20595294 |
title | string | + | Название населённого пункта во внутреннем формате | 'Электросталь г (Московская обл)' |
fullname | string | + | Название населённого пункта в формате DaData | 'Московская обл, г Электросталь' |
fias_id | string | Код ФИАС (только для городов России) | 'e0b171b6-bf2e-4d68-ab05-4d42ab2b375a' | |
kladr_id |
string | deprecated | Код КЛАДР (только для городов России). Поле является устаревшим, используйте fias_id. | '5000002100000' |
URL | /service/shipping_city_from/ |
---|---|
HTTP-метод | POST |
Описание | Список складов |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
to_city_id | int | ID города, в который будет осуществляться перевозка | 49 |
Ответ
Массив городов в которые возможна перевозка, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
city_id | int | + | Идентификатор населённого пункта | 43 |
title | string | + | Название населённого пункта во внутреннем формате | 'Екатеринбург г (Свердловская обл)' |
fullname |
string |
+ |
Название населённого пункта в формате DaData |
'Свердловская обл, г Екатеринбург' |
shortname | string | + | Краткое название населённого пункта | 'Екатеринбург' |
kladr_id | int | + | Код КЛАДР (только для городов России). Поле является устаревшим, используйте fias_id. | '6600000100000' |
fias_id | string | + | Код ФИАС (только для городов России) | '2763c110-cb8b-416a-9dac-ad28a55b4402' |
URL | /service/shipping_city_to/ |
---|---|
HTTP-метод | POST |
Описание | Список складов |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
from_city_id | int | ID города, из которого будет осуществляться перевозка | 49 |
Ответ
Массив городов из которых возможна перевозка, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
city_id | int | + | Идентификатор населённого пункта | 43 |
title | string | + | Название населённого пункта во внутреннем формате | 'Екатеринбург г (Свердловская обл)' |
fullname |
string |
+ |
Название населённого пункта в формате DaData |
'Свердловская обл, г Екатеринбург' |
shortname | string | + | Краткое название населённого пункта | 'Екатеринбург' |
kladr_id | int | + | Код КЛАДР (только для городов России). Поле является устаревшим, используйте fias_id. | '6600000100000' |
fias_id | string | + | Код ФИАС (только для городов России) | '2763c110-cb8b-416a-9dac-ad28a55b4402' |
URL | /order/statuses/ |
---|---|
HTTP-метод | POST |
Описание | Получение списка возможных статусов накладных |
Параметры
-
Ответ
Массив статусов, структура элементов представлена ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
status | string | + | Идентификатор статуса | open |
title | string | + | Текст статуса | Заявка оформлена |
title_short | string | + | Краткий текст статуса | Проект |
URL | /order/arrival/ |
---|---|
HTTP-метод | POST |
Описание | Получение даты прихода груза на склад назначения и минимальной даты доставки по дате сдачи груза на склад отправления |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
from_city_id | int | + | Идентификатор города отправления | 35 |
to_city_id | int | + | Идентификатор города назначения | 149 |
report_date | string | + | Дата и время сдачи груза на склад отправления. Можно выбрать дату не далее 2-х месяцев от текущего дня. Допустимые форматы — YYYY-MM-DD hh:mm;YYYY-MM-DD. | '2018-09-01' |
Ответ
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
arrival_date | string | + | Дата и время планируемого прибытия груза на склад назначения | '2018-09-06 13:00' |
delivery_date | string | + | Минимально возможная дата и время доставки груза | '2018-09-07 09:00' |
URL | /order/{order_id}/ |
---|---|
HTTP-метод | POST |
Описание | Получение данных накладной, которая была оформлена ранее |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
order_id | int | + | Идентификатор накладной. Параметр передаётся через URL запроса. | 123456789 |
Ответ
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
order_id | int | + | Идентификатор накладной | 123456789 |
title | string | + | Внутренний номер накладной | 'МСК-СПБ-123456/17' |
client_order_num | string | Клиентский номер накладной | 'Мск-Спб/123.456' | |
report_date | string | + | Дата и время прихода накладной на склад отправления. Формат — YYYY-MM-DD hh:mm:ss | '2017-11-01 12:00:00' |
arrival_plan_date | string | Дата и время планового прихода накладной на склад назначения. Появляется только после приёма накладной на складе отправления. Формат — YYYY-MM-DD hh:mm:ss | '2017-11-15 12:00:00' | |
from_city_id | int | + | Идентификатор города отправления | 35 |
from_city | string | + | Город отправления | 'Москва г' |
from_city_fias | string | ФИАС города отправления (только для городов России) | '0c5b2444-70a0-4932-980c-b4dc0d3f02b5' | |
take_in_storehouse_id | int | Идентификатор склада приёмки | 22842428 | |
to_city_id | int | + | Идентификатор города назначения | 36 |
to_city | string | + | Город назначения | 'Санкт-Петербург г' |
to_city_fias | string | ФИАС города назначения (только для городов России) | 'e0b171b6-bf2e-4d68-ab05-4d42ab2b375a' | |
give_out_storehouse_id | int | Идентификатор склада выдачи | 40 | |
delivery_driver_name | string | ФИО водителя доставки. Заполняется только при наличии доставки и после назначения рейса доставки для накладной | 'Иванов Дмитрий Степанович' | |
delivery_driver_phone | string | Контактный телефон водителя доставки. Заполняется только при наличии доставки и после назначения рейса доставки для накладной | '+7 900 123-45-67' | |
status | string | + | Идентификатор текущего статуса накладной. Расшифровка статуса в методе /order/statuses/ | 'open' |
status_title | srting | + | Текст текущего статуса | 'Заявка оформлена' |
amount | int | + | Количество мест в грузе | 1 |
volume | float | + | Общий объём груза | 2.0 |
weight | float | + | Общий вес груза | 20 |
cost | float | + | Общая стоимость услуг по накладной | 650 |
services | array | + | Список услуг | |
history | array | + | Массив с историей накладной (см. ниже) | |
documents | array | + | Массив документов по накладной (см. ниже) |
Поле services
Содержит массив со списком услуг
Поле | Тип | Обязательный | Форма/описание | Пример |
---|---|---|---|---|
title | string | + | Название услуги | 'Перевозка' |
cost | float | + | Стоимость услуги | 650 |
is_manual_pricing | boolean | + | Идентификатор ручного расчёта стоимости услуги | true |
Поле history
Содержит массив с историей статусов, отсортированный по времени. Структура каждого элемента описана ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
status | string | + | Идентификатор статуса | 'open' |
status_title | string | + | Текст статуса | 'Заявка оформлена' |
date | srting | + | Дата и время перехода накладной в данный статус. Формат — YYYY-MM-DD hh:mm:ss | '2017-11-01 12:00:00' |
Поле documents
Содержит массив документов по накладной. Структура каждого элемента описана ниже.
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
type | string | + | Тип документа | 'Сопроводительные документы' |
document_id | int | + | Идентификатор документа | 987654321 |
href | srting | + | Ссылка на получение документа | '/order/123456789/document/987654321/' |
URL | /order/filter/ |
---|---|
HTTP-метод | POST |
Описание | Получение списка накладных, соответвующих переданным полям фильтрации |
Параметры
Параметр | Тип | Обязательный | По умолчанию | Формат/описание | Пример |
---|---|---|---|---|---|
status | string|string[] | Статус или список статусов накладных | [ 'open', 'pickup', 'store' ] | ||
from_report_date | string | начало предыдущего месяца | Дата прихода груза на склад (от). Формат — YYYY-MM-DD | '2017-11-01' | |
to_report_date | string | текущая дата | Дата прихода груза на склад (до). Формат — YYYY-MM-DD | '2017-11-10' | |
from_city_id | int | Идентификатор города отправления | 35 | ||
to_city_id | int | Идентификатор города назначения | 36 | ||
title | string | Внутренний номер накладной | 'МСК-СПБ-123456/17' | ||
client_order_num | string | Клиентский номер накладной | 'Мск-Спб/123.456' | ||
client_order_num_part | string | Часть клиентского номера накладной. Например, если клиентский номер накладной имеет вид: '00000016310, 00000016375, 00000016465', то client_order_num_part может быть равно '16465'. | '123.45' |
Ответ
Массив накладных
Структура каждого элемента аналогична структуре ответа /order/{order_id}/.
URL | /order/{order_id}/document/{document_id}/ |
---|---|
HTTP-метод | POST |
Описание | Загрузка документа по накладной |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
order_id | int | + | Идентификатор накладной | 123456789 |
document_id | int | + | Идентификатор документа | 987654321 |
Ответ
Запрошенный документ в формате PDF. Ответ выдаётся с заголовками, соответствующими загрузке файла.
URL | /document/{document_type}/order/{order_id}/ |
---|---|
HTTP-метод | POST |
Описание | Загрузка по типу документа накладной |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
document_type | string | + |
Тип документа. Возможные варианты:
|
'cargo_label' |
order_id | int | + | Идентификатор накладной | 123456789 |
Ответ
Запрошенный документ в формате PDF. Ответ выдаётся с заголовками, соответствующими загрузке файла.
URL | /order/receipt_number/ |
---|---|
HTTP-метод | POST |
Описание | Получение номеров консолидированной экспедиторской расписки по дате забора груза |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
pickup_date | string | + | Дата забора груза. Формат: YYYY-MM-DD | '2020-04-01' |
Ответ
Поле |
Тип |
Обязательный |
Формат/описание |
Пример |
---|---|---|---|---|
receipts | array | + | Массив с данными о номерах консолидированной экспедиторской расписки | |
receipts[][receipt_number] | string | + | Номер консолидированной экспедиторской расписки | МСКМСК12345 2001 |
receipts[][order_ids] | int[] | + | Массив идентификаторов накладных, связанных с номером консолидированной экспедиторской распиской | ["12345678", "87654321", "43218765"] |
URL | /order/receipt/ |
---|---|
HTTP-метод | POST |
Описание | Загрузка консолидированной экспедиторской расписки по её номеру и дате забора груза |
Параметры
Параметр | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
pickup_date | string | + | Дата забора груза. Формат: YYYY-MM-DD | '2020-04-01' |
receipt_number | string | + | Номер консолидированной экспедиторской расписки | МСКМСК12345 2001 |
Ответ
Запрошенный документ в формате PDF. Ответ выдаётся с заголовками, соответствующими загрузке файла.
URL | /order/calc/ |
---|---|
HTTP-метод | POST |
Описание | Просчет накладной |
Параметры
Параметр |
Тип |
Обязательный |
По умолчанию |
Формат/описание |
Пример |
---|---|---|---|---|---|
order_type | enum: '', 'standard', 'courier' | 'standard' |
Тип накладной. Возможные ваиранты:
|
'standard' | |
payer | enum: '', 'from_client', 'to_client' | владелец API-токена | Плательщик по накладной. Можно принудительно задать плательщиком отправителя (значение 'from_client') или получателя (значение 'to_client'). | 'from_client' | |
report_date | string | текущая дата | Дата самоподвоза. Можно выбрать дату не далее 2-х месяцев от текущего дня. | '2017-11-01' | |
aviso_date | string | Дата и время авизации (доставки в сетевой магазин). Допустимые форматы — YYYY-MM-DD hh:mm; YYYY-MM-DD. Важно: если прислана дата без времени, время считается равным 00:00. |
'2017-11-10 10:00' | ||
from_client | string | + | Название клиента отправителя |
'АО "Пластик"' | |
from_city_id | int | + | id города отправления |
35 | |
from_address | string | + | Адрес отправителя | 'г. Москва, Ленинский пр-кт, д. 7' | |
to_client | string | + | Название клиента получателя | 'ООО "Игрушки"' | |
to_city_id | int | + | id города получателя | 36 | |
to_address | string | + | Адрес получателя | 'г. Санкт-Петербург, Адмиралтейский пр-кт, д. 5' | |
pickup_date | string | Дата забора груза. Можно выбрать дату не далее 2-х месяцев от текущего дня. Услуга "Забор" не осуществляется, если не заполнено это поле | '2017-11-01' | ||
pickup_note | string | Комментарий по забору груза | 'Проезд между красных зданий.' | ||
delivery_date | string | Дата доставки груза. Услуга "Доставка" не осуществляется, если не заполнено это поле | '2017-11-10' | ||
delivery_time | string|string[] | Время доставки груза. Работает аналогично полю pickup_time. | '15:00' | ||
delivery_note | string | Комментарий по доставке груза | 'Осторожно - злая собака.' | ||
service | array | Дополнительные услуги по накладной | |||
service[][service_id] | int | + (при наличии доп. услуги) | id дополнительной услуги |
8994057 | |
service[][parent_service] | string | Родительская услуга (только для дополнительных услуг к забору или доставке). Возможные варианты:
|
'pickup' | ||
cargo | array | + | Информация о грузе |
||
cargo[][one_place] | boolean | false | true — параметры одного места |
true | |
cargo[][amount] | int | + | Количество мест | 3 | |
cargo[][weight] | float | + | Вес | 10 | |
cargo[][length] | float | + | Длина | 1.0 | |
cargo[][width] | float | + | Ширина | 0.5 | |
cargo[][height] | float | + | Высота | 0.7 | |
cargo[][hard_pack] | boolean | false | true — необходима жёсткая упаковка |
true | |
cargo[][pallet] | boolean | false | true — необходима упаковка в паллет-борт | false | |
cargo[][code] | string | Код товара (для накладных с типом "Курьерская доставка) | БКФ-2321 | ||
cargo[][title] | string | Наименование товара (для накладных с типом "Курьерская доставка) | Чехол | ||
cargo[][price] | float | Стоимость товара (для накладных с типом "Курьерская доставка) | 400.59 | ||
cargo_max | float[] | + (при наличии забора/доставки) | Габариты максимального места |
||
cargo_max[length] | float | + | Максимальная длина | 1.0 | |
cargo_max[width] | float | + | Максимальная ширина | 0.5 | |
cargo_max[height] | float | + | Максимальная высота | 0.7 | |
cargo_type | string | Характер груза | 'Пластиковые игрушки.' | ||
cargo_pack | string | Описание упаковки груза | '3 картонные коробки.' | ||
delivery_price | float | Стоимость доставки (для накладных с типом "Курьерская доставка) | 100.00 | ||
appraised_value | float | + (при наличии услуги "страхование") | Заявленная стоимость | 300000 | |
return_documents | boolean | false | true — необходима услуга "Возврат документов" | false |
Ответ
Поле |
Тип |
Обязательный |
Формат/описание |
Пример |
---|---|---|---|---|
waybills | array | + | Услуги и доп. услуги по накладной | |
waybills[][service_id] | int | + | ID услуги или доп. услуги | 90 |
waybills[][title] | string | + | Название услуги или доп. услуги | 'Перевозка' |
waybills[][sum_debit] | float | + | Просчитанная сумма по услуге | 1837.50
|
total_sum_debit | float | + | Просчитанная сумма по накладной | 5572.60 |
URL | /order/add/ |
---|---|
HTTP-метод | POST |
Описание | Создание накладной на основе переданных параметров |
Параметры
Параметр | Тип | Обязательный | По умолчанию | Формат/описание | Пример |
---|---|---|---|---|---|
order_type | enum: '', 'standard', 'courier' | 'standard' |
Тип накладной. Возможные ваиранты:
|
'standard' | |
payer | enum: '', 'from_client', 'to_client' | владелец API-токена | Плательщик по накладной. Можно принудительно задать плательщиком отправителя (значение 'from_client') или получателя (значение 'to_client'). | 'from_client' | |
client_order_num | string | Клиентский номер заказа | 'Мск-Спб/123.456' | ||
client_tn | string | Клиентский номер товарной накладной | 'ТН-123' | ||
client_trn | string | Клиентский номер транспортной накладной | 'ТРН-123' | ||
client_ttn | string | Клиентский номер товарно-транспортной накладной | 'ТТН-123' | ||
client_sf | string | Клиентский номер счет-фактуры | 'СФ-123' | ||
report_date | string | текущая дата | Дата самоподвоза | '2017-11-01' | |
aviso_date | string | Дата и время авизации (доставки в сетевой магазин). Допустимые форматы — YYYY-MM-DD hh:mm; YYYY-MM-DD. Важно: если прислана дата без времени, время считается равным 00:00. |
'2017-11-10 10:00' | ||
aviso_all_day | boolean | false | false — авизация к заданному в поле aviso_date времени; true — авизация в течение дня; время из поля aviso_date в таком случае не учитывается. |
false | |
from_client | string | + | Название клиента отправителя |
'АО "Пластик"' | |
from_city_id | int | + | id города отправления |
35 | |
from_name | string | + | Ф.И.О. отправителя |
'Иванов Иван Иванович' | |
from_address | string | + | Адрес отправителя | 'г. Москва, Ленинский пр-кт, д. 7' | |
from_phone | string | + | Телефон отправителя | '+7-900-100-20-30' | |
to_client | string | + | Название клиента получателя | 'ООО "Игрушки"' | |
to_city_id | int | + | id города получателя | 36 | |
to_name | string | + | Ф.И.О. получателя | 'Петров Пётр Петрович' | |
to_address | string | + | Адрес получателя | 'г. Санкт-Петербург, Адмиралтейский пр-кт, д. 5' | |
to_phone | string | + | Телефон получателя | '+7-900-400-50-60' | |
pickup_date | string | Дата забора груза / услуга забора не осуществляется, если не заполнено это поле | '2017-11-01' | ||
pickup_time | string|string[] | Время забора груза. Варианты использования:
|
[ '10:00', '14:00' ] | ||
pickup_note | string | Комментарий по забору груза | 'Проезд между красных зданий.' | ||
delivery_date | string | Дата доставки груза / услуга доставка не осуществляется, если не заполнено это поле | '2017-11-10' | ||
delivery_time | string|string[] | Время доставки груза. Работает аналогично полю pickup_time. | '15:00' | ||
delivery_note | string | Комментарий по доставке груза | 'Осторожно - злая собака.' | ||
service | array | Дополнительные услуги по накладной | |||
service[][service_id] | int | + (при наличии доп. услуги) | id дополнительной услуги |
8994057 | |
take_in_storehouse_id | int | ID склада приёмки (см. /service/storehouse/) | 22842428 | ||
service[][note] | string | Комментарий к услуге | 'Обернуть стреппинг лентой коробки.' | ||
service[][parent_service] | string | Родительская услуга (только для дополнительных услуг к забору или доставке). Возможные варианты:
|
'pickup' | ||
cargo | array | + | Информация о грузе |
||
cargo[][one_place] | boolean | false | true — параметры одного места |
true | |
cargo[][amount] | int | + | Количество мест | 3 | |
cargo[][weight] | float | + | Вес | 10 | |
cargo[][length] | float | + | Длина | 1.0 | |
cargo[][width] | float | + | Ширина | 0.5 | |
cargo[][height] | float | + | Высота | 0.7 | |
cargo[][hard_pack] | boolean | false | true — необходима жёсткая упаковка |
true | |
cargo[][pallet] | boolean | false | true — необходима упаковка в паллет-борт | false | |
cargo[][code] | string | Код товара (для накладных с типом "Курьерская доставка) | БКФ-2321 | ||
cargo[][title] | string | Наименование товара (для накладных с типом "Курьерская доставка) | Чехол | ||
cargo[][price] | float | + (для накладных с типом "Курьерская доставка) | Стоимость товара | 400.59 | |
cargo_max | float[] | + (при наличии забора/доставки) | Габариты максимального места |
||
cargo_max[length] | float | + | Максимальная длина | 1.0 | |
cargo_max[width] | float | + | Максимальная ширина | 0.5 | |
cargo_max[height] | float | + | Максимальная высота | 0.7 | |
cargo_type | string | Характер груза | 'Пластиковые игрушки.' | ||
cargo_pack | string | Описание упаковки груза | '3 картонные коробки.' | ||
delivery_price | float | Стоимость доставки (для накладных с типом "Курьерская доставка) | 100.00 | ||
cargo_opening_allowed | boolean | false | Разрешение на вскрытие получателем перед оплатой (для накладных с типом "Курьерская доставка) | true | |
appraised_value | float | + (при наличии услуги "страхование") | Заявленная стоимость | 300000 | |
return_documents | boolean | false | true — необходима услуга "Возврат документов" | false | |
client_information | string | Служебная информация, добавляется только через API и отображается в экспедиторской расписке. | 'Текстовое описание 200-300 символов' |
Если город отправления(from_city_id) и город назначения(to_city_id) привязаны к одному филиалу и указаны адрес забора (from_address) и адрес доставки (to_address), то будет создана накладная с типом "Доставка грузов по городу и области". Груз поедет одним днём, этот день можно указать в одном из параметров: delivery_date / pickup_date. Примечание: при данных условиях нельзя одновременно указывать разные delivery_date и pickup_date — накладная не будет создана!
Если город отправления (from_city_id) и город назначения (to_city_id) привязаны к одному филиалу, не указан адрес забора (т. е. будет самоподвоз на склад) и указан адрес доставки, будет создана накладная с типом "Доставка сборных грузов" с доставкой и выездами за пределы города без стоимости перевозки.
При добавлении доп. услуги для забора или доставки (например, погрузо-разгрузочных работ) необходимо указывать родительскую услугу в поле parent_service — забор ('pickup') или доставку ('delivery'). Чтобы заказать услугу и для забора, и для доставки, добавьте её дважды с разными parent_service. Пример:
{
...
pickup_date: '2019-02-01',
delivery_date: '2019-02-10',
service: [
{
service_id: 8994057,
note: 'Упаковка стреппинг лентой'
},
{
service_id: 528,
parent_service: 'pickup',
note: 'ПРР для забора груза'
},
{
service_id: 528,
parent_service: 'delivery',
note: 'ПРР для доставки груза'
}
],
...
}
Обратите внимание, что если в накладной нет забора, то и добавить услугу для забора нельзя (вернётся ошибка, накладная не будет создана). Аналогично для доставки.
Ниже приведен код с несколькими примерами накладных.
<?php
$API_URL = 'http://api.glavdostavka.ru';
$API_KEY = '75743/433ca3e5068add011dcbf60dfbca84bb'; // пример ключа (подставить свой!)
$api_method = '/service/extra/';
$get_params = [
'id' => uniqid(mt_rand(), true),
'auth' => $API_KEY,
];
/*
1. Пример с минимальным количеством параметров. Накладная Москва-Петербург без автоэкспедирования.
*/
$post_params = [
'from_client' => 'Имя клиента отправителя',
'to_client' => 'Имя клиента получателя',
'from_city_id' => 35,
'to_city_id' => 36,
'cargo' => [
0 => [
'amount' => 2,
'weight' => 100,
'length' => 2,
'width' => 1,
'height' => 3
]
]
];
/*
2. Пример с автоэкспедированием.
*/
$post_params = [
'from_client' => 'Имя клиента отправителя',
'to_client' => 'Имя клиента получателя',
'from_city_id' => 35,
'to_city_id' => 36,
'cargo' => [
0 => [
'amount' => 2,
'weight' => 100,
'length' => 2,
'width' => 1,
'height' => 3
]
],
'pickup_date' => '2019-01-30',
'delivery_date' => '2019-01-31',
'cargo_max' => [
'length' => 2,
'width' => 1,
'height' => 3
]
];
/*
3. Пример с грузом или несколькими грузами.
Параметр amount в cargo задаёт количество грузов. Если при этом указан флаг one_place = false,
то вне зависимости от количества создастся одно место в накладной, и габариты, указанные в
параметрах cargo, применятся к этому месту. Если же one_place = true, то создастся столько мест,
сколько указано в amount, и каждому месту применятся габариты, указанные в cargo.
*/
$post_params = [
'from_client' => 'Имя клиента отправителя',
'to_client' => 'Имя клиента получателя',
'from_city_id' => 35,
'to_city_id' => 36,
'cargo' => [
0 => [
'amount' => 2,
'weight' => 100,
'length' => 2,
'width' => 1,
'height' => 3,
'one_place' => false // 1 место с габаритами 2,1,3
],
1 => [
'amount' => 2,
'weight' => 100,
'length' => 2,
'width' => 1,
'height' => 3,
'one_place' => true // 2 места с габаритами 2,1,3
]
]
];
/*
4. Также можно задать клиентский номер накладной, для последующего его использования.
*/
$post_params = [
'from_client' => 'Имя клиента отправителя',
'to_client' => 'Имя клиента получателя',
'from_city_id' => 35,
'to_city_id' => 36,
'client_order_num' => 'Мск-Спб/123.456', // Номер накладной согласно базе клиента
'cargo' => [
0 => [
'amount' => 2,
'weight' => 100,
'length' => 2,
'width' => 1,
'height' => 3
]
]
];
$url = $API_URL . $api_method;
$url .= '?' . http_build_query($get_params);
if (!empty($post_params))
$post_params = http_build_query($post_params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
$response = curl_exec($ch);
if ($response === false)
throw new Exception(sprintf('Api connect error: "%s"', curl_error($ch)), 500);
curl_close($ch);
$response = json_decode($response, true);
var_dump($response);
Ответ
Поле | Тип | Обязательный | Формат/описание | Пример |
---|---|---|---|---|
order_id | int|boolean | + | id созданной накладной в системе ГД false — при наличии ошибки при создании накладной |
123456789 |
title | string | + | Внутренний номер накладной | 'МСК-СПБ-123456/17' |
client_order_num | string|null | + | Клиентский номер заказа | 'Мск-Спб/123.456' |
aviso_date | string | Сохранённые дата и время авизации | '2018-09-01 09:00:00' | |
aviso_all_day | boolean | true — задана авизация в течение дня | false | |
delivery_date | string | Сохранённая дата доставки | '2018-09-01' |
<?php
$API_URL = 'http://api.glavdostavka.ru';
$API_KEY = '75743/433ca3e5068add011dcbf60dfbca84bb'; // пример ключа (подставить свой!)
/*
* Метод получения складов
*/
$api_method = '/service/storehouse/';
/*
* Ответ
*/
array (size=3)
'id' => string '17444090375d3aecb715a0a9.05181050' (length=33)
'error' =>
array (size=2)
'code' => int 0
'message' => string '' (length=0)
'result' =>
array (size=139)
0 =>
array (size=11)
'storehouse_id' => int 23446742
'title' => string 'Офис и склад' (length=22)
'address' => string 'г Петропавловск-Камчатский, ул Тундровая 1/2' (length=79)
'phone' => string '+7 (415) 234-32-25' (length=18)
'email' => string '[email protected]' (length=24)
'latitude' => string '53.0437700' (length=10)
'longitude' => string '158.6632930' (length=11)
'city_id' => int 635
'city_title' => string 'Петропавловск-Камчатский' (length=47)
'take_in' => boolean true
'give_out' => boolean true
...
/*
* Метод получения городов перевозок
*/
$api_method = '/service/shipping_city/';
/*
* Ответ
*/
array (size=3)
'id' => string '6447451445d3aed68080d73.29672152' (length=32)
'error' =>
array (size=2)
'code' => int 0
'message' => string '' (length=0)
'result' =>
array (size=1)
'cities' =>
array (size=143)
35 =>
array (size=5)
'city_id' => int 35
'title' => string 'Москва г' (length=15)
'fullname' => string 'г Москва' (length=15)
'kladr_id' => string '7700000000000' (length=13)
'fias_id' => string '0c5b2444-70a0-4932-980c-b4dc0d3f02b5' (length=36)
...
$get_params = [
'id' => uniqid(mt_rand(), true),
'auth' => $API_KEY,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
$response = curl_exec($ch);
if ($response === false)
throw new Exception(sprintf('Api connect error: "%s"', curl_error($ch)), 500);
curl_close($ch);
$response = json_decode($response, true);
var_dump($response);
<?php
$API_URL = 'http://api.glavdostavka.ru';
$API_KEY = '75743/433ca3e5068add011dcbf60dfbca84bb'; // пример ключа (подставить свой!)
$api_method = '/service/calc/';
$get_params = [
'id' => uniqid(mt_rand(), true),
'auth' => $API_KEY,
];
/*
1. Пример параметров просчёта накладной
*/
$post_params = [
'payer' => 'from_client',
'from_client' => 'Тестов Тест 1',
'from_city_id' => 21098012,
'from_name' => 'Тестов Тест',
'from_address' => 'Московская обл, Селятино рп, д. 15',
'to_client' => 'Тестов Тест 2',
'to_city_id' => 36,
'to_name' => 'Тестов Тест',
'to_address' => 'Санкт-Петербург, ул Писарева, д 29А',
'cargo' => [
[
'amount' => 1,
'weight' => 100,
'length' => 1,
'width' => 1,
'height' => 1,
'one_place' => false,
],
],
'cargo_max' => [
'length' => 5,
'width' => 2.5,
'height' => 2.7,
],
'report_date' => '2019-07-10 0:0:0',
'pickup_date' => '2019-08-10',
];
$url = $API_URL . $api_method;
$url .= '?' . http_build_query($get_params);
if (!empty($post_params))
$post_params = http_build_query($post_params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
$response = curl_exec($ch);
if ($response === false)
throw new Exception(sprintf('Api connect error: "%s"', curl_error($ch)), 500);
curl_close($ch);
$response = json_decode($response, true);
var_dump($response);