Протокол API
ВНИМАНИЕ: Схема бизнес процесса по
отправке заказов через PickPoint:
Ниже описаны основные необходимые команды для
осуществления отправок через PickPoint:
Структура
API
реализована по архитектуре REST. Коммуникация осуществляется посредством
сообщений JSON,
сервис доступен по адресам:
Для доступа к тестовой среде, вам необходимо
обратиться на support@pickpoint.ru, с
указанием вашего ИКН.
Для корректной
работы необходимо:
ОглавлениеСКАЧАТЬ
Формирование этикеток pdf для
принтера Zebra..
Формирование реестра (по списку
отправлений)
Удаление
отправления из реестра
Получение номера реестра по
номеру отправления
Обновление полей созданного
отправления
Получение справочника статусов
отправления
Получение списка вложимых
отправлений за заданный период со всеми прошедшими статусами
Получение списка отправлений с
проблематиками и их актуальностью
Получение акта возврата товара
Список точек выдачи в сети
Pickpoint
Список точек возврата в сети
Pickpoint
Метод получения информации о
чеке
Версия |
Дата |
Изменения |
1.8.0.0 |
19.02.2019 |
·
В метод UpdateInvoice добавлена возможность
обновлять товарную часть ·
Добавлен метод Enclosedelete |
1.8.7.0 |
23/05/2019 |
·
Добавлен метод «Отмена заказа» |
1.8.12.0 |
24/07/2019 |
·
В метод "CreateShipment" на уровне SubEncloses
добавить новое поле "upi" - код
маркировки ·
В метод UpdateInvoice
добавить новые параметры: operator_id и operator_ownerid |
1.8.13.0 |
05/08/2019 |
·
В метод "CreateShipment" добавлены новые параметры: "ClientName", "TitleRus", "TitleEng" |
1.8.14.2 |
03/09/2019 |
·
Добавлен метод получения списка
точек по ИКН с опцией "Возврат разрешен" |
1.8.14.3 |
02/07/2020 |
·
Метод CreateShipment: o
добавлено новое поле Номер ПТ клиента,
необязательное поле. o
в блок SubEncloses, добавлены новые поля для передачи: § ИНН
принципала § Наименование
юр.лица принципала § Номера
телефона принципала |
1.8.14.4 |
15/07/2020 |
·
Метод getInvoicesChangeState,
в структуру ответа добавлен новый параметр «VisualState», в котором будет передаваться текстовый
визуальный статус по вложимому. |
1.8.14.5 |
06/10/2020 |
·
В структуру ответа метода /getinvoiceschangestate добавлен вывод кода внешнего
статуса вложимого VisualStateCode. ·
В структуру ответа метода /getstates добавлен блок VisualState
с выводом кода и текста внешнего статуса вложимого ID / Text.
|
1.13.20358.2 |
23/12/2020 |
·
Метод GetInvoicesChangeState: o
В структуру ответа добавлен новый параметр "GCBarCode" в который передаем номер присвой
вложимого |
1.16.21.056 |
25/02/2021 |
·
Метод CreateShipment:
в структуру ответа добавлена передача параметра “GCBarCode” (в блоке) ExtendedData ·
В метод Chequeinfo добавлена передача параметра типа чека –
фискальный или авансовый |
1.16.22081.1 |
22/03/2022 |
метод CreateShipment, в атрибутах: ·
“Invoice” > "DeliveryVat" "SubEncloses"
> "Vat" Если клиент передал в атрибуте значение: 20 - устанавливается значение "20" 10 - устанавливается значение "10" 0 - устанавливается значение "0" null - устанавливается значение "20" Если клиент не передал атрибут -
устанавливается значение "20" ·
“Invoice” > "DeliveryFee“ Если клиент передал отрицательное значение (со
знаком минус), то устанавливается значение "0" метод UpdateInvoice, в атрибутах: ·
"SubEncloses"
> "Vat". Если клиент передал в атрибуте значение: 20 - устанавливается значение "20" 10 - устанавливается значение "10" 0 - устанавливается значение "0" null - устанавливается значение "20" Если клиент не передал атрибут - устанавливается значение "20" ·
"SubEncloses"
> "Price". “Sum” Если клиент
передал отрицательное значение (со знаком минус), то устанавливается значение
"0" |
|
05/04/2022 |
"MaxDeliveryCount":
“<Для АПТ - общее кол-во ячеек. Для ПВЗ – макс. возможное кол-во
отправлений для хранения>”, |
|
13/04/2022 |
Обновлен ответ на метод /updateinvoice |
|
16/05/2022 |
·
Метод clientpostamatlist
и clientpostamatreturnlist: В структуру
запроса и ответа добавлены два новых параметра: "WorkDateException":
“<исключение в графике работы точки>” "ServiceDateException": “<исключение в графике
обслуживания точки точки>”. Выводятся списком нерабочие дни точки в
интервале + 14 дней от текущей даты. |
|
03/06/2022 |
·
Изменена url ссылка для метода CreateShipment |
|
06/06/2022 |
·
Разрешено удаление в статусе 100 (Принят по
реестру) в методе cancelinvoice |
|
26/07/2022 |
·
Создан новый метод клиентского
API по передаче проблематики по КО, которые попали в ячейку «Проблемная». |
|
09/08/2022 |
·
Обновлено описание поля UPI (код
маркировки товара) |
|
22/11/2022 |
·
Обновлен ответ на метод / chequeInfo |
|
05/12/2022 |
·
Обновлен ответ на метод / chequeInfo: 1.
Добавлен атрибут «тип оплаты»
(*по первому платежу). Возможные значения: - cash 2.
Добавлен признак - оплата через СБП. Возможные значения: - true |
|
19/12/2022 |
·
Обновлен ответ на метод / chequeInfo: Изменены возможные значения по оплате
через СБП. Возможные значения: - true - false ·
Доработан метод /getmoneyreturnorder Добавлен признак -
оплата через СБП. Возможные значения: - true |
URL:
/login
Метод: POST
Описание
Команда предназначена для начала сеанса работы. В
запросе отправляется логин и пароль, в случае правильности, возвращается
уникальный номер сессии, который действителен 24 часа, если по ней небыло Logout. Вся дальнейшая
работа ведется на основании номера сессии (одну сессию можно использовать для
любого запроса, пока она валидна).
Структура запроса
{
“Login”:”<логин (50 символов)>”,>”,
“Password”:”<пароль (20 символов)>”
}
Структура
ответа
{
“SessionId”:”<уникальный идентификатор сессии
(GUID 16 байт)>”,
"ErrorCode":
<Код ошибки>,
“ErrorMessage”:”<текстовое сообщение об ошибке (200 символов)>”,
"ExpiresIn":
<Дата и время истечении сессии>
}
URL:
/v2/CreateShipment
Метод:
POST
Описание
Команда
предназначена для регистрации отправлений. На вход принимается структура,
содержащая номер сессии и список описаний отправлений, которые требуется
зарегистрировать.
Структура
запроса
{
“SessionId”:”<уникальный идентификатор сессии (GUID 16 байт)>”,
“Sendings”:
[
{
“EDTN“: “<Идентификатор запроса, используемый
для ответа. Указывайте уникальное число (50 символов)>”,
“IKN“:
“<ИКН – номер
договора (10 символов)>”,
“ClientNumber“: “<Номер клиента в системе агрегатора (отражается в возвратных накладных от
PickPoint), обязательное поле, если у ИКН проставлен флаг в CRM "Является агрегатором">”,
“ClientName”:
”<Наименование клиента в системе агрегатора,
необязательное поле. Следует заполнять только при регистрации КО переданный в
запросе ИКН принадлежит клиенту-агрегатору>”,
“TittleRus”: ”<Наименование
на русском для отображения на сайте в мониторинге PickPoint, необязательное
поле>”,
“TittleEng”: ”<Наименование
на английском для отображения на сайте в мониторинге PickPoint, необязательное
поле>”,
“Invoice”:
{
“SenderCode“: “<Номер заказа магазина
(50 символов)>”,
‘Description“: “<Описание
отправления, обязательное поле (200
символов)>”,
“RecipientName“: “<Имя
получателя (150 символов)>”,
“PostamatNumber“: “<Номер постамата, обязательное
поле (8 символов)>”,
"ClientPostamatNumber": "<Номер
ПТ клиента>",
“MobilePhone“: “<один номер телефона
получателя, обязательное поле(100
символов)>”,
“Email“: “<Адрес
электронной почты получателя (256 символов)>”,
“ConsultantNumber” “<Номер консультанта>”,
“PostageType“: <Тип
услуги, (см. таблицу ниже) обязательное
поле >,
“GettingType“: <Тип сдачи отправления,
(см. таблицу ниже) обязательное поле
>,
“Sum“: <Сумма, обязательное поле (число, два знака
после запятой)>,
"PrepaymentSum": < Сумма предоплаты >,
"DeliveryVat": <
Ставка НДС по сервисному сбору >,
"DeliveryFee": <
Сумма сервисного сбора с НДС >,
“InsuareValue“: <Страховка (число, два
знака после запятой)>,
"DeliveryMode": "<Режим
доставки (значения : 1, если Standard и 2, если Priority)>
",
"ClientDeliveryPeriod": <Клиентский
срок доставки>
{
"From": "Дата С",
"To": "Дата ПО"
},
"ClientDeliveryDate":"Клиентская дата доставки ",
"SenderCity": ”<Город сдачи>”
{
“CityName”: ”<Название города
сдачи отправления>”,
“RegionName”: ”<Название региона сдачи
отправления>”
},
“ClientReturnAddress”: ”<Адрес клиентского
возврата>” Данный блок можно не передавать. Если передаете, то необходимо
заполнение всех полей блока.
{
“CityName”: ”<Название города (50
символов)>”,
“RegionName”: ”<Название региона (50
символов)>”,
“Address”: ”<Текстовое
описание адреса (150 символов)>”,
“FIO”: ”<ФИО
контактного лица (150 символов)>”,
“PostCode”: ”<Почтовый индекс (20
символов)>”,
“Organisation”: ”<Наименование организации
(100 символов)>”,
“PhoneNumber”: ”<Контактный телефон, обязательное поле (допускаются круглые
скобки и тире)>”,
“Comment”: ”<Комментарий (255
символов)>”
},
“UnclaimedReturnAddress”: ”<Адрес возврата
невостребованного >” Данный блок можно не передавать. Если передаете, то
необходимо заполнение всех полей блока.
{
“CityName”: ”<Название города (50
символов)>”,
“RegionName”: ”<Название региона (50
символов)>”,
“Address”: ”<Текстовое
описание адреса (150 символов)>”,
“FIO”: ”<ФИО
контактного лица (150 символов)>”,
“PostCode”: ”<Почтовый индекс (20
символов)>”,
“Organisation”: ”<Наименование организации
(100 символов)>”,
“PhoneNumber”: ”<Контактный телефон, обязательное поле (допускаются круглые
скобки и тире)>”,
“Comment”: ”<Комментарий (255 символов)>”
},
“Places”:
[
{
“BarCode“: “<Штрих
код от PickPoint. Отправляйте поле пустым, в ответ будет ШК (50 символов)>”,
“GCBarCode”: “<Клиентский
штрих-код. Поле не обязательное. Можно не отправлять (255 символов)>”,
“Width“: <Ширина (число,
два знака после запятой)>,
“Height“: <Высота
(число, два знака после запятой)>,
“Depth“: <Глубина(число,
два знака после запятой)>>,
“Weight“
<Вес (число, два знака после запятой)>,
"SubEncloses": <Субвложимые>
[
{
"ProductCode": "<Артикул
товара(50 символов)>"1,
"GoodsCode": "<ШК
товара(50 символов)>"1,
"Name": "<Наименование
товара(200 символов)>"1,
"Price": <Стоимость ед. товара с НДС>1
"Quantity": < Кол-во ед. товара одного арт.>,
"Vat": < Ставка НДС по товару >,
"Description": <" Описание товара ">,
"Upi": <код
товара, см. описание в таблице ниже> "PrincipalINN":
<ИНН принципала>,
"PrincipalName": <Наименование
юр.лица принципала>,
"PrincipalPhoneNumber": <Номер
телефона принципала>
}
]
}
]
}
}
]
}
(1) – Длина полей: (len(Line) + len(ProductCode) + len(GoodsCode) + len(Name) + 3) <= 255
Внимание! В случае если вид отправления (наложенное, с PostageType 10003/предоплаченное, с PostageType 10001) не соответствует значению в поле Sum, приоритет отдается значению в Sum. То есть, если указана не нулевая положительная сумма, отправление будет зарегистрировано как наложенный платеж и наоборот.
Описание полей:
SenderCode |
Номер
заказа магазина. строка 50 символов |
|
BarCode |
Значение
Штрих Кода. Если вам не выделили диапазон ШК, отправляйте поле пустым |
|
Description |
Описание
типа вложимого, Пример: «Одежда и Обувь». строка 200 символов, обязательное поле |
|
RecipientName |
Имя
получателя, строка 150 символов, обязательное
поле |
|
PostamatNumber |
Номер
постамата, вида XXXX-XXX, обязательное поле |
|
ClientPostamatNumber |
Номер
ПТ клиента, необязательное поле |
|
MobilePhone |
Один номер Мобильного телефона получателя для SMS
|
|
Email |
Email, строка 256 символов |
|
ConsultantNumber |
Номер
консультанта, строка 50 символов |
|
PostageType |
Вид
отправления, обязательное поле |
|
10001 |
Стандарт.
Оплаченный заказ. При этом нужно передавать поле «Sum=0» |
|
10003 |
Стандарт
НП Отправление с наложенным платежом. При этом нужно передавать поле «Sum>0» |
|
GettingType |
Тип
сдачи отправления, обязательное поле |
|
101 |
«вызов
курьера» -Наш курьер приедет к вам за отправлениями. |
|
102 |
«в
окне приема СЦ» - Вы привезете отправления в филиал PickPoint |
|
103 |
«в
окне приема ПТ валом» |
|
104 |
«в
окне приема ПТ» (самостоятельный развоз в нужный ПТ + при создании
отправления у ПТ - С2С) |
|
Sum |
Сумма
к оплате. обязательное поле См.п. «PostageType» |
|
InsuareValue |
Сумма
страховки |
|
PrepaymentSum |
Сумма
предоплаты, если платеж уже был внесен частично |
|
DeliveryFee |
Сумма
сервисного сбора с НДС, если берется с физ. Лица Если
передаете отрицательное значение (со знаком минус), то устанавливается
значение "0" |
|
DeliveryVat |
Ставка НДС по сервисному сбору, возможные значения: "DeliveryVat": 10 (НДС 10%) "DeliveryVat": 0 (Без НДС) "DeliveryVat": null (Если не передавать атрибут "Vat" - НДС 20%) |
|
DeliveryMode* |
Режим
доставки- допустимые значения : 1, если Standard и
2, если Priority |
|
SenderCity* |
Город
сдачи отправлений в PickPoint |
|
Width |
Ширина,
в см. Если не знаете точных габаритов, данное поле можно не передавать |
|
Height |
Высота,
в см. Если не знаете точных габаритов, данное поле можно не передавать |
|
Depth |
Глубина
в см. Если не знаете точных габаритов, данное поле можно не передавать |
|
Weight |
Вес
в кг. Если не знаете точных габаритов, данное поле можно не передавать |
|
Vat |
Ставка НДС по товару: "Vat": 10 (НДС 10%) "Vat": 0 (Без НДС) "Vat": null (Если не передавать атрибут "Vat"
- НДС 20%) |
|
UPI |
Код
маркировки единицы товара в системе «Честный
ЗНАК». Это
цифровой двумерный штрихкод в формате DataMatrix. Для
корректного отображения маркировки товара в чеке требуется передавать НЕ
РАЗОБРАННЫЙ тип маркировки без символа <FNC1>
с разделителями<GS> ВНИМАНИЕ!
Если код маркировки не пройдет валидацию на нашей
стороне, то в нашей системе он будет сохранен как НЕ валидный и его списание
в системе «Честный знак» НЕ произойдет. Пример: Код
маркировки полученный в «Честный знак» <FNC1>010460780959133121e/Fw:xeo47NK2<GS>91F010<GS>92Afwuf6d3c9oszbRy/Vb+hRUl1wokz/8UOthdpBYw9A0= Передвать код маркировки без <FNC1> 010460780959133121e/Fw:xeo47NK2<GS>91F010<GS>92Afwuf6d3c9oszbRy/Vb+hRUl1wokz/8UOthdpBYw9A0= Структура
кода маркировки: 1)
Первая группа данных – глобальный
идентификационный номер торговой единицы, состоящий из 14 цифровых символов,
которому предшествует идентификатор применения (01); 2)
Вторая группа данных –
индивидуальный серийный номер торговой единицы, состоящий из символов
цифровой или буквенно-цифровой последовательности (латинского алфавита),
которому предшествует идентификатор применения (21). Кол-во символов разное в
зависимости от товарной группы. 3)
Завершающим символом для этой группы
данных является специальный символ-разделитель , имеющий код «29» в таблице
символов ASCII (<GS>). При передаче в коде
разделителя <GS> заменить на \u001D Далее,
третья и четвертые группы зависят от товарной группы: 4)
Третья группа данных – идентификатор
(индивидуальный порядковый номер) ключа проверки, предоставляемый эмитентам
средств идентификации оператором системы мониторинга в составе кода проверки,
состоящий из символов (цифр, строчных и прописных букв латинского алфавита),
которому предшествует идентификатор применения (91, 93, 10, 8005).
Завершающим символом для этой группы данных в некоторых товарных группах
является специальный символ-разделитель, имеющий код «29» в таблице символов
ASCII (<GS>). Символ-разделитель 7 «GS» является «невидимым» символом.
Отображение при сканировании 2D сканером зависит от настроек сканера и
средства просмотра информации; 5)
Четвертая группа данных – значение
кода проверки (криптохвост), предоставляемое
эмитентам средств идентификации оператором системы мониторинга в составе кода
проверки, которому предшествует идентификатор применения (92), и состоящее из
символов (цифр, строчных и прописных букв латинского алфавита, а также
специальных символов). Группы
данных должны располагаться последовательно – от первой к четвертой. В
конечном итоге мы ожидаем получить код маркировки с указанными в примере выше
в виде: 010460780959133121e/Fw:xeo47NK2\u001D91F010\u001D92Afwuf6d3c9oszbRy/Vb+hRUl1wokz/8UOthdpBYw9A0= Исключение: Меховые
изделия/шубы - имеют собственный формат: Пример:
RU-430301-AAA0020659 |
|
PrincipalINN |
ИНН
принципала – необязательное поле. Допустимые
символы - цифры, максимальная длина поля - 12 символов. |
|
PrincipalName |
Наименование
юр.лица принципала - необязательное поле |
|
PrincipalPhoneNumber |
Номер
телефона принципала - необязательное поле. Допускаются
круглые скобки и тире. |
*в случае если вы используете несколько
режимов доставки согласно договору, поле «DeliveryMode»
является обязательным для заполнения. Если вы используете несколько режимов
доставки из разных городов сдачи, то поле «SenderCity»
так же является обязательным для заполнения. В случае если, вы указали режим
доставки не предусмотренный вашим договором, то режим будет изменен
автоматически нашей системой при сохранении. Например: если отправка из МСК в
СПБ предусматривает только режим доставки «стандарт», но при регистрации вы в
поле «DeliveryMode» указали режим доставки 2 («Priority») при сохранении наша система сделает
проверку и мы сохраним режим доставки согласно договору, т.е
«Стандарт». В случае если вы используете несколько режимов доставки согласно
договору и оставили поле «DeliveryMode» пустым или указали другое значение отличное
от допустимых, такой заказ будет сохранен в нашей системе с режимом доставки
«стандарт»
**в случае, если у клиента несколько
ИКН, допускается регистрация отправлений с одним и тем же номером присвойки на каждый из ИКН.
***Если в товаре передано хотя бы одно
поле с данными по принципалу (блок SubEncloses), то
все поля по принципалу обязательны к заполнению (PrincipalINN
/ PrincipalName / PrincipalPhoneNumber),
иначе данные по переданному принципалу будут проигнорированы.
Структура ответа
{
“CreatedSendings”:
[
{
“EDTN”: ”< Значение идентификатора
запроса (50 символов)>”,
“InvoiceNumber”: ”<Номер отправления присвоенный
PickPoint (20 символов)>”,
“SenderCode“: “<Номер
заказа магазина (50 символов)>”,
“Places”:
[
{
“GCBarCode”: “<Клиентский номер ШК (255
символов, если есть во входящем запросе)>”,
“Barcode”: ”< Штрих код от
PickPoint (50 символов, генерируется, если не было во входящем запросе)>”
"CellStorageType": < тип ячейки
>
}
]
}
]
“RejectedSendings”:
[
{
“EDTN”: ”< Значение идентификатора
запроса (50 символов)>”,
“SenderCode“: “<Номер
заказа магазина (50 символов)>”,
“ErrorCode”: “<Код
ошибки, цифра >“,
“ErrorMessage”: ”<Описание
ошибки, (200 символов)>”,
ExtendedData":
”<Список заказов с дублирующим номером присвойки,
которые не были созданы>”
{
"Places": [
{
“GCBarCode”: “<Клиентский номер ШК (255
символов, если есть во входящем запросе)>”,
“Barcode”: ”< Штрих код от
PickPoint (50 символов, генерируется, если не было во входящем запросе)>”,
"CellStorageType": < тип
ячейки >
}
],
"InvoiceNumber": "< Номер отправления присвоенный PickPoint>"
“BarCode”: "<Штрих код PickPoint> "
],
"Warnings":
[
"Вы
отправляете на регистрацию слишком много отправлений за один запрос.
Рекомендуемое количество отправлений: не более 50."
]
}
URL: /makelabel
Метод: POST
Описание
Команда предназначена
для получения этикеток в формате pdf размещаемые
на отправлениях. На вход принимается структура, содержащая идентификатор сессии
и список номеров отправлений. На выходе массив байт.
Этикетки можно
создавать на отправления в статусах: 101-104.
Вид этикетки:
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“Invoices”:
[
”<номер
отправления1>”,
…
“<номер
отправленияN>”
]
}
Структура ответа
В случае ошибки ответ содержит поток с текстом ошибки (начинается с
ключевого слова «Error»), в случае успеха ответ содержит поток с pdf файлом в
виде массива байт (начинается с «%PDF»).
URL: /makeZLabel
Метод: POST
Описание
Команда предназначена
для получения этикеток отправлений в формате pdf для печати на принтере самоклеящихся этикеток
типа Zebra размерами 57х60мм.
На вход принимается структура, содержащая идентификатор сессии и список номеров
отправлений. На выходе массив байт.
Этикетки можно
создавать на отправления в статусах: 101-104.
Вид этикетки:
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“Invoices”:
[
”<номер
отправления1>”,
…
“<номер
отправленияN>”
]
}
Структура ответа
В
случае ошибки ответ содержит поток с текстом ошибки (начинается с ключевого
слова «Error»),
в случае успеха ответ содержит поток с pdf файлом в виде массива байт
(начинается с «%PDF»).
URL: /makereestrnumber
Метод: POST
Описание
Команда предназначена для создания реестра и
получения номера данного реестра. На вход принимается структура, содержащая
идентификатор сессии и список номеров отправлений (или/и ШК вложимых,
или/и номера присвоек). На выход выдается список
номеров созданных реестров или сообщение об ошибке. Если все отправления
создаются с одним типом передачи отправлений в PickPoint и из одного города, то реестр будет 1.
Структура запроса
{
“SessionId”: ”<уникальный идентификатор
сессии (GUID 16 байт)>”,
“CityName”: ”<Название города передачи отправления в
PickPoint>”,
“RegionName”: ”<Название региона
передачи отправления в PickPoint >”,
"DeliveryPoint":
"<Пункт сдачи,
номер постамата>",
“ReestrNumber”: ”<Номер документа Клиента>”,
“Invoices”:
[
”<номер
отправления1>”,
…
“<номер
отправленияN>”
],
“Encloses”:
<номер ШК 1>
…
“<номер
ШК N>”
],
“SenderCodes“: “<Номер заказа магазина (50
символов)>”,
[
”<номер присвойки>”,
…
“<номер присвойки N>”
]
}
}
Структура ответа
{
“Numbers”:
[
”<номер
реестр1>”,
“<номер
реестрN>”
]
“ErrorMessage”: ”<Сообщение ошибки>”,
"SenderCodes": ”<Список номеров присвоек,
которые не были добавлены в реестр>”,
[
”<"Номер присвойки>”,
]
}
Внимание! Если вам вернулась ошибка “Не все отправления
находятся в статусе «Зарегистрирован» № отправления: 159….» - это означает что
вы пытаетесь создать реестр на отправление которое не зарегистрировано или на
которое уже был сделан реестр. В таком случае вам необходимо зарегистрировать
отправление заново и создать этикетку, а после добавить в реестр.
Установлен следующий приоритет обработки полей:
Если поле 1 не заполнено – обработка запроса
производится по полю 2 и т.д.
Для добавления отправлений в реестр все
переданные в запросе отправления должны принадлежать одному ИКН, в том числе в
случае, если у клиента несколько ИКН.
URL: /removeinvoicefromreestr
Метод: POST
Описание
Команда предназначена для удаления отправлений из
реестра передачи клиента (отправление возвращается в статус «Зарегистрирован»
("State":101)). Реестр при этом не должен быть в статусе «Принят».
Для успешного удаления отправления его вложимые
должны быть в статусах: «Сформирован для передачи Логисту», «Развоз до ПТ
самостоятельно», «Сформирован для отправки». В случае, если эти условия не
выполнены, то будет выведено соответствующее сообщение.
Структура запроса
{
“SessionId”: ”<уникальный идентификатор
сессии (GUID 16 байт), обязательное поле >”,
“IKN”: ”<
ИКН – номер договора (10 символов) (10 символов), обязательное поле >”,
“InvoiceNumber”: ”<номер отправления>”,
“SenderCode“: “<номер заказа в магазине (50
символов)>”
}
Структура ответа
{
“ErrorCode”: <Код
ошибки, цифра >,
“ErrorMessage”: ”<Описание
ошибки, (200 символов), (200 символов)>”
}
Поля «InvoiceNumber» и «SenderCode»
взаимоисключающие. Если заполнены поля «InvoiceNumber» и «SenderCode», то будет
обработан инвойс с указанным InvoiceNumber, если InvoiceNumber не указан, то
будет обработан инвойс с указанным SenderCode.
URL: /getreestrnumber
Метод: POST
Описание
Если вам необходимо найти реестр по которому ранее
передавалось отправление в PickPoint. На вход принимается структура, содержащая
идентификатор сессии и номер отправления. Если указанное отправление не
содержится ни в одном реестре или нет реестра с указанным номером, вернется
соответствующее сообщение.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“InvoiceNumber”: ”<номер отправления>”
}
Структура ответа
{
“Number”: ”<номер реестр>”,
“ErrorMessage”: ”<Сообщение ошибки>”
}
URL: /courier
Метод: POST
Описание
Команда предназначена для создания вызова курьера.
На вход принимается структура, содержащая номер сессии и описания адреса
забора, времени забора, количества мест и общий вес.
Внимание! Вызов курьера должен быть в интервале с 9 до 18.
Для Московской области вызов курьера на текущий день должен создаваться до 11:00
(диапазон вызова с 9-18 или 10-30 до 18). Для остальных регионов вызов на текущий
день должен быть создан до 15:00. Интервал вызова должен быть не менее 4 часов.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“IKN“: “< ИКН – номер договора
(10 символов)>”,
“SenderCode“: “<Код
вызова курьера отправителя, НЕ
обязательное поле>”,
“City“: “<Название города>”,
“City_id“: <id города>,
“City_owner_id“: <owner_id город>,
“Address“: “<Адрес>”,
“FIO“: “<Контактное
лицо>”, обязательное поле,
“Phone“: “<Контактный
телфон>”, обязательное
поле,
“Date“: “<Дата
сбора>”, обязательное поле,//формат гггг.мм.дд
“TimeStart“: <Ожидаемое
время сбора с>,//количество минут от 00:00
“TimeEnd“: <
Ожидаемое время сбора по>,//количество минут от 00:00
“Number“: <Количество
мест – примерное значение >,
“Weight”: <Общий
вес, кг. – примерное значение>,
“Comment“: “<Комментарий>”
}
Поля City и City_id/City_owner_id являются
взаимоисключающими, при наличии обоих приоритет отдается City_id/City_owner_id
Значение «TimeStart» для времени
9:00 соответствует 540.
Значение «TimeEnd»
для времени 18:00 соответствует
1080.
Структура ответа
{
“CourierRequestRegistred”: <Признак успешности
регистрации вызова курьера >,//<true/false>
“OrderNumber”: <Номер
заказа >,
“ErrorMessage”: ”<Описание
ошибки>”
}
URL: /couriercancel
Метод: POST
Описание
Команда предназначена для отмены вызова курьера. На
вход принимается структура, содержащая номер сессии и номер вызова курьера.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“OrderNumber“: “<Номер
заказа>”
}
Структура ответа
{
“OrderNumber“: “<Номер заказа>”,
“Canceled”: ”<Результат
запроса>”//<true/false>
}
URL: /updateInvoice
Метод: POST
Описание
Команда предназначена для
изменения полей созданного отправления. Обновлять возможно следующие поля:
номер постамата для доставки, номер телефона
получателя, имя получателя, почтовый ящик получателя, сумму к оплате, артикул товара, ШК товара,
наименование товара, стоимость ед. товара, кол-во ед. товара, ставка НДС по
товару, описание товара. Для того, чтобы поле было корректно обновлено,
отправление должно находиться в статусе, при котором редактирование данного
поля разрешено:
Поля, доступные для изменения, в состояниях, указанных
в таблице ниже:
"deliveryfee":
(сервисный сбор),
"DeliveryVat": (ставка ндс
сервисного сбора),
"Phone":
”<Номер телефона для редактирования (необязательное поле)>”,
"RecipientName": ”<Номер
получателя для редактирования (необязательное поле)>”,
"Email":
”<Электронный ящик получателя (необязательное поле)>”,
"Sum": <Сумма к оплате (необязательное
поле) >
Таблица допустимости
переадресации – изменения поля «PostamatNumber»:
100 (Принят
по реестру) |
Да |
101
(Зарегистрирован) |
Да |
102
(Сформирован для передачи Логисту) |
Да |
103 (Развоз
до ПТ самостоятельно) |
Да |
104
(Сформирован для отправки) |
Да |
105 (Принят
Логистом) |
Да - при
условии, что НЕТ состояния «Получен» |
106 (На
кладовке Логиста) |
Да |
107 (Выдан
на маршрут) |
Да |
108 (Выдано
курьеру) |
Да, при
условии, что по текущему ПТ получения ЕСТЬ флаг "Поломка",
"временное закрытие" или текущий ПТ получения 0001-001 |
110
(Принято в ПТ) |
Да - при
условии, что НЕТ состояния «Получен» |
116
(Передано на возврат) |
Да - при
условии, что НЕТ состояния «Получен» |
118
(Передано на ИНО) |
Да |
119
(Принято на ИНО) |
Да |
120
(Затюковано на ИНО) |
Да |
121
(Назначен курьер) |
Да |
123 (Сконсолидировано) |
Да – при
условии, что содержится в накладной консолидированной пересылки |
144 Считан
в конс. Накладную |
Да |
145 Считан
в накладную передачи Ф11 |
Да |
146
Передано фиктивно |
Да |
147
Выдан на маршрут_внутрирегиональный |
Да |
*Изменения возможно только в
том случае, если для связанных с ними КО PostageType = 5004(Консолидированная
пересылка), в остальном случае – невозможно.
Обновление полей массива SubEncloses допускается для вложимых
отправлений, находящихся в статусах 101, 102, 103, 104.
Если необязательное поле не
должно быть изменено, не следует заполнять его в запросе или передавайте в
качестве его значения null.
При обновлении параметров SubEncloses будут обновлены значения тех полей, которые в
запросе переданы и заполнены.
Структура
запроса
{
“SessionId”:
”<уникальный идентификатор сессии>”,
“InvoiceNumber”: ”<Номер КО>”,
“GCInvoiceNumber”: ”<Номер отправления клиента>”,
“PostamatNumber”: ”<Номер постамата
для редактирования (необязательное поле)>”,
“Phone”: ”<Номер телефона для
редактирования (необязательное поле)>”,
“RecipientName”: ”<Номер получателя для радактирования (необязательное поле)>”,
“Email”: ”<Электронный ящик
получателя (необязательное поле)>”,
“Sum”:
<Сумма к оплате (необязательное поле) >,
"BarCode": "<Штрих-код вложимого PickPoint
(обязательное поле для обновление потоварки, если не
передается GCBarCode)>",
"GCBarCode": "<Номер вложимого клиента
(обязательное поле для обновление потоварки, если не
передается BarCode)> "
"operator_id":
"<id
оператора (необязательное поле)> "
"operator_ownerid": "< ownerid оператора (необязательное поле)> "
"SubEncloses":
<Субвложимые>
[{
"ProductCode: "<артикул товара(50 символов) (обязательное для обновления потоварки) >",
"GoodsCode": "<ШК товара (50 символов) для
редактирования >",
"Name": "<Наименование товара(200
символов) для редактирования >",
"Price": <Стоимость ед. товара с НДС для
редактирования >,
"Quantity": < Кол-во ед. товара одного арт. для
редактирования >,
"Vat": < Ставка НДС по товару для
редактирования, обязательное поле
>,
"Description": "<Описание товара для
редактирования >",
"Upi":
"<Код маркировки (1024 символа), не
обязательное поле >"
}]
}
Sum |
Если передаете отрицательное
значение (со знаком минус), то устанавливается значение "0" |
Price |
|
Vat |
Ставка НДС по товару: "Vat": 10 (НДС 10%) "Vat": 0 (Без НДС) "Vat": null (Если не передавать атрибут "Vat"
- НДС 20%) |
В случае, если поле Vat не было передано,
значение ставки НДС по товару переданного в запросе вложимого устанавливается в
20%.
Если в запросе переданы operator_id и operator_ownerid существующего оператора, в историю обновления полей созданного
отправления запишутся сделанные изменения от имени данного оператора.
Структура ответа
{
Error":
<Описание ошибки>,
"ErrorCode": <Код ошибки: 0 – нет ошибки, -1 -
ошибка>,
“GCInvoiceNumber”:
”<Номер отправления клиента>”,
“InvoiceNumber”: ”<Номер КО>”,
“Results”
: ”<Результаты обновления полей
отправления>”
[
{
“Comment”
: ”<Текст ошибки>”
“FieldName”
: ”<Имя поля для обновления>”,
“Sucess”:
“<true / false>”
}
]
}
URL: /cancelInvoice
Метод: POST
Описание
Команда предназначена для
удаления ранее созданного отправления. Отправление возможно удалить только в
случае, если все его вложимые находятся в состоянии 101 (зарегистрирован), 102 (сформирован для
передачи логисту), 103 (развоз до ПТ самостоятельно) ), 104 (сформирован для
отправки) или 100 (принят по реестру). В случае, если в запросе передается
ИКН, возможно удалить только отправления, принадлежащие данному ИКН. Если в
запросе не передается ИКН, возможно удалить только отправления, принадлежащие
ИКН оператора текущей сессии.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии>”,
“IKN“:
“<ИКН – номер договора (10
символов)>”,
“InvoiceNumber”: ”<Номер
КО>”,
“ GCInvoiceNumber”: ”<Номер отправления клиента>”
}
Структура ответа
{
“Result”: <true/false>,
“Error”: <Описание ошибки>
“ErrorCode”: <Код
ошибки: 0 – нет ошибки, -1 - ошибка>,
}
URL: /rejectInvoice
Метод: POST
Описание: Метод предназначен для информирования
PickPoint об отмене заказа
Структура запроса
{
"SessionId": ”<уникальный идентификатор сессии>”,
"InvoiceNumber": ”<Номер КО>”,
"GCInvoiceNumber": ”<Номер отправления клиента>”
"Reason": ”<Причина возврата. Параметр необязательный
к заполнению >”
"Source": ”<Тип запроса. Параметр необязательный к заполнению>”
}
Структура ответа
{
"Error":
<Описание ошибки>,
"ErrorCode": <Код
ошибки: 0 – нет ошибки, -1 - ошибка>,
"Result": <true/false>
}
URL: /enclosedelete
Метод: DELETE
Описание
Команда предназначена для удаления вложимого от
зарегистрированного отправления.
В запросе должно передаваться одно из значений – штрихкод PickPoint / Номер места клиента
{
”SessionId”: ”<уникальный идентификатор сессии>”,
"Barcode”:
"<Штрих-код вложимого PickPoint (обязательное
поле, если не заполнено GCBarCode)>",
”GcBarcode”:
“<Номер вложимого клиента (обязательное поле, если не заполнено BarCode)>”
}
Структура ответа
{
“Result”: <true/false>,
“Error”: <Описание ошибки>
“ErrorCode”: <Код
ошибки: 0 – нет ошибки, -1 - ошибка>,
}
Возможные
ошибки:
URL: /getstates
Метод: GET
Описание
Команда предназначена
для получения списка статусов отправлений с их текстовым описанием.
Структура ответа
{
"State": “<номер
внутреннего статуса PickPoint>”,
"StateText": ”<текстовое
описание внутреннего статуса PickPoint>”
"VisualStates": [
{
"ID": “<номер внешнего статуса>”,
"Text": ”<текстовое описание внешнего
статуса>”
},
{
"ID": “<номер внешнего статуса>”,
"Text": ”<текстовое описание внешнего
статуса>”
}
}
URL: / getInvoicesChangeState
Метод: POST
Описание
Команда
предназначена для получения списка
вложимых отправлений за заданный период
со всеми прошедшими статусами. В запросе отправляется
идентификатор сессии, интервал дат и необходимый статус. Список возможных статусов
можно получить с помощью метода getstates. В ответ возвращается массив номеров отправлений c дополнительной информацией. Запрос рекомендуется
отправлять с периодичностью раз в 1 час, передавая интервал времени, за который
осуществляется выборка – 3 часа.
Структура
запроса
{
"SessionId" ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
"DateFrom" “<дата с (дд.ММ.гг
ЧЧ:мм)>”,
"DateTo": “<дата по (дд.ММ.гг ЧЧ:мм)>”,
"State" "<статус, если не
указан, то возвращается по всем статусам>",
"PostageType": "<вид
отправления>"
}
Структура ответа
[
{
"BarCode": "<Штрих-код
вложимого>",
"ChangeDT": ”<дата изменения статуса>”,
"Comment": "<комментарий>",
"GCBarCode": "<номер присвойки
вложимого>",
"State": "<код статуса
вложимого>",
"StateMessage":
"<описание статуса>",
"VisualState": "<текстовый
внешний статус вложимого>",
"VisualStateCode":
"<код внешнего
статуса вложимого>",
"InvoiceNumber":
"<Номер отправления
PickPoint>",
"PostageType": "<вид
отправления>",
"SenderInvoiceNumber":
"<Номер отправления
магазина>"}
]
URL: /getmoneyreturnorder
Метод: POST
Описание
Команда предназначена для получения акта возврата
денег.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“IKN”: “<
ИКН клиента, обязательное поле>”,
“DocumentNumber”: “<Номер акта>”
“DateFrom”: “<дата с, текстовая
строка>”,
“DateEnd”: “<дата по,
текстовая строка >”,
}
Структура ответа
[
“DocumentNumber”: ”<Номер
акта>”,
“Date”: “<Дата
акта>”,
“PayOrderNumber”: “<Номер платежного
поручения>” ,
“Invoices”:
[
{
“InvoiceNumber”: “<Номер
отправления>”,
“GCInvoiceNumber”: “<Номер отправления
клиента>”,
“NPSum”: <Сумма
наложенного платежа>,
“RetSum”: <Сумма возврата> ,
"RetRate":
“<Ставка агентского
вознаграждения>”,
"PayType":
“<Тип оплаты отправления
“cash”\”card”>”,
"Sbp":
“<Оплата через СБП “true”\”false”>”,
Encloses
[
{
“Barcode”: “<Номер вложимого
(штрих-код)>”,
“GCBarCode”: “<Номер вложимого клиента
(штрих-код магазина)>”
}
]
}
],
“TotalNPSum”: <Общая сумма наложенного платежа>,
“TotalRetSum”: <Общая
сумма возврата>
“Error”: “<Описание
ошибки>”
]
Возможные ошибки:
URL: / invoiceproblems
Метод: GET
Описание
Команда предназначена для получения списка
отправлений по которым была или есть проблематика с указанием
ее актуальности. В ответ возвращается
массив номеров отправлений (по 100 шт. в запросе от старых к новым) по которым
были/есть проблематики и они еще не передавались клиенту.
Структура запроса
{
"SessionId": ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
"
IKN": “<ИКН
– номер договора (10 символов)>”
}
Структура ответа
{
"ErrorCode":
0,
"ErrorMessage":
null,
"Problems": [
{
"Active":
"<активность проблематики (1 -активна, 0- не активна)>",
"BarCode":
“<номер вложимого (штрих-код)>”,
"GCBarCode":
“<Клиентский штрих-код. Поле не обязательное. Можно не отправлять (255
символов)>”,
"InvoiceNumber": ”<Номер КО>”,
"PostageType":
"<вид отправления>",
"ProblemDate":
"<дата проблематики>",
"ProblemType": “<тип проблематики>”
"SenderCode":
“<номер заказа в магазине>”
"StateMessage": ""<описание статуса>",
"VisualState":
"<текстовый внешний статус вложимого>",
}
]
}
Параметры ответа:
В случае отсутсвия отправлений с проблематики
в ответ будет получено:
{"ErrorCode":
0,
"ErrorMessage":
null,
"Problems": null
}
URL: /getproductreturnorder
Метод: POST
Описание
Команда предназначена для получения акта возврата
товара.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“IKN”: “<
ИКН клиента, обязательное поле>”,
“DocumentNumber”: “<Номер акта>”
"ActType":
“<Тип акта. Необязательное
поле>”,
“DateFrom”: “<дата с, текстовая
строка>”,
“DateEnd”: “<дата по,
текстовая строка >”,
}
Возможные значения
поля "ActType":
Client - возвращаются только акты с типом "Акт передачи клиентских возвратов"
Post - возвращаются только акты с типом "Акт
передачи клиентских возвратов (другие каналы доставки)" (возврат почта)
Unclaimed - возвращаются только акты с типом "Акт
возврата коммерческих отправлений"
Mixed - возвращаются только акты с типом
"Смешанный акт возврата коммерческих отправлений"
Если поле не
заполнено возвращается список всех актов
Структура ответа
[
“DocumentNumber”: ”<Номер
акта>”,
“Date”: “<Дата
акта>”,
“Invoices”:
[
{
“InvoiceNumber”: “<Номер
отправления>”,
“GCInvoiceNumber”: “<Номер отправления магазина>”,
“NPSum”: <Сумма
наложенного платежа>,
Encloses
[
{
“Barcode”: “<Номер вложимого
(штрих-код)>”,
“GCBarCode”: “<Номер вложимого
клиента>”
}
]
}
],
“TotalNPSum”: <Общая сумма наложенного платежа>,
“Error”: “<Описание
ошибки>”
]
Возможные ошибки:
URL: /citylist
Метод: GET
Описание
Команда предназначена для получения списка городов
только для функции «Вызов курьера».
Структура ответа
[
{
“Name”: ”<название
города>”,
“RegionName”: ”<название
региона города>”,
"FiasId":
"id ФИАС",
"KladrId":
"id КЛАДР"
}
]
URL: /clientpostamatlist
Метод: POST
Описание
Команда предназначена для получения списка постаматов в режиме «рабочий» по номеру контракта. Если постамат не может
принять отправления или закрывается, он пропадает из данного списка. Если вам
необходимо список точек PickPoint для
своего сайта, то рекомендуется актуализировать список не реже 1-2 раза в сутки.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“IKN“: “<ИКН клиента>”
}
[
{
"Address":
"”<адрес расположения постамата (150
символов)>",
"AmountTo":
"<максимальная сумма выдачи>",
"Card":
<Возможность оплаты пластиковой картой: 0 – нет, 1 –да, 2 – только онлайн
оплата>,
"Cash":
<Возможность оплаты наличными: 0 – нет, 1 – да>,
"CitiId":
<Id города (целое число)>,
"CitiName":
"<Название города (50 символов)>",
"CitiOwnerId":
<Owner_id города (целое число)>,
"ClientPtNumber":
<номера постамата в системе клиента>,
"ClosingComment":
"<комментарий о закрытии>",
"ClosingDateFrom":
"<Дата закрытия “c”>",
"ClosingDateTo":
"<Дата закрытия “по”>",
"Comment":
<комментарий>,
"CountryIso":
"<буквенный код страны>",
"CountryName":
"<Название страны (50 символов)>",
"FiasId":
"<ФИАС id города>",
"FileI0":
"<Фотография постамата>",
"FileI1":
"<Фотография постамата>",
"FileI2":
"<Фотография постамата>",
"Fitting":
<true/false – возможна
примерка>,
"House":
"<номер дома (150 символов)>",
"HubAddress":
"<"Адрес" для хаба
обработки>",
"HubCity":
"<"Город" для хаба
обработки>,",
"HubProcessing":
"<№ ПТ склада/станции
обслуживания (Хаб)>",
"HubRegion":
"<"Регион" для хаба
обработки>",
"Id":
"<Id постамата
(целое число)>",
"IndoorPlace":
"<описание входа к постамату (255
символов)>",
"KladrId":
" КЛАДР id города",
"Latitude":
"<Широта>",
"LocationType":
<тип размещения – 1 – в помещении, 2 – на улице>,
"Longitude":
"<Долгота>",
"MapAllowed":
<отображение точки на карте>,
"MaxBoxSize":
"<максимальный размер коробки >",
"MaxDeliveryCount":
<Для АПТ - общее кол-во ячеек. Для ПВЗ – макс. возможное кол-во отправлений
для хранения>,
"MaxSize":
"<текстовое описание максимального размера одного из видов:
-
36х36х60,
- max сумма 3х измерений - 180 см>",
"MaxWeight":
"<текстовое описание максимального веса отправления вида: 5
кг>",
"Metro":
"<название ближайшей станция метро
(100 символов)>",
"MetroArray":
<список ближайших станций метро в виде массива>,
"MovingComment":
"<Комментарий о переезде”>",
"MovingDateFrom":
"<Дата переезда “c”>",
"MovingDateTo":
"<Дата переезда “по”>",
"Name":
"<название (80 символов)>",
"Number":
"<номер постамат, (PTNumber)
текст (8 символов)>",
"Opening":
<true/false – разрешено
вскрытие>,
"OutDescription":
"<Полное описание местонахождения терминала снаружи (8000
символов)>",
"OwnerId":
<Owner_id постамата
(целое число)>,
"OwnerName":
"<название сети постаматов (100
символов)>",
"PayPassAvailable":
<true/false –
возможность бесконтактной оплаты>,
"PostCode":
"<почтовый индекс (20 символов)>",
"Region":
"<Название региона (50 символов)>",
"Returning":
<true/false – возможен возврат>,
"SelfDelivery":
<true/false – возможен самопривоз клиентом>,
"ServiceDateException":
<исключение в графике обслуживания точки точки>,
"ServiceTime":
"<График обслуживания>",
"Status":
<Статус постамата:
2 – рабочий, 5 - перегружен>,
"Street":
" <улица>",
"TemporarilyClosed":
<Признак временного закрытия постамата>” 0 –
рабочий, 1 – временно закрыт,
"TypeTitle":
"<Тип терминала: АПТ/ПВЗ>",
"WidgetAllowed":
<отображение точки на виджете>,
"WorkDateException":
<исключение в графике работы точки>,
"WorkHourly":
<true/false – работает
круглосуточно>,
"WorkTime":
"<интервалы рабочего времени постамата
>”,//чч.мм-чч.мм,чч.мм-чч.мм,NODAY, … //по всем дням недели",
"WorkTimeSMS":
"<время работы>",
"InDescription":
"<Полное описание местонахождения терминала внутри (8000
символов)>",
"RstHouse":
<true/false –
"Доступ только для жильцов дома">
}
]
URL: /clientpostamatreturnlist
Метод: POST
Описание
Команда предназначена для получения списка точек с
доступной услугой возврата.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“IKN”: “<Номер
контракта, обязательное поле>”
}
Структура ответа
[
{
“Id“: “<Id постамата (целое число)>”,
“OwnerId”: ”<Owner_id постамата (целое число)>”,
“CitiId”: “<Id города (целое число)>”,
“CitiOwnerId”: “<Owner_id города (целое число)>”,
“CitiName”: “<Название города
(50 символов)>”,
“Region”: “<Название
региона (50 символов)>”,
“CountryName”: “<Название
страны (50 символов)>”,
"ClientPTnumber":
“<номера постамата в системе клиента>”,
"ClosingComment": “<комментарий о
закрытии>”,
"ClosingDateFrom": “<Дата закрытия
“c”>”,
"ClosingDateTo": “<Дата
закрытия “по”>”,
"MovingComment": “<Комментарий о
переезде”>”,
"MovingDateFrom": “<Дата переезда
“c”>”,
"MovingDateTo": “<Дата
переезда “по”>”,
"FileI0": "<Фотография
постамата>",
"FileI1": "<Фотография
постамата>",
"FileI2": "<Фотография
постамата>",
“Number”: ”<номер постамат, (PTNumber)
текст (8 символов)>”,
“Metro”: ”<название
ближайшей станция метро (100
символов)>”,
“MetroArray”: ”<список ближайших станций метро в виде массива>”,
[
“метро
1 (50 символов)”,
…
“метро
n (50 символов)”
],
“IndoorPlace”: ”<описание
входа к постамату (255 символов)>”,
“Address”: ”<адрес
расположения постамата (150 символов)>”,
"AmountTo": “<максимальная сумма выдачи>”,
“House”: ”<номер дома (150
символов)>”,
“PostCode”: ”<почтовый индекс (20
символов)>”,
“Name”: ”<название (80
символов)>”,
“WorkTime”: ”<интервалы рабочего
времени постамата >”,//чч.мм-чч.мм,чч.мм-чч.мм,NODAY, …
//по всем дням недели
"WorkTimeSMS": ”<время работы>”,
“Latitude”: “<Широта>”,
“Longitude”: “<Долгота>”,
“Status”: “<Статус постамата: 2 –
рабочий, 5 - перегружен>”,
“TypeTitle”: “<Тип терминала:
АПТ/ПВЗ>”,
“Cash”: “<Возможность
оплаты наличными: 0 – нет, 1 – да>”,
“Card”: “<Возможность оплаты
пластиковой картой: 0 – нет, 1 –да, 2 – только онлайн оплата>”,
“InDescription”: “<Полное описание
местонахождения терминала внутри (8000 символов)>”,
“OutDescription”: “<Полное описание местонахождения
терминала снаружи (8000 символов)>”,
“MaxSize”: “<текстовое
описание максимального размера одного из видов:
- 36х36х60,
- max сумма 3х измерений - 180 см>”,
“MaxBoxSize”: “<максимальный размер
коробки >”,
“MaxWeight”: “<текстовое описание максимального
веса отправления вида: 5 кг>”,
“WorkHourly”: ”<true/false – работает круглосуточно>”,
“Opening”: ”<true/false – разрешено вскрытие>”,
“Returning”: ”<true/false – возможен возврат>”,
"SelfDelivery": ”<true/false – возможен самопривоз клиентом>”,
"ServiceDateException": “<исключение в графике обслуживания
точки точки>”,
“Fitting”: ”<true/false – возможна примерка>”,
“LocationType”: ”<тип
размещения – 1 – в помещении, 2 – на улице>”
“OwnerName”: ”<название сети постаматов
(100 символов)>”,
“Comment”: ”<комментарий>”,
“MapAllowed”: “<отображение точки на карте>”,
“WidgetAllowed”: “<отображение точки
на виджете>”,
"WorkDateException":
“<исключение в графике работы точки>”,
"PayPassAvailable": ”<true/false – возможность бесконтактной оплаты>”,
"FiasId":
"ФИАС id города",
"KladrId":
"КЛАДР id города"
}
]
URL: /getzone
Метод: POST
Описание
Команда предназначена
для получения списка зон или значения тарифной зоны в выбранную точку.
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“FromCity”: “<город отправитель груза,
обязательное поле>”,
“ToPT”: “<Номер
пункта выдачи>” ,
“IKN”: “<Номер
контракта, обязательное поле>”
}
Если поле ToPT не указано,
возвращается список зон по всем пунктам выдачи.
Структура ответа
{
“Zones”:
[
{
“FromCity”: “<Город
отправления>”,
“ToCity”: “<Город доставки>”,
“ToPT”: “<Номер
пункта выдачи>”,
“Zone”: “<Номер зоны>”,
“DeliveryMin”: “<Минимальное время
доставки, дни>”,
“DeliveryMax”: “<Максимальное время
доставки, дни>”,
“DeliveryMode”: “<Наименование
режима доставки >”,
“Koeff”: “<Коэффицент магистральной доставки>”
}
],
“Error”: “<Описание
ошибки>”
}
Возможные ошибки:
Ошибка сервера. Попробуйте повторить запрос.
URL: /calctariff
Метод: POST
Описание
Команда предназначена для получения стоимости
доставки. При расчете учитываются следующие ограничения:
·
габариты указываются общие на
все места,
·
вес по умолчанию считается 1
кг,
·
рассчитывается только тариф за
логистику.
ВНИМАНИЕ!
· Данная функция работает только на Рабочей версии сервиса
https://e-solution.pickpoint.ru/api/
Структура запроса
{
“SessionId”: ”<уникальный
идентификатор сессии (GUID 16 байт)>”,
“IKN”: <Номер контракта>,
“InvoiceNumber”: <Номер
отправления, не обязательное
поле>,
“FromCity”: <Город
сдачи отправления>,
“FromRegion”: <Регион
города сдачи отправления>,
“ToCity“: <Город
назначения>,
“ToRegion“:
<Регион назначения>,
“PTNumber”: <Пункт
выдачи (назначения) отправления>,
“GettingType”: <Вид приема, не обязательное поле >,
“EncloseCount”: <Количество
мест, по умолчанию одно, не обязательное поле>,
“Length”: <Длина
отправления, см>,
“Depth”: <Глубина
отправления, см>,
“Width”: <Ширина
отправления, см>,
“Weight”: <Вес
отправления, не обязательное поле, по умолчанию 1кг>
}
Поля «PTNumber» и «ToCity» взаимоисключающие. Если заполнены поля «PTNumber» и «ToCity», то будет обработан «PTNumber» если «PTNumber» не указан, то будет обработан «ToCity». При заполненном параметре «ToCity», параметр «ToRegion» обязателен к заполнению.
Структура ответа
{
“SessionId”: ”<уникальный идентификатор
сессии (GUID 16 байт)>”,
“Services”:
[
{
"DeliveryMode": <Наименование режима доставки>”,
“Discount”: <% скидки, если имеется>”,
“Name”: ”<Наименование тарифа>”,
“Tariff” :”<Стоимость доставки по
тарифу>”,
“NDS”: ”<НДС>”
}
],
“InvoiceNumber”: <Номер накладной>,
“DPMin”: <Минимальный срок доставки>, согласно режиму “Стандарт”
"DPMinPriority":
<Минимальный срок доставки>, согласно режиму “Приоритет”
“DPMax” : <Максимальный срок
доставки>, согласно режиму “Стандарт”
"DPMaxPriority":
<Максимальный срок доставки>, согласно режиму “Приоритет”
“Zone”: <Зона>,
“ErrorCode”: <Код
ошибки: 0 – нет ошибки, -1 - ошибка>,
“ErrorMessage”: ”<Описание ошибки, (200
символов)>”
}
Описание ошибки и код ошибки возвращаются только в случае наличия ошибок
при обработке запроса.
URL: /version
Метод: GET
Описание
Команда предназначена для получения информации о
текущей версии API
и дате обновления версии API.
Для выполнения метода нет необходимости в авторизации, необходимо отправляться
пустой запрос. В ответ возвращается строка содержащая номер версии и дату
обновления до этой версии.
Структура запроса
Структура
ответа
{
"Date":
"26.06.2017 16:58:05",
"Version":
"1.7.7.35914"
}
URL:
/ chequeInfo
Метод: POST
Описание
Команда предназначена
для получения информации и передачи ссылки на чек об оплате.
Рекомендуется
вызывать метод через 24 часа после перехода заказа в статус «Получен» т.к.
некоторые агенты передают данные об оплате с задержкой
ВАЖНО!
Метод вызывать при условии, что методом getInvoicesChangeState получен статус «Получен» ("State"=111) по отправлению наложенного платежа ("PostageType"=10003).
В запросе
отправляется идентификатор сессии и номер отправления по системе PickPoint либо
номер присвойки (номер заказа клиента). Одно из полей
InvoiceNumber или GCInvoiceNumber
обязательны к заполнению.
Структура запроса
{
“SessionId”: "<уникальный
идентификатор сессии (GUID 16 байт)>
",
“InvoiceNumber”: "<Номер КО>",
“GCInvoiceNumber”: "<Номер
присвойки>"
}
Структура
ответа
{
“Error”: “<Описание ошибки>”,
“ErrorCode”: “ <Код
ошибки>”,
"PayType": < "Тип оплаты: оплата наличными – cash,
оплата картой - card">,
"SBP": <"Оплата через СБП: true – успешная
оплата, false – нет оплаты">,
"Sum": <сумма заказа>,
"Fee": <сумма комиссии по заказу>,
"Goods":<null, если нет товаров или стуктура,
еcли
есть товары > [
{
"Name":
“<наименование товара>”,
"Upi":
“<код маркировки товара>”,
"CheckResultProductCode":
< результат проверки кода маркировки
0 – нет кода для списания (код не передан или невалидный,
1- код не списан, 2- код списан>,
}
],
"Cheques":
[
{
"Amount":
<сумма оплаты (наличные/безналичные)
по данному чеку>,
"AmountAdvance":
<сумма предоплаты по данному чеку>,
"AmountTotal":
<Сумма общего итога >,
"CreatedOn":
"<Дата создания чека>",
"Url":
<ссылка на чек>,
"ChequeType":
null, далее данный параметр будет удален
"FN": null,
далее данный параметр будет удален
"FP": null,
далее данный параметр будет удален
"Number":
null далее данный параметр будет удален
}
],
"HasChequeDetails":
null, далее данный параметр будет удален
"ChequeUPIType":
null далее данный параметр будет удален
}
Внимание!
В апреле-мае 2023 года из
структуры ответа будут удалены параметры, в которых сейчас передается значение null:
"ChequeType"
"FN"
"FP"
"Number"
"HasChequeDetails"
"ChequeUPIType"
Коды ошибок
Описание ошибки и код ошибки возвращаются только в
случае наличия ошибок при обработке запроса.
Сообщение |
|
-2001 |
Ошибка сервера. Попробуйте
повторить запрос. |
-2002 |
Отправление
не может быть зарегестрировано для данного постамата. |
-2003 |
Прием
отправлений в постамат в данный момент
приостановлен. |
-2004 |
Для
данного типа отправления сумма не может быть нулевой. |
-2005 |
Для
данного типа отправления сумма должна быть нулевой. |
-2006 |
Ошибка
генерации штрихкода. |
-2007 |
Некорректный
штрихкод. |
-2008 |
Место
с таким штрихкодом уже существует. |
-2009 |
Неверный
номер договора или договор заблокирован. |
-2010 |
Заказ
на вызов курьера на указаный день уже существует,
обратитесь к менеджерам. |
-2011 |
В постамате нет подходящей ячейки. |
-2012 |
Для
данного типа отправления должны быть указаны размеры. |
-2013 |
Пароль
или логин не верный. |
-2014 |
Нет
действительной сессии с таким номером. |
-2015 |
Нет
инвойса с таким номером для данного клиента. |
-2016 |
Нет
отправлений с указанными номерами для данного клиента. |
-2017 |
Нет
информации для авторизованного клиента по указанным параметрам. |
-2018 |
Курьер
не может быть вызван на указанную дату. |
-2019 |
Курьер
не может быть вызван на указанную дату/время для данного региона. |
-2020 |
Курьер
не может быть вызван на указанное время. |
-2021 |
Нет
вызова курьера с данным номером. |
-2022 |
Нет
указаного города или город указан неверно. |
-2023 |
Возможно
неверный формат email. |
-2024 |
Возможно
неверный формат телефона. |
-2025 |
Неверный
формат даты. |
-2026 |
При
абонентском обслуживании тип сдачи отправления только "Вызов
курьера". |
-2027 |
При
абонентском обслуживании тип оплаты только "Предоплата". |
-2028 |
Тип
оплаты только "Предоплата". |
-2029 |
Все
отправления в реестре должны быть одного типа. |
-2030 |
Не
все отправления находятся в статусе "Зарегистрировано" |
-2031 |
Контракты
нескольких отправлений не совпадают. |
-2032 |
Контракты
указанных отправлений не соответствуют оператору текущей сессии. |
-2033 |
Указанный
контракт не соответствует оператору текущей сессии. |
-2034 |
Нет
пункта выдачи с указанным номером. |
-2035 |
Не
заполнено значение контактного лица. |
-2036 |
Неверный
формат запроса. |
-2037 |
Превышена
допустимая длинна поля. |
-2038 |
Попробуйте
повторить запрос еще раз. |
-2039 |
Телефон
является обязательным полем в данном запросе. |
-2040 |
Описание
вложимого является обязательным полем. |
-2041 |
Нет
реестра по указанному запросу. |
-2042 |
Нет
отправления по указанному запросу. |
-2043 |
Не
указан тип отправления. |
-2044 |
Не
указан тип сдачи отправления. |
-2045 |
Имя
получателя обязательное поле. |
-2046 |
Отправление
с указанным номером присвойки уже существует. |
-2047 |
Запрос
содержит дублирующие номера присвоек вложимого или
отправление с указанным номером присвойки |
-2048 |
Не
указан ИКН. |
-2049 |
Отправление
находится в статусе отличном от "Получено". |
-2050 |
Функция
регистрация возвратной накладной данному оператору не доступна. |
-2051 |
Не
найден адрес возврата. |
-2052 |
Данному
оператору не доступны функции агрегатора. |
-2053 |
Не
все поля заполнены. |
-2054 |
Субклиента с указанным номером не зарегистрировано. |
-2055 |
Для
данного клиента субклиенты не найдены. |
-2056 |
Клиент
с указанным номером уже зарегистрирован. |
-2057 |
Должно
быть указано хотя бы одно вложимое. |
-2058 |
Для
данного оператора отсутствует соответствующая ему клиентская информация. |
-2059 |
Отправление
не найдено. |
-2060 |
Неверное
значение PostageType. |
-2061 |
Неверное
значение GettingType. |
-2062 |
Не
указан номер телефона получателя. |
-2063 |
Настройки
контракта не разрешают передачу номера отправления. |
-2064 |
Отправление
с указанным номером уже существует. |
-2065 |
Запрос
содержит дублирующие штрихкоды вложимых. |
-2066 |
Длина
штрихкода не соответствует требованию. Необходимо
12 символов. |
-2067 |
Адрес
возврата указан не полностью. |
-2068 |
Сумма
за отправление не может быть отрицательной. |
-2069 |
Неверный
формат телефона. |
-2070 |
Добавление
собственного кода доступа запрещено. |
-2071 |
Непредвиденная
ошибка. |
-2072 |
Настройки
контракта не разрешают данную операцию. |
-2073 |
По
указанным параметрам информации не найдено. |
-2074 |
Отправление
не соответствует номеру телефона. |
-2075 |
Ошибка
продления хранения. |
-2076 |
Ошибка
при расчете тарифа. Попробуйте повторить запрос позже. |
-2077 |
Отправление
не принадлежит учетной записи. |
-2078 |
Статус
отправления не позволяет переадресацию. |
-2079 |
Переадресация
возможна в рамках одной области/края/республики! |
-2080 |
Переадресация
в статусе "Выдано курьеру" возможна только, если отправление идет
на АПТ! |
-2081 |
Баннеры
не найдены. |
-2082 |
Не
указан город, либо указан неверно или города нет в списке обслуживаемых,
свяжитесь с менеджером. |
-2090 |
Зона обслуживания
указана неверно. |
-2099 |
Недопустимое состояние ИКН |
-2205 |
По заказу не было платежа |
Старая таблица кодов. (Не используется)
Код |
Описание |
0 |
Операция
выполнена успешно |
-1 |
Непредвиденная
ошибка |
1 |
Неверная
сессия или сессия истекла |
10 |
Неверный
логин или пароль |
20 |
Неверные
параметры запроса |
21 |
Данные
не найдены |
25 |
Отправление
не найдено |
30 |
Неверный
номер контракта |
35 |
Субклиент не найден |
100 |
Временная
ошибка |