Протокол API

 

 

ВНИМАНИЕ: Схема бизнес процесса по отправке заказов через PickPoint:

 

Ниже описаны основные необходимые команды для осуществления отправок через PickPoint:

1

Зарегистрировать отправления

2

Формирование этикеток

3

Формирование реестра

4

Вызов курьера

 

Структура API реализована по архитектуре REST. Коммуникация осуществляется посредством сообщений JSON, сервис доступен по адресам:

Для доступа к тестовой среде, вам необходимо обратиться на support@pickpoint.ru, с указанием вашего ИКН.

Для корректной работы необходимо:

 


ОглавлениеСКАЧАТЬ

Таблица изменений.. 3

Начало сессии (Login). 6

Регистрация отправлений.. 6

Формирование этикеток в pdf 11

Формирование этикеток pdf для принтера Zebra.. 12

Формирование реестра (по списку отправлений). 13

Удаление отправления из реестра. 15

Получение номера реестра по номеру отправления. 15

Вызов курьера.. 16

Отмена вызова курьера.. 17

Обновление полей созданного отправления. 17

Удаление отправления. 20

Отмена заказа.. 21

Удаление вложимого.. 22

Получение справочника статусов отправления. 22

Получение списка вложимых отправлений за заданный период со всеми прошедшими статусами.. 23

Получение акта возврата денег. 24

Получение списка отправлений с проблематиками и их актуальностью... 25

Получение акта возврата товара.. 26

Получение списка городов. 27

Список точек выдачи в сети Pickpoint 27

Список точек возврата в сети Pickpoint 30

Получение информации по зонам.. 31

Расчет тарифа.. 32

Получение версии API 33

Метод получения информации о чеке.. 34

Коды ошибок. 36


Таблица изменений

Версия

Дата

Изменения

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
- card

2.       Добавлен признак -  оплата через СБП.

Возможные значения:

- true
- false
- null (информация отсутствует)

 

19/12/2022

·         Обновлен ответ на метод / chequeInfo:

Изменены возможные значения по оплате через СБП.

Возможные значения:

- true

- false

·         Доработан метод /getmoneyreturnorder

Добавлен признак -  оплата через СБП.

Возможные значения:

- true
- false

 

 


Начало сессии (Login)

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
Формат номера телефона

  • Для России + 7 (далее 10 цифр без пробелов, скоробок, тире) пример: +79151234352
  • Для Белоруссии +375 (далее 9 цифр без пробелов, скобок, тире) пример: +375786142536


 обязательное поле

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": 20 (НДС 20%)

"DeliveryVat": 10 (НДС 10%)

"DeliveryVat": 0 (Без НДС)

"DeliveryVat": null (Если не передавать атрибут "Vat" - НДС 20%)

 

DeliveryMode*

Режим доставки- допустимые значения : 1, если Standard и 2, если Priority

SenderCity*

Город сдачи отправлений в PickPoint

Width

Ширина, в см. Если не знаете точных габаритов, данное поле можно не передавать

Height

Высота, в см. Если не знаете точных габаритов, данное поле можно не передавать

Depth

Глубина в см. Если не знаете точных габаритов, данное поле можно не передавать

Weight

Вес в кг. Если не знаете точных габаритов, данное поле можно не передавать

Vat

Ставка НДС по товару:
"Vat": 20 (НДС 20%)

"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."
                 ]

}

 

 

Формирование этикеток в pdf

URL: /makelabel

Метод: POST

Описание

Команда предназначена для получения этикеток в формате pdf размещаемые на отправлениях. На вход принимается структура, содержащая идентификатор сессии и список номеров отправлений. На выходе массив байт.

Этикетки можно создавать на отправления в статусах: 101-104.

 

Вид этикетки:

 

Структура запроса

{

                SessionId”:           ”<уникальный идентификатор сессии  (GUID 16 байт)>”,

Invoices”:

                 [

                ”<номер отправления1>”,

                         

                “<номер отправленияN>”

]

}

 

Структура ответа

В случае ошибки ответ содержит поток с текстом ошибки (начинается с ключевого слова «Error»), в случае успеха ответ содержит поток с pdf файлом в виде массива байт (начинается с «%PDF»).

 

Формирование этикеток pdf для принтера Zebra

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. 1.SenderCodes
  2. 2.Encloses
  3. 3.Invoices

Если поле 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": 20 (НДС 20%)

"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 КЛАДР"

 

}

]

Список точек выдачи в сети Pickpoint

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 – "Доступ только для жильцов дома">

    }

]

 

Список точек возврата в сети Pickpoint

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 символов)>”

}

 

Описание ошибки и код ошибки возвращаются только в случае наличия ошибок при обработке запроса.

 

Получение версии API

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

Временная ошибка