Общая структура данных доставки
Данные интеграционной доставки доступны для v3, v4, v5 версий API.
В методах /api/v*/orders
и /api/v*/orders/history
за данные по доставке отвечает поле orders[][delivery]
, в остальных методах /api/v*/orders*
- поле order[delivery]
.
Структура сообщения для методов /api/v*/orders/get
, /api/v*/orders
, /api/v*/orders/history
:
"order": {
//...
"delivery": {
"code": "delivery-type-code", // Символьный код типа доставки
"integrationCode": "sdek", // Код интеграционной доставки, связанной с типом доставки
"data": { // Дополнительные данные для интеграционной доставки
// Данные отличаются в зависимости
// от указанной интеграционной доставки
},
"service": { // Служба доставки
"name": "Delivery Service 1",
"code": "delivery-service-1"
},
"cost": 500, // Стоимость доставки
"date": "2014-10-26", // Дата доставки
"address": { // Адрес доставки
// ...
}
}
}
}
Структура сообщений для методов /api/v*/orders/create
, /api/v*/orders/edit
, /api/v*/orders/upload
различается, в зависимости от типа доставки — является она интеграционной или нет. Для интеграционной доставки дополнительно указывается поле data
, в котором содержатся дополнительные данные для интеграционной доставки. Подробнее с описанием этого поля для каждого типа интеграционной доставки вы можете ознакомится в разделе Данные интеграционных доставок.
Пример запроса на создание/редактирование заказа с не интеграционной доставкой:
"order": {
//...
"delivery": {
"code": "delivery-type-code",
"service": {
"name": "Delivery Service 1",
"code": "delivery-service-1"
},
"cost": 500,
"date": "2014-10-26",
"address": {
// ...
}
}
}
}
Пример запроса на создание/редактирование заказа с интеграционной доставкой Почта России
:
"order": {
//...
"delivery": {
"code": "russianpost-delivery",
"data": {
"trackNumber": "EA349651005RU"
},
"cost": 500,
"date": "2014-10-26",
"address": {
// ...
}
}
}
}
Структура данных адреса доставки
Адрес доставки order[delivery][address]
можно указывать либо в строковом виде в поле order[delivery][address][text]
, либо в подробном виде, заполняя все поля кроме order[delivery][address][text]
. Пример запроса с подробным заполнением всех полей адреса доставки:
"order": {
//...
"delivery": {
//...
"address": {
"index":"398916", // Почтовый индекс
"region":"Москва", // Область
"regionId":55, // Идентификатор области в geohelper
"city":"Москва", // Город
"cityId":4995, // Идентификатор города в geohelper
"cityType":"г.", // Тип населенного пункта
"street":"Мытная", // Улица
"streetId":1777167, // Идентификатор улицы в geohelper
"streetType":"ул.", // Тип улицы
"building":"25", // Номер дома
"flat":"13", // Номер квартиры или офиса
"floor":5, // Этаж
"block":3, // Подъезд
"house":"1", // Строение
"housing":"1", // Корпус
"metro":"Шаболовская", // Метро
"notes":"2 ая проходная" // Дополнительные заметки
"deliveryTime":"с 10:00 до 12:00" // Время доставки
}
}
}
}
Пример запроса с передачей адреса доставки в строковом виде:
"order": {
//...
"delivery": {
//...
"address": {
"index":"614030",
"city":"Пермь",
"text":"Янаульская, д. 26, кв. 18"
}
}
}
}
Данные интеграционных доставок
Методы взаимодействия с интеграционными доставками Вы можете увидеть в справочнике методов API. Необходимо найти поле order[delivery][data]
и в селекте выбрать нужную Вам службу доставки.
Ограничения при редактировании заказов с интеграционными доставками
При редактировании через API заказа с '''оформленной''' интеграционной доставкой действуют ограничения. В зависимости от типа доставки нельзя изменять данные в следующих полях:
DPD
order[weight]
order[manager]
order[phone]
order[firstName]
order[lastName]
order[deliveryCost]
order[paymentType]
order[shipmentStore]
order[delivery][address]
Новая Почта
order[weight]
order[customer]
order[phone]
order[deliveryCost]
order[paymentType]
order[shipmentStore]
order[delivery][address]