841
правка
Изменения
API
,→Установка статуса согласования заказа
|[[Файл:prestashop.png|center|x60px]]
|style="text-align: center;"|[https://courierexe.ru/download/api/prestashop.zip Скачать]
|Поддерживает версии 1.5.2.0 и выше. Инструкция в архивеПодробнее см. [[PrestaShop|описание]].
|-
|[[Файл:OpencartOCStore.png|center|x60px]]
|-
|[[Файл:Amocrm.png|center|x44px]]
|style="text-align: center;"|[https://www.amocrm.ru/extensions/courier2008 Установитьmeasoft Описание на сайте amoCRM]|Подробнее см. Подробное описание настроек читайте [[amoCRM|описаниетут]].
|-
|rowspan="2"|[[Файл:MoySclad.jpg|center|x30px]]
|style="height:50px; text-align: center;"|[https://home.courierexe.ru/moysklad/step1 Настроить интеграцию с MeaSoft]
|[[МойСклад|Инструкция]]
|-
|style="text-align: center;"|Читайте описание [[Webhook|на этой странице]]
|Передача информации о статусах и заказах в вашу систему
|-
|[[Файл:Logo_tilda_black.png|center|x100px]]
|style="text-align: center;"|Читайте описание [[Tilda|на этой странице]]
|Работает только на платных тарифах
|-
|}
* при запросе измененных статусов ОБЯЗАТЕЛЬНО нужно подтверждать успешное получение запросом [[#Передача только изменившихся статусов|commitlaststatus]].
* вы должны знать номера заказов, которые вы отправили. Не нужно перебирать номера всех заказов или брутфорсом перебирать все возможные номера.
* нужно проверять с каким ответом возвращаются ваши АПИ-запросы. Если мы отвечаем ошибкой, то даже запрос на создание нового заказа учитывается в количестве запросов.
Мы абсолютно уверены, что данные ограничения на порядки превосходят необходимые объемы предоставления сервиса для решения любых задач. Если у вас возникают проблемы, вы не знаете, как уложиться в эти рамки — спросите у нас, мы обязательно поможем!
</advprice>
</advprices>
<extrafields>
<extrafield>
<name>courier_car</name>
<value>ВАЗ 2106, бежевый</value>
</extrafield>
</extrafields>
<overall_volume>81</overall_volume>
<userid>user123</userid>
* '''order''' — Контейнер для описания одного заказа, обязательный элемент. В одном контейнере '''neworder''' может быть много контейнеров '''order''' для создания нескольких заказов одним запросом.
:* '''''orderno''''' — Номер заказа. Если присваивается клиентом — указывается здесь. Если не присваивается — можно оставить пустым, система сгенерирует свой номер, и вернет его в ответе. Система проверяет '''у клиента''' наличие заказов с указанным номером в '''пределах текущего календарного года''', которые '''не являются недоставленными''', и в случае их существования — заказ создан не будет, а в ответе вернется ошибка 17 «Such number exists». Если не указан штрихкод (поле barcode), и значение поля подходит для использования его в качестве штрихкода, данное значение будет скопировано в поле «Штрихкод». Это накладывает ограничения в частности, на длину указанного поля (25 знаков, чтобы работали стандартные печатные формы).
* '''barcode''' — Штрихкод заказа. Если клиент штрихкодирует свои отправления и штрихкод отличается от номера заказа, в этом поле указывается штрихкод. Если ШК содержит кириллицу или малое количество символов, то формируется ШК в формате EAN13.
:* код ПВЗ в нашей системе
:* код ПВЗ в системе подрядчика
:* наименование ПВЗ в виде строки "ПВЗ " + «Наименование ПВЗ». При указании ПВЗ в поле адреса необходимо проверять значение поля город получателя (он должен соответствовать данным ПВЗ) либо не передавать его вообще.
Для тега города '''town''' можно указать код региона в атрибуте '''''regioncode''''' из [[#Справочник регионов|справочника регионов]]. Поиск будет производиться в указанном регионе.
* '''weight''' — Общий вес заказа в килограммах.
* '''quantity''' — Количество мест.
* '''service''' — Режим доставки (тип услуги) передается код из справочника «[[#Справочник Видов Виды срочности|Виды срочности]]».
* '''type''' — Тип корреспонденции (отправления) передается код из справочника «Типы корреспонденции».
* '''return''' — Признак необходимости возврата. Принимает значения:
:: 2 — ГИИС ДМДК.
:: 3 — Серийный номер.
:* '''''message''''' — Строка сообщения.
:* '''''extraTags''''' — Строка в формате JSON для отправки в ОФД.
"tag1212": "1"
</source>
Для клиентов из '''Узбекистана''' необходимо указывать код ИКПУ и код упаковки в следующем формате:
<source lang="json">
"ikpu":"123123123","packageCode":"123456"
</source>
:* '''''code''''' — код услуги.
:* '''''value''''' — значение услуги. Если тип услуги bool, то в значении передаем true.
* '''extrafields''' — Контейнер для описания расширенных полей. Необязательный элемент. Может содержать несколько элементов extrafield
* '''extrafield''' — Контейнер для описания расширенного поля.
:* '''''name''''' — наименование переменной. Может содержать только латинские буквы, цифры и знак подчеркивания "_", но начинаться может только с буквы. Максимальная длина - 20 символов.
:* '''''value''''' — значение переменной. Максимальная длина - 250 символов.
* '''overall_volume''' — Общий объем, м3. Виртуальное поле. Необязательное. Из этого поля рассчитывается длина/высота/ширина места. Расчет срабатывает только если в каждом месте есть нулевые значения длины или высоты или ширины.
|-
|141||Duplicate additional service in the order.||Дублирование кода дополнительной услуги в заказе
|-
|144||Incorrect extrafields.||Некорректные расширенные поля.
|-
|}
<namestarts/>
</conditions>
<limit>500</limit>
</statusreq>
</source>
:* '''namestarts''' — Поиск по номеру заказа(шифр), который начинается с «orderno».
* '''limit''' — Необязательный параметр. Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После каждой итерации нужно вызывать commitlaststatus с контейнером списка обработанных кодов, [[#Лимитирование запросов|читать подробнее]]
<div style="color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;">
<receipt fdNum="124555" fnSn="9289000100295555" kktNum="0001611984048555" inn="7722756555" fdValue="2899551555" summ="387.5" ofdUrl="gate.ofd.ru">https://ofd.ru/rec/7722756555/0001611984048555/9289000100295555/124555/2899551555</receipt>
<items>
<item code="34533" extcode="abc123" quantity="1" mass="0.2" retprice="37.5" VATrate="0" barcode="2345625213125" article="1" returns="0" origincountry="040" GTD="" excise="0.00" governmentCode="11223311" govType="1" suppcompany="Поставщик" suppINN="1112223334" suppphone="79161234567">Мяч</item> <item code="34456" extcode="abc124" quantity="2" mass="2" retprice="100" VATrate="10" barcode="4645625213138" article="2" returns="0" governmentCode="" govType="1">Обруч</item> <item code="34421" extcode="abc125" quantity="3" mass="0.3" retprice="50" VATrate="18" barcode="2345625213126" itemcode="44123" article="3" returns="0" governmentCode="" govType="1">Погремушка желтая</item>
</items>
<packages>
<package code="33332" strbarcode="ORD0000002" mass="2.5" message="" got="NO"></package>
</packages>
<extrafields>
<extrafield>
<name>courier_car</name>
<value>ВАЗ 2106, бежевый</value>
</extrafield>
</extrafields>
</order>
</statusreq>
# Контейнер '''statushistory''' и '''deliveryprice''' заполняется для тарифов [[Личный кабинет курьерской службы#Функции личного кабинета|Премиум и Максимум]].
# Контейнер '''packages''' не возвращает более 1000 элементов.
# Система никогда не гарантирует последовательность прохождения заказом набора статусов. То есть Вы можете получить статус «COMPLETE», а следующим запросом — «NEW» — такое может произойти, например, если оператор ошибочно отметил заказ выполненным, а затем исправил ошибку.
</div>
<br>
=== Лимитирование запросов ===Дает возможность получить не все измененные заказы, а только какое-то определенное количество. Помогает на случай, если у вас скопилось очень много измененных заказов и нужно их грузить лимитировано. После успешной обработки получнных заказов, '''обязательно''' нужно вызвать commitlaststatus с кодами обработанных заказов. '''Пример запроса:''' Для получения ограниченного числа изменившихся заказов отправьте запрос:
<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?><trackingstatusreq> <auth extra="8" login="login" pass="pass"></auth> <changes>8ONLY_LAST</extrachanges> <ordernolimit>12345</ordernolimit></trackingstatusreq>
</source>
<source lang="xml">
<?xml version="1.0" encoding="UTF-8" ?><commitlaststatus> <auth extra="8" login="login" pass="pass"></auth> <acs> <ac>11111</ac> <ac>22222</ac> <ac>33333</ac> <ac>44444</ac> <ac>55555</ac> </acs></commitlaststatus></source> * '''acs''' — контейнер. Обязательный элемент.* '''ac''' — атрибут''' ordercode''' контейнера '''order''' полученного на этапе запроса '''statusreq'''. Помимо приведенных в примере параметров, вы также можете передавать и остальные, описанные ранее, например '''streamid'''. == Трекинг заказа по номеру ==Запрос трекинга по номеру предназначен для выдачи минимальной обезличенной информации о конкретном заказе не авторизованному пользователю. Наша система имеет для этого интерфейс по адресу «home.courierexe.ru/{код экстра}/tracking». Вы можете либо сделать ссылку на такую страницу на своем сайте, либо разместить ее [[#Размещение страниц на своем сайте (iframe)|iframe’ом]] у себя, либо сделать свою и пользоваться нашим API. Этот интерфейс создан специально для выдачи информации живому пользователю сайта. Для получения статусов заказов в свою информационную систему нужно использовать запрос «statusreq», желательно с параметром changes=ONLY_LAST! '''Пример запроса:'''<source lang="xml"><?xml version="1.0" encoding="UTF-8"?><tracking> <extra>8</extra> <orderno>1234</orderno></tracking></source> '''Пример ответа:'''<source lang="xml"><?xml version="1.0" encoding="UTF-8"?><tracking> <order orderno="111111" ordercode="12345">
<barcode>111111</barcode>
<AWB>111111</AWB>
<item code="34421" extcode="abc125" quantity="3" mass="0.3" retprice="50" VATrate="18" barcode="2345625213126" article="3" returns="0" governmentCode="">Погремушка желтая</item>
</items>
<acquirers>
<acquirer code="2" name="Ibox"/>
<acquirer code="5" name="Payme"/>
<acquirer code="6" name="Click"/>
</acquirers>
</order>
</tracking>
</source>
где,
* '''acquirers''' / '''acquirer''' - эквайринг, доступный для получения ссылки на оплату заказа
** '''acquirers''' / '''acquirer''' / ''code'' - внутренний код эквайринга
** '''acquirers''' / '''acquirer''' / ''name'' - наименование эквайринга
"time":"2016-06-02 17:22:00",
"location":"RU",
"town":"Москва",
"store":"Москва Главный",
"content":"Complete"
},
"time":"2016-06-02 17:22:00",
"location":"RU",
"town":"Москва",
"store":"Москва Главный",
"content":"Courierdelivered"
},
"time":"2016-06-02 09:17:00",
"location":"RU",
"town":"Москва",
"store":"Москва Главный",
"content":"Delivery"
},
"time":"2016-06-02 07:41:00",
"location":"RU",
"town":"Москва",
"store":"Москва Главный",
"content":"Accepted"
},
"time":"2016-06-01 19:53:00",
"location":"RU",
"town":"Горький",
"store":"Горький Автозавод",
"content":"Departure"
},
"time":"2016-06-01 17:38:00",
"location":"RU",
"town":"Горький",
"store":"Горький Автозавод",
"content":"Departuring"
},
"time":"2016-05-30 10:20:00",
"location":"RU",
"town":"Горький",
"store":"Горький Автозавод",
"content":"New"
}
Описание контейнеров ответа аналогично описанию [[API#.D0.97.D0.B0.D0.BF.D1.80.D0.BE.D1.81 .D1.81.D1.82.D0.B0.D1.82.D1.83.D1.81.D0.B0 .D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.BE.D0.B2|Запроса статусов заказов]].
== Изменение = Получение ссылки для оплаты заказа ==Запрос предназначен для изменения заказов. Изменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Чтобы разрешить изменение заказов, в личном кабинете курьерской службы перейдите в '''Настройки''' > '''Заказы''' и в разделе '''Отмена и редактирование''' установите флажок '''Разрешить отмену и изменение заказов'''. Вы также можете пометить в списке '''Статусы для отмены и редактирования заказов''' галками статусы корреспонденции, для которых возможны отмена и изменение заказов. По умолчанию (когда в этом списке ничего не выбрано) редактирование и отмена разрешены для статуса «Новый»=
<div style="color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;">
'''Обратите внимание!'''
</div>
Заказ доступен для оплаты, если:* тип оплаты заказа не наличными, а например картой или по договору, альтернативой может стать установка параметра "Спрашивать тип оплаты" в карточке клиента.* заказ имеет наложенный платеж* не оплачен* активен (не доставлен, не возвращен в т.ч. курьером) '''Пример запроса:'''<source lang="xml"><?xml version="1.0" encoding="UTF-8"?><acqlink> <extra>8</extra> <acq> <code>2</code> </acq> <order> <code>12345</code> </order></acqlink></source> где*'''extra''' - код экстраклиента в системе Measoft.*acq.'''code''' - внутренний код платформы эквайринга в системе Measoft. (известен в МП из [https://wiki.courierexe.ru/index.php/API#.D0.A2.D1.80.D0.B5.D0.BA.D0.B8.D0.BD.D0.B3_.D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.B0_.D0.BF.D0.BE_.D0.BD.D0.BE.D0.BC.D0.B5.D1.80.D1.83 Трекинга]) *order.'''ordercode''' - внутренний код заказа, типа ''int'', уникальный в пределах экстраклиента '''Пример ответа:'''<source lang="xml"><?xml version="1.0" encoding="UTF-8"?><acqlink error="0" amount="2000" extid="161083231">https://qr.nspk.ru/AD10001A7GLVGA9YDO2I0789SIOPV3?type=02&bank=1000011&sum=2000&cur=RUB&crc=7E9C</acqlink></source> где*'''acqlink''' - ссылка на оплату заказа*acqlink.'''amount''' - тип integer сумма платежа в копейках в общем случае, в других случаях в соответствии с типом валюты*acqlink.'''extid''' - идентификатор счета на стороне платежной системы*acqlink.'''error'' - код ошибки, если отличается от 0, означает невозможность получения ссылки на оплату, в этом случае ссылки на оплату не будет и ответ будет выглядеть так:<source lang="xml"><?xml version="1.0" encoding="UTF-8"?><acqlink error="2" message="Ошибка авторизации: Invalid token" amount="2000" extid=""/></source> где*acqlink.'''message''' - текст ошибки возвращаемой эквайрингом Возможные типы ошибок получения ссылки:* '''1''' - не настроен эквайринг, либо не найден заказ* '''2''' - ошибка на стороне эквайринга* '''3''' - запрещающий статус курьера (заказ доставлен, частично доставлен)* '''4''' - оплата заказа не разрешена == Изменение заказа ==Запрос предназначен для изменения заказов. Изменять заказы могут курьерские службы с тарифами «Премиум» и «Максимум». Чтобы разрешить изменение заказов, в личном кабинете курьерской службы перейдите в '''Настройки''' > '''Заказы''' и в разделе '''Отмена и редактирование''' установите флажок '''Разрешить отмену и изменение заказов'''. Вы также можете пометить в списке '''Статусы для отмены и редактирования заказов''' галками статусы корреспонденции, для которых возможны отмена и изменение заказов. По умолчанию (когда в этом списке ничего не выбрано) редактирование и отмена разрешены для статуса «Новый» <div style="color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;">'''Обратите внимание!'''# Данные запроса изменения указываются '''полностью''', как если бы заказ создавался впервые.# При отсутствии вложения в запросе изменения данное вложение '''не удаляется''' из заказа, но его количество становится равным 0.# При одновременном изменении заказа в API и системе курьерской службы приоритет отдается данным системы курьерской службы. То есть изменения в API приняты не будут.</div> При редактировании заказа может быть отменен запланированный курьер. Это зависит от значения переменной '''Справочники''' > '''Переменные''' > '''Корреспонденция''' > '''Автоматически устанавливать заплан. курьера по району''':
* '''Нет''' — при редактировании заказа по АПИ курьер не изменяется;
* '''Район''' — если изменен адрес доставки, курьер сбрасывается;
<?xml version="1.0" encoding="UTF-8"?>
<attachments>
<item name="doc1.docx" timestamp="2025-01-01 12:00:00" size="35654">JVBERi0xLjMNJVBERixLjMN JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSAUwLJdLwIDKxTn+AScMjKqor7Xm3sp1yj1k6BzlPdX2Qsiit6yg3g1fCI4YVAgclUOIY5tDra2LvAcIS U3VidHlwZSAvSW1hZ2UNL1d pZHRoIDE4MDgNL0hlaWdodCA5/+8PsL/sXb0+aoper/9kL/4Ov/YE9QsHwyg7YZTtKICy0YVIYb4Nt7L1tPUMfaX9NpuTsvFCtBAvYG ggNCAwIFINL0JpdHNQZXJDb 21wb25lbnQgMQ0vRGVjb2RlUeJVZoZ2tm6+fZVqAavZpeLizVLtct1a+xvG0+bTSkw3Ac8PhdNfL4smrT2hSgPJLfyaVGyA2ndyW22t ENL0NvbHVtbnMgMTgwOA0sFtTP5knktPNumSZ56QsFRPJkaU8ExDxAcMYMDIoBiIoR4/dDjHMbMW/EW4fiB1pvWmV2ONWIl1Xdub Xg1ob0qWX9W4qagsqzGhjRLsEGeJGVXg9oVC+XkJa9esrhGUmC0tuKEla+AplVO/OtHwXcW0FWui1z7 6KHrtobuWV0xa9sCEiSvb91w3ePHOvfcveo5xt9o4ZevHF7ZOeKxV5qmVx2MI44a1L+Mhk5YuGT12xd Ibsb7r+j9bff/unQlv0al6HBnoD5G89q4+tkjgDtvwwARmqm2aa2Jgvmth8mrXquTNtl2u467vbF/5r vnMt9uesu21Me1bjeNJGlVfAaCtw+/jfenJ/fWjqa7ygExx+P g0vSW1hZ2VNYXNrIHRydWUNLL0BcTGroxrKexQXIQ1ImfEW7ZRJZa+O XhEZWNvZGUNPj4Nc3RyZWFt DQ<ip7xJmmNESMxrgu/item>dquBbGypjJpFDJVRH1rVPR1Ifl4aFS5IEdDWZFSdyBBWKWhVSVu517ZgzOCFAwp wwbFph29g4fTaxnvn/3X78x+Tt56ZNffArgULt+HByvy7+yz6U6XWMawCi3+6gJXN0S+jf4t+HT34wg <item name="photo2.jpg" size="74861">VBERi0xLjMN km7/HDp55YTSWMoCMgZsvZkBrXtIv4WA7xgkT4YpYpxjwLvnsWKkGE+pDbxER0UUWlpVFRY4oilTfM4 JUBQREYwMTIzNDU2Nzg5IDI NMyAwIG9iag08PA0vVHlwZSAMIzgCPgxjOlZ87ceA7ceRJrgpipFGyugPQ4OTI2S8lWJoqTpHJlJbNOeYM7zTcoVxSNyJXiYWSAMklT vWE9iamVjdA0vU3VidHlwZS AvSW1hZ2UNL1dpZHRoIDEzNj q/xd+3fd3/USq2V1rJ7RyBLHsuDSiLwgaOFc5LUCRGI+QWuBAsIwPlZrgRpSMseJyTzD15PKiIRE7bc gNL0hlaWdodCAxMzMzDS9MZ W5ndGggNCAwIFINL0JpdHNQZ Rggk5ijXAPpqISetD4wVm0AD2LHuBZdaxmK3HOKIZoG0QLmiZdVqspXnFIJwVyCKhWiDCI4bzH8Y76w XJDb21wb25lbnQgMQ0vRGVj b2RlUGFybXMgPDwNL0sgLTEN TAnwM67HIqMISOkmJXY8mlYhpiNa7g2oTBkKxo4wgnvETQIUUrlFOn9KdOreDiKQx071rN4N61yRAi1 L0NvbHVtbnMgMTM2OA07EGRhSOgoeLYv+k41+KZ1SVBXAuDjB+xuxnQmm8wJDcP5IRn+Pg0 vSW5penzbR/ivm7qleHK5o790w8ejXchI vOHIPWtWwYhtAO34LdDXqFqWxZEBLNstMCwwITBTWirxk12zuUppp</item>
</attachments>
</source>
<item code="34421" quantity="2" reason="0" />
</items>
<image attachments> <attachment filename="filename1.jpg"> /9j/4AAQSkZJRgA BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09 PT09PT0//wAARCAYACAADAS IA</attachment> <attachment filename="filename2.jpg"> /9j/4AAQSkZJRgA BAQAAAQABAAD/2wBDAA0JCg sKCA0LCgsODg0PEyAVExISEy ccHhcgLikxMC4pLSwzOko+M zZGNywtQFdBRkxOUlNSMj5aY VpQYEpRUk//2wBDAQ4ODhMR EyYVFSZPNS01T09PT09PT09P T09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09 PT09PT0//wAARCAYACAADAS IA</imageattachment> </attachments>
</order>
</setorderinfo>
:* '''''reason''''' — Причина недоставки, выбирается из соответствующего списка статусов.
:* '''''governmentCode''''' — Указание кода ТН для вложения при необходимости.
* '''imageattachments''' — Контейнер прикрепляемого изображенияприкрепляемых изображений. Содержит текст файла изображения, закодированный по стандарту Может содержать несколько контейнеров ''base64'attachment'. Контейнер '':* 'order''attachment' может содержать более одного контейнера '' — Контейнер изображения. Содержит текст файла изображения, закодированный по стандарту 'image'base64''. Атрибут:::* '''''filename''''' — Имя файла.
<waybill>
<auth extra="8" login="login" pass="pass" />
<client>CLIENT</client>
<orders>
<order orderno="1234567" ordercode="33331" />
<form>1</form>
<start>5</start>
<integration>21</integration>
</waybill>
</source>
'''waybill''' — Корневой контейнер. Обязательный элемент
* '''auth''' — Авторизация. Обязательный элемент
* '''client''' — Признак клиента или агента. Необязательный элемент.
:* CLIENT — Признак клиента, значение по умолчанию
:* AGENT — Признак агента. В ответ отдается информация по заказам, переданным агенту на доставку
* '''orders''' — Список заказов для получения печатных форм. Содержит тэги '''order''' с атрибутами:
:* '''''orderno''''' — шифр заказа
:* 4 — Акты приема-передачи
* '''start''' — Имеет смысл только для form = 3. Начальная позиция первой наклейки. Используется для пропуска наклеек на листе для их экономии.
* '''integration''' - Получение наклеек от подрядчика. Не обязательный элемент, имеет смысл при наличии кода подрядчика в карточке заказа. Принимает значение:
:* 21 - подрядчик GTD
<?xml version="1.0" encoding="UTF-8"?>
<waybill>
<integration code="21">
<order code="33331">
<content>JVBERi0xLjYNJeLjz9MNC...</content>
</order>
<order code="33332">
<content>JVBERi0xLjYNJeLjz9MNC...</content>
</order>
</integration>
<content>EODIcaI8KSBlwQ 4MnEOR7Px8U8EBAyGICBnwpw
IZhQgz0ZxuPs8EBM/GcbjzB AwhBl8hwQYIO00GmEwg1CeEG
В тэге content возвращаются бинарные данные (файл pdf), закодированные в base64.
При записи в файл необходимо использовать двоичный формат записи!
Блок integration содержит отдельные наклейки для заказов, предоставленные подрядчиком, так же закодированные в base64.
<message></message>
</document>
</itemmovementsserialmovement></itemlistserialmovements></source> ''' Описание полей ответа ''' Описание аналогично описанию полей [[#Движение номенклатуры|движения номенклатуры]] == Серийные номера по заказу =='''Пример запроса движения серийных номеров заказа:'''<source lang="xml"><?xml version="1.0" encoding="UTF-8" ?><orderserials> <auth extra="8" login="login" pass="pass"></auth> <ordercode>123456789</ordercode> <orderno>123456789</orderno> <barcode>123456789</barcode></orderserials></source> * '''ordercode''' — внутренний код заказа.* '''orderno''' — шифр заказа.* '''barcode''' — штрих-код заказа.Указывать необходимо один из идентификаторов заказа. '''Пример ответа движения серийных номеров заказа:'''<source lang="xml"><?xml version="1.0" encoding="UTF-8" ?><orderserials> <order> <code>3374830</code> <orderno>14123</orderno> <barcode>0000000670</barcode> <delivereddate>2024-07-20</delivereddate> <deliveredtime>10:04:00</deliveredtime> <assemblydate>2024-07-19 07:05:34</assemblydate> </order> <items> <item> <code>4259</code> <name>Настольная игра Дженга</name> <article>123000</article> <state>Delivered</state> <serials> <serial>123456789</serial> </serials> </item> </items></orderserials>
</source>
''' Описание полей ответа '''
== Получение справочника тарифов по городам ==
* '''service''' — режим доставки. Обязательный элемент.
* '''mainonly''' — необязательный элемент. Если передан, то в ответе будут данные только по городам из справочника '''Межгород''' > '''Зоны'''.
Важно понимать, что в ответе отдаются только тарифы, указанные в разделе "Тарифы по зонам" раздела "Межгород" в офисной системе курьерской службы, т.е. считающихся междугородними.
Доставка до городов, рассчитываемая по внутригородским тарифам, в ответе НЕ ОТДАЕТСЯ!
<maxweight>30</maxweight>
<acceptindividuals>YES</acceptindividuals>
<respstores>YES</respstores>
<lt>57.924737</lt>
<lg>59.940019</lg>
* '''maxweight''' — Фильтр по максимальному весу, с которым работает ПВЗ
* '''acceptindividuals''' — Фильтр по доступности физическим лицам YES/NO
* '''respstores''' - Признак вывода ответственных филиалов при значении YES
* '''lt''' — Широта левого верхнего угла
* '''lg''' — Долгота левого верхнего угла
* '''latitude''' — Широта
* '''longitude''' — Долгота
* '''uid''' — Уникальный идентификатор ПВЗ в системе Measoft. Создается автоматически при получении данных о ПВЗ от агентов.
* '''count''' — Количество записей в ответе
* '''totalcount''' — Общее количество записей, отвечающее параметрам запроса
'''''Обратите внимание:''''' В реальном ответе сервера в теге calc присутствует атрибут «price». Он оставлен для обратной совместимости, не используйте его. Пользуйтесь вложенным тегом price.
=== Коды и описание ошибок ===
{|class=wikitable
!Код ошибки
!Английское описание
!Русское описание
!Примечание
|-
|15||tarif not found||Тариф не найден||Ошибка получения тарифов: для клиента не указан тариф
|-
|19||field [town to] cannot be empty||Поле [город получателя] не может быть пустым||Необходимо указать город получателя или ПВЗ
|-
|20||field [weight] is incorrect||Некорректное значение [масса]||Значение массы некорректное, например, не является числом. Его необходимо исправить
|-
|21||town from not found||Город отправителя не найден||Системе не удалось найти указанный населенный пункт отправителя
|-
|22||town to not found||Город получателя не найден||Системе не удалось найти указанный населенный пункт отправителя
|-
|23||field [weight] cannot be empty||Поле [масса] не может быть пустым||Необходимо указать значение массы отправления, поле [weight]
|-
|36||subtown not found||Город в регионе не найден||Не настроено направление доставки до города в регионе: не добавлен регион или указанный город отсутствует в списке региона
|-
|37||zoneprice not found||Тариф зоны не найден||Отсутствуют зоны тарификации или для них не указаны стоимости
|-
|38||tarif not found - 1||Тариф не найден 1||Результаты расчета отсутствуют: общая ошибка в случае, если других ошибок нет, но результат пустой
|-
|39||tarif not found - 2||Тариф не найден 2||Ошибка получения тарифов: для клиента не настроен тариф или тарификация от количества заказов
|-
|82||field [weight] exceeded limit PVZ||Значение [weight] превышает ограничение ПВЗ||Указанное значение массы больше, чем максимально допустимое для указанного ПВЗ
|-
|83||attribute [paytype] not allowed PVZ||Значение [paytype] не допустимо для ПВЗ||В ПВЗ не допустим указанный тип оплаты
|-
|}
== Получение информации о клиенте ==
* '''distance''' — Дистанция по заказу
* '''status''' — Статус заказа.
== Установка статуса согласования заказа ==
Для возможности клиентом установки статуса согласования заказа необходимо включить переменную [[Личный кабинет курьерской службы#Заказы|Разрешить менять статус согласования]]
'''Пример запроса установки статуса согласования заказа'''
<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<setapprovalstatus>
<auth extra="8" login="login" pass="pass" />
<order ordercode="1234561">
<confirmstate>1</confirmstate>
<message>Сообщение статуса</message>
</order>
<order ordercode="1234562">
<confirmstate>2</confirmstate>
<message>Согласовано</message>
</order>
<order ordercode="1234563">
<confirmstate>3</confirmstate>
<message>Не согласовано</message>
</order>
</setapprovalstatus>
</source>
* '''order''' — Контейнер заказа. Обязателен как минимум один элемент.
:* '''ordercode''' — Внутренний код заказа.
* '''confirmstate''' — Код статуса заказа. Все статусы с кодами можно получить запросом [[#Получение списка статусов согласования заказа|Получение списка статусов согласования заказа]]
* '''message''' — Дополнительный комментарий, который отобразится в поле ''Инфо о доставке''.
== Получение списка статусов согласования заказа ==
'''Пример запроса списка статусов согласования заказа'''
<source lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<approvalstatuses>
<auth extra="8" login="login" pass="pass" />
</approvalstatuses>
</source>
'''Пример ответа списка статусов согласования заказа'''
<source lang="xml">
<?xml version="1.0" encoding="UTF-8" ?>
<approvalstatuses count="6">
<status>
<code>1</code>
<name>Неизвестно</name>
</status>
<status>
<code>2</code>
<name>Согласование запрошено</name>
</status>
<status>
<code>3</code>
<name>Доставка полностью согласована</name>
</status>
<status>
<code>4</code>
<name>Согласовано с изменением времени</name>
</status>
<status>
<code>5</code>
<name>Перенос на другую дату</name>
</status>
<status>
<code>6</code>
<name>Отказ</name>
</status>
</approvalstatuses>
</source>
== Генерация коротких ссылок ==
</source>
<div style="color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; padding: 3px 10px 10px;">'''Обратите внимание! '''# При использовании iFrame могут не работать некоторые функции, например, подписка на push-уведомления на странице трекинга или отслеживания.# Если язык не указать, то на страницах калькулятора и трекинга отображается свой переключатель языка. Если язык указан, то переключатель не отоборажаетсяотображается.
Поддерживаемые языки и их коды:
:'''2''' — английский
:'''4''' — узбекский
</div>
== Оформление манифеста ==
<store_to>2</store_to>
<trn_code>3</trn_code>
<sentdate>2024-11-07</sentdate>
<places>
<place>
<number>1</number>
<seal>7890AABBB</seal>
</place>
<place>
<number>2</number>
<seal>123456ABC</seal>
</place>
</places>
<addresses>
<address>
<code>45612345</code> <place>1</place> </address> <address> <code>67890</code> <place>2</place>
</address>
</addresses>
*'''store_to''' - код филиала получателя. Обязательный элемент.
*'''trn_code''' - код перевозчика. Обязательный элемент.
*'''sentdate''' - дата отправки манифеста. Не обязательный элемент.
*'''addresses''' - корневой элемент для списка заказов.
*:'''address''' - корневой элемент для заказа.
*::'''code''' - наш внутренний номер заказа. Обязательный элемент.
*::'''place''' - номер места заказа. Обязательный элемент, если переданы места.
*'''places''' - корневой элемент для списка мест.
*::'''place''' - корневой элемент для места.
*::'''number''' - номер места. Обязательный элемент.
*::'''seal''' - номер пломбы. Необязательный элемент.