Инструкция по API версии 2.2

История изменений

Версия 2.2
  1. Изменен ответ сервера для метода АПИ “Получение списка точек доставки“.

    • для каждой точки ПВЗ добавлено 2 поля, описывающих торговую сеть:
      DeliveryOperatorId - ИД сети (1 - Евросеть, 2 - Связной)
      DeliveryOperator - наименование сети
  2. Изменена структура данных, описывающих точку ПВЗ в виджете.

    • для каждой точки ПВЗ добавлено 2 поля, описывающие бренд, под которой работает точка:
      DeliveryOperatorId - ИД бренда (1 - Евросеть, 2 - Связной)
      DeliveryOperator - наименование бренда
  3. При создании посылки в описи добавлено поле NdsRate - ставка НДС

  4. Добавлен метод получения информации по посылке “Получение информации по посылкам

  5. Расширен ответ на создание посылки

  6. Реализована новая версия метода получения точек. Старая версия помечена как устаревшая.

Персональные данные для подключения

X-ApiKey 00000000-0000-0000-0000-000000000 Ключ доступа к API. Необходимо добавлять в заголовок запросов
PartnerId Целое число Ключ доступа к виджету выбора точки доставки

Использование сервиса на вашем ресурсе

  1. Вы размещаете виджет выбора точки доставки на своем сайте.
  2. С помощью виджета покупатель при оформлении заказа выбирает точку для доставки, виджет вызывает функцию вашего сайта, передавая информацию о выбранной покупателем точке и стоимости доставки и возврата.
  3. После совершения покупки вы упаковываете товар, присваиваете посылке уникальный идентификатор и вызываете функцию API Формирование входящей посылки.
  4. Далее необходимо вызвать метод API Получение файла наклейки, распечатать полученый файл и наклеить его на посылку.
  5. Вы можете в любой момент получить текущий статус посылки/посылок, вызвав метод API “Получение состояния посылок“.
  6. Вы можете в любой момент получить историю статусов, вызвав метод API “Получение истории состояния посылок“.
  7. Вы можете получить ссылку для отслеживания статуса посылки получателем. “Получение ссылки для отслеживания статуса посылки получателем
  8. Вы также можете создать свой собственный виджет выбора точки доставки на основе информации, полученной из вызова метода API Получение списка точек доставки. Информация об актуальности точек, добавлении новых обновляется ежедневно, поэтому при создании своего виджета необходимо ежедневно обновлять информацию о точках.
  9. Ваш виджет может иметь кнопку для расчета точной даты доставки по выбранной покупателем точке Получение точной даты доставки на точку.
  10. Вы можете в любой момент получить текущий статус, отображаемый получателю посылок, вызвав метод API “Получение состояния посылок для получателей“.
  11. Вы можете в любой момент получить историю статусов, отображаемых получателю посылок, вызвав метод API “Получение истории состояния посылок для получателей“.
  12. Вы можете получить информацию по созданной посылке, с помощью которой можно сформировать этикетку на Вашей стороне, вызвав метод API “Получение информации по посылкам“.
  13. Вы можете получить опись возвращаемой после частичной выдачи посылки, вызвав метод API “Опись возвращаемой после частичной выдачи посылки

Описание API

Как использовать интерактивное описание API

Методы API

  1. Общая информация
  2. Формирование входящей посылки. Версия 2.
  3. Формирование входящей посылки
  4. Формирование входящей посылки. Расширенная версия
  5. Получение файла наклейки
  6. Получение состояния посылок
  7. Получение истории состояния посылок
  8. Получение ссылки для отслеживания статуса посылки получателем
  9. Получение состояния посылок для получателей
  10. Получение истории состояния посылок для получателей
  11. Получение списка точек доставки
  12. Получение списка точек доставки. Версия 2
  13. Получение точной даты доставки на точку
  14. Создание акта приема-передачи (ПП)
  15. Получение акта ПП
  16. Отмена акта ПП
  17. Информации по посылкам
  18. Опись возвращаемой после частичной выдачи посылки
  19. Расчет стоимости доставки
  20. Справочник населенных пунктов

Как использовать интерактивное описание API

Интерактивное описание API можно найти по адресу

  1. В выпадающем списке сверху необходимо выбрать текущую версию (V2.2)
  2. Для тестирования запросов необходимо указать ключ доступа в в поле api_key и нажать кнопку Explore, после этого все запросы будут выполнятся с этим ключом доступа

Методы API

1. Общая информация

Для аутентификации необходимо использовать ключ доступа X-ApiKey
Ключ доступа необходимо передавать в заголовке запроса с именем X-ApiKey

Пример заголовка запроса на создание посылки

    
    POST /shipments/v2.2/create HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 188
    Content-Type: application/json
  

2. Формирование входящей посылки. Версия 2.

POST запрос

Описание схемы передаваемых в запрос данных
ShipmentCreate2Model
Наименование Тип Обязательно Описание
Customer CustomerModel Да Покупатель
Id string Да Идентификатор посылки партнера. Вся дальнейшая работа с заказом в API идет через него.
ShopId string Да Код точки, полученый из виджета определения точки доставки или списка точек (параметр OwnerCode)
Value ShipmentValueModel Да Информация о стоимости посылки
Weight number Да Вес посылки в килограммах (от 0.01 до 9.99)
Route string Нет Маршрут. По умолчанию Msc (Обычный маршрут). Определяет маршрут, которым поедет посылка Значение отличное от Msc используется для того, чтобы указать, что посылка поедет по сокращенному маршруту, не заезжая в Москву. Доступные варианты см. тут
Внимание. Возможность отправить посылку по указанному маршруту можно определить в методе Получение списка точек доставки. Версия 2
IsPartialDelivery bool Нет Доступна частичная выдача. По умолчанию - false
DeliveryCostForCustomer number Нет Стоимость доставки для клиента. Обязательно в случае частичной выдачи.
Packages ShipmentPackageModel[] Нет Список мест в посылке
SourceWarehouse string Нет Склад отгрузки. Если у вас много складов отгрузки, передавайте сюда их краткое наименование для корректной сортировки возвратов. Название склада будет нашей системой нашим кладовщикам произносится голосом, поэтому большая просьба делать наименование кратким и благозвучным.
AddDeliveryPriceToSumFromClient boolean Нет Необходимо прибавить нашу стоимость доставки к сумме с клиента. По умолчанию false. НЕ ИСПОЛЬЗУЙТЕ.
OrderNumber string Нет Номер заказа. Следует передавать, если заказ отправляется несколькими посылками
Dimensions ShipmentDimensionsModel Нет Габариты посылки. Если указаны, то мы сразу сможем сказать, проходит посылка по габаритам или нет, если не указаны, то сообщим об этом в момент приемки на складе.
AcceptancePoint string Нет Поле устаревшее, не используйте его.
CustomerModel
Наименование Тип Обязательно Описание
FullName string Да Фамилия Имя Отчество (не более 80 символов)
Phone string Да Телефон. Для Связного требуется корректный мобильный номер - последние 10 значащих цифр начинаются с 9ки
ShipmentDimensionsModel
Наименование Тип Обязательно Описание
Length number Да Длина посылки в см
Width number Да Ширина посылки в см
Height number Да Высота посылки в см
ShipmentValueModel
Наименование Тип Обязательно Описание
FromCustomer number Да Сумма которую необходимо заплатить покупателю на месте. В случае частичной выдачи должна быть равна DeliveryCostForCustomer + Сумма clientPrice * amount по всем товарам
Mortgage number Да Страховая сумма
ShipmentPackageModel
Наименование Тип Обязательно Описание
SerialNumber string Да Серийный номер места
Items ShipmentItemModel[] Да Список содержимого места
ShipmentItemModel
Наименование Тип Обязательно Описание
Artikul string Да Артикул товара (не более 25 символов)
Barcode string Нет Штрих-код товара (не более 128 символов)
Name string Да Наименование товара (не более 128 символов)
MarkingCode string Нет Код маркировки. Указывается при необходимости в соответствии с законодательством
Price number Да Стоимость единицы товара (не меньше 0)
ClientPrice number Нет Стоимость единицы товара для клиента (не меньше 0). Обязательно в случае частичной выдачи
Amount number Да Кол-во товара (не меньше 1)
NdsRate number Нет Ставка НДС (0-100). По умолчанию 20. ПОЛЕ УСТАРЕВШЕЕ. ИСПОЛЬЗУЙТЕ NdsRateEnum
NdsRateEnum enumeration Нет Ставка НДС. По умолчанию "НДС 20%".
Возможные значения:
  • 0 - Без НДС
  • 1 - НДС 0%
  • 10 - НДС 10%
  • 18 - НДС 18%
  • 20 - НДС 20%
  • 110 - НДС 10/110
  • 120 - НДС 20/120
NdsSum number Нет Сумма НДС за единицу товара

Ответ сервера 201(Created) - Подтверждение того что посылка принята сервером

Описание схемы данных ответа
ShipmentCreate2ResultModel
Наименование Тип Описание
SerialNumber string Серийный номер посылки
ShipmentNumber string Номер посылки в системе ДРХ Сервис без префикса 000000001
Weight number Вес посылки в граммах
Branch string Филиал, к которому относится точка. Актуально только для Евросети
SubBranch string Субфилиал, к которому относится точка. Актуально только для Евросети
ShopId string Код точки
ShopName string Наименование точки
Address string Адрес точки
CustomerName string ФИО получателя
CustomerPhone string Телефон получателя
Partner string Наименование вашего интернет-магазина
Id string Идентификатор посылки в системе партнера
Sender string Константа ООО «ДРХ Сервис»
DeliveryAgent string Агент доставки - юрлицо оператора доставки
DeliveryOperator number 1 - Евросеть, 2 - Связной
BarCode string Номер, который необходимо закодировать в Code39
PartnerOrderNumber string Номер заказа, который был указан при создании посылки
Пример запроса JSON

    POST /shipments/v2.2/create2 HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 379
    Content-Type: application/json

    {
      "Customer": {
        "FullName": "Иван Иванов",
        "Phone": "89032556522"
      },
      "Id": "ART90001",
      "ShopId": "M001",
      "Value": {
        "FromCustomer": 1000,
        "Mortgage": 900
      },
      "Weight": 0.1,
      "Route": "Msc",
      "IsPartialDelivery": false,
      "DeliveryCostForCustomer": null,
      "Packages": [
        {
          "SerialNumber": "1244445",
          "Items": [
            {
              "Artikul": "ART000001",
              "Barcode": "1234567890",
              "Name": "Вертолет желтый",
              "Price": 123.42,
              "ClientPrice": 123.42,
              "Amount": 2,
              "NdsRateEnum": 20,
              "NdsSum": 24.68
            },
            {
              "Artikul": "ART000002",
              "Barcode": "98765432",
              "Name": "Слон синий",
              "Price": 1244,
              "ClientPrice": 2000,
              "Amount": 1,
              "NdsRateEnum": 20,
              "NdsSum": 400
            }
          ]
        },
      ],
      "AddDeliveryPriceToSumFromClient": true,
      "OrderNumber": "OrdNum12345"
    }
  
Пример ответа JSON

    {
      "SerialNumber": "000000001999999999",
      "ShipmentNumber": "999999999",
      "Weight": 220,
      "Branch": "Филиал Центральный",
      "SubBranch": "Субфилиал Юго-восточный",
      "ShopId": "RE37",
      "ShopName": "Тамбов-2",
      "Address": "Советская ул 179",
      "CustomerName": "Иванов Иван Иванович",
      "CustomerPhone": "79123457890",
      "Partner": "Test Partner",
      "Id": "ShipmentId1",
      "Sender": "ООО «ДРХ Сервис»",
      "DeliveryAgent": "ООО «Евросеть Ритейл»",
      "DeliveryOperator": 1,
      "BarCode": "000000001540108659",
      "PartnerOrderNumber": null,
      "DeliveryPrice": 100,
      "ReturnPrice": 100
    }
  
Что указывать в запросе на создание посылки на примере жизненных ситуаций
Пример 1.
Дано:
Товар1. Цена = 500. Кол-во = 2. Сумма по товару = 1000
Товар2. Цена = 300. Кол-во = 3. Сумма по товару = 900
Стоимость доставки, которую интернет магазин объявляет клиента = 500

Итого у нас получается:
Сумма всех товаров = 1900
Доставка = 500
Общая стоимость заказа = 2400
Заказ не предоплачен. Нам нужно что бы с клиента взяли = 2400 рублей

Вопрос:
Что идет в какие поля?
Ответ:
DeliveryCostForCustomer - 500
AddDeliveryPriceToSumFromClient - false
FromCustomer - 2400
Mortgage - оценочная стоимость, на эту сумму заказ страхуется и с вас берется стоимость за страховку. В случае потери заказа, вам выплачивается именно эта стоимость. Вероятно, в данном случае она составит 1900, но это решать вам самим
В состав посылки указываете:

    Packages: [
    {
      "SerialNumber": "1",
      "Items": [
        { 
          "NdsRateEnum": 20,
          "NdsSum": 100
          "Artikul": "АРТИКУЛ_ТОВАРА_1",
          "Barcode": "Штрих-код товара (поле можно не указывать)",
          "Name": "Товар 1",
          "Price": "Оценочная стоимость товара 1",
          "ClientPrice": 500,
          "Amount": 2
        },
        { 
          "NdsRateEnum": 20,
          "NdsSum": 60
          "Artikul": "АРТИКУЛ_ТОВАРА",
          "Barcode": "Штрих-код товара (поле можно не указывать)",
          "Name": "Товар 2",
          "Price": "Оценочная стоимость товара 2",
          "ClientPrice": 300,
          "Amount": 3
        }
      ]
    }
    ]
  
Пример 2.
Дано:
Товар1. Цена = 500. Кол-во = 2. Сумма по товару = 1000
Товар2. Цена = 300. Кол-во = 3. Сумма по товару = 900
Стоимость доставки, которую интернет магазин объявляет клиента = 500

Итого у нас получается:
Сумма всех товаров = 1900
Доставка = 500
Общая стоимость заказа = 2400
Заказ предоплачен клиентом полностью. Нам нужно что бы с клиента взяли = 0 рублей

Вопрос:
Что идет в какие поля?
Ответ:
Здесь будет недоступна частичная выдача, поэтому
IsPartialDelivery - false
DeliveryCostForCustomer - 0
AddDeliveryPriceToSumFromClient - false
FromCustomer - 0
Mortgage - оценочная стоимость, на эту сумму заказ страхуется и с вас берется стоимость за страховку. В случае потери заказа, вам выплачивается именно эта стоимость. Вероятно, в данном случае она составит 1900, но это решать вам самим
В состав посылки указываете:

    Packages: [
    {
      "SerialNumber": "1",
      "Items": [
        {
          "NdsRateEnum": 20,
          "NdsSum": 0
          "Artikul": "АРТИКУЛ_ТОВАРА_1",
          "Barcode": "Штрих-код товара (поле можно не указывать)",
          "Name": "Товар 1",
          "Price": "Оценочная стоимость товара 1",
          "ClientPrice": 0,
          "Amount": 2
        },
        {
          "NdsRateEnum": 20,
          "NdsSum": 0
          "Artikul": "АРТИКУЛ_ТОВАРА_2",
          "Barcode": "Штрих-код товара (поле можно не указывать)",
          "Name": "Товар 2",
          "Price": "Оценочная стоимость товара 2",
          "ClientPrice": 0,
          "Amount": 3
        }
      ]
  }
  ]

Пример 3.
Дано:
Товар1. Цена = 500. Кол-во = 2. Сумма по товару = 1000
Товар2. Цена = 300. Кол-во = 3. Сумма по товару = 900
Стоимость доставки, которую интернет магазин объявляет клиента = 500

Итого у нас получается:
Сумма всех товаров = 1900
Доставка = 500
Общая стоимость заказа = 2400
Заказ предоплачен клиентом частично на сумму 1000 рублей. Нам нужно что бы с клиента взяли = 1400 рублей

Вопрос:
Что идет в какие поля?
Ответ:
Здесь будет недоступна частичная выдача, поэтому
IsPartialDelivery - false
DeliveryCostForCustomer - 0
AddDeliveryPriceToSumFromClient - false
FromCustomer - 1400
Mortgage - оценочная стоимость, на эту сумму заказ страхуется и с вас берется стоимость за страховку. В случае потери заказа, вам выплачивается именно эта стоимость. Вероятно, в данном случае она составит 1900, но это решать вам самим
В состав посылки указываете:

    Packages: [
    {
      "SerialNumber": "1",
      "Items": [
        {
          "NdsRateEnum": 20,
          "NdsSum": 100
          "Artikul": "АРТИКУЛ_ТОВАРА_1",
          "Barcode": "Штрих-код товара (поле можно не указывать)",
          "Name": "Товар 1",
          "Price": "Оценочная стоимость товара 1",
          "ClientPrice": 500,
          "Amount": 2
        },
        {
          "NdsRateEnum": 20,
          "NdsSum": 60
          "Artikul": "АРТИКУЛ_ТОВАРА_2",
          "Barcode": "Штрих-код товара (поле можно не указывать)",
          "Name": "Товар 2",
          "Price": "Оценочная стоимость товара 2",
          "ClientPrice": 300,
          "Amount": 3
        }
      ]
  }
  ]

3. Формирование входящей посылки

Метод устаревший. Следует использовать Формирование входящей посылки. Версия 2.

POST запрос


В ответ придет информация, которой можно воспользоваться для создания этикетки в случае, если вы по каким-то причинам не можете использовать наш метод получения готовой этикетки

Пример запроса

    POST /shipments/v2.2/create HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 212
    Content-Type: application/json
    
    {
      "Customer": {
        "FullName": "Иван Иванов",
        "Phone": "89032556522"
      },
      "Id": "ART90001",
      "ShopId": "M001",
      "Value": {
        "FromCustomer": 1000,
        "Mortgage": 900
      },
      "Weight": 0.1,
      "AcceptancePoint": "Msc",
      "IsPartialDelivery": false,
      "DeliveryCostForCustomer": null,
      "Items": [
        {
          "Artikul": "ART000001",
          "Barcode": "1234567890"
          "Name": "Вертолет желтый",
          "Price": 123.42,
          "ClientPrice": 123.42,
          "Amount": 2,
          "NdsRateEnum": 20,
          "NdsSum": 24.68
        }
      ]
    }
  
Описание схемы передаваемых в запрос данных
ShipmentModel
Наименование Тип Обязательно Описание
Customer CustomerModel Да Покупатель
Id string Да Идентификатор посылки партнера. Вся дальнейшая работа с заказом в API идет через него.
ShopId string Да Код точки, полученый из виджета определения точки доставки или списка точек
Value ShipmentValueModel Да Информация о стоимости посылки
Weight number Да Вес посылки в килограммах (от 0.01 до 9.99)
AcceptancePoint string Нет Склад приемки посылки. По умолчанию Msc. Доступные варианты см. тут
Внимание. Возможность отправить посылку через указанный склад можно определить в методе Получение списка точек доставки. Версия 2
IsPartialDelivery bool Нет Доступна частичная выдача. По умолчанию - false
DeliveryCostForCustomer number Нет Стоимость доставки для клиента. Обязательно в случае частичной выдачи.
Items ShipmentItemModel[] Нет Список содержимого посылки
CustomerModel
Наименование Тип Обязательно Описание
FullName string Да Фамилия Имя Отчество (не более 80 символов)
Phone string Да Телефон. Для Связного требуется корректный мобильный номер - последние 10 значащих цифр начинаются с 9ки
ShipmentValueModel
Наименование Тип Обязательно Описание
FromCustomer number Да Сумма которую необходимо заплатить покупателю на месте. В случае частичной выдачи должна быть равна DeliveryCostForCustomer + Сумма clientPrice * amount по всем товарам
Mortgage number Да Страховая сумма
ShipmentItemModel
Наименование Тип Обязательно Описание
Artikul string Да Артикул товара (не более 25 символов)
Barcode string Нет Штрих-код товара (не более 128 символов)
Name string Да Наименование товара (не более 128 символов)
Price number Да Оценочная стоимость единицы товара (не меньше 0)
ClientPrice number Нет Стоимость единицы товара для клиента (не меньше 0). Обязательно в случае частичной выдачи
Amount number Да Кол-во товара (не меньше 1)
NdsRate number Нет Ставка НДС (0-100). По умолчанию 20. ПОЛЕ УСТАРЕВШЕЕ. ИСПОЛЬЗУЙТЕ NdsRateEnum
NdsRateEnum enumeration Нет Ставка НДС. По умолчанию "НДС 20%".
Возможные значения:
  • 0 - Без НДС
  • 1 - НДС 0%
  • 10 - НДС 10%
  • 18 - НДС 18%
  • 20 - НДС 20%
  • 110 - НДС 10/110
  • 120 - НДС 20/120
NdsSum number Нет Сумма НДС за единицу товара
Dimensions ShipmentDimensionsModel Нет Габариты посылки. Не передавать. Функционал в стадии тестирования.

Ответ сервера 201 (Created) - Подтверждение того что посылка принята сервером

Описание схемы данных ответа
CreateShipmentResultModel
Наименование Тип Описание
SerialNumber string Серийный номер посылки
ShipmentNumber string Номер посылки в системе ДРХ Сервис без префикса 000000001
Weight number Вес посылки в граммах
Branch string Филиал, к которому относится точка. Актуально только для Евросети
SubBranch string Субфилиал, к которому относится точка. Актуально только для Евросети
ShopId string Код точки
ShopName string Наименование точки
Address string Адрес точки
CustomerName string ФИО получателя
CustomerPhone string Телефон получателя
Partner string Наименование вашего интернет-магазина
Id string Идентификатор посылки в системе партнера
Sender string Константа ООО «ДРХ Сервис»
DeliveryAgent string Агент доставки - юрлицо оператора доставки
DeliveryOperator number 1 - Евросеть, 2 - Связной
BarCode string Номер, который необходимо закодировать в Code39
AcceptancePoint string Место приемки
PartnerOrderNumber string Номер заказа, который был указан, если посылка создавалась методом createExtended

4. Формирование входящей посылки. Расширенная версия

Метод устаревший. Следует использовать Формирование входящей посылки. Версия 2.

Отличается от метода Формирование входящей посылки возможностью автоматического добавления стоимости доставки к сумме, которую необходимо получить с клиента и указания номера заказа, если заказ отправляется несколькими посылками

Внимание! Если вы не уверены на 100% в необходимости дополнительных возможностей, то следует использовать Формирование входящей посылки

POST запрос

Описание схемы передаваемых в запрос данных
ShipmentCreateExtendedModel
Наименование Тип Обязательно Описание
Customer CustomerModel Да Покупатель
Id string Да Идентификатор посылки партнера. Вся дальнейшая работа с заказом в API идет через него.
ShopId string Да Код точки, полученый из виджета определения точки доставки или списка точек (параметр OwnerCode)
Value ShipmentValueModel Да Информация о стоимости посылки
Weight number Да Вес посылки в килограммах (от 0.01 до 7.99)
AcceptancePoint string Нет Склад приемки посылки. По умолчанию Msc. Доступные варианты см. тут
Внимание. Возможность отправить посылку через указанный склад можно определить в методе Получение списка точек доставки. Версия 2
IsPartialDelivery bool Нет Доступна частичная выдача. По умолчанию - false
DeliveryCostForCustomer number Нет Стоимость доставки для клиента. Обязательно в случае частичной выдачи.
Items ShipmentItemModel[] Нет Список содержимого посылки
AddDeliveryPriceToSumFromClient boolean Да Необходимо прибавить стоимость доставки к сумме с клиента
OrderNumber string Нет Номер заказа. Следует передавать, если заказ отправляется несколькими посылками
CustomerModel
Наименование Тип Обязательно Описание
FullName string Да Фамилия Имя Отчество (не более 80 символов)
Phone string Да Телефон. Для Связного требуется корректный мобильный номер - последние 10 значащих цифр начинаются с 9ки
ShipmentValueModel
Наименование Тип Обязательно Описание
FromCustomer number Да Сумма которую необходимо заплатить покупателю на месте. В случае частичной выдачи должна быть равна DeliveryCostForCustomer + Сумма clientPrice * amount по всем товарам
Mortgage number Да Страховая сумма
ShipmentItemModel
Наименование Тип Обязательно Описание
Artikul string Да Артикул товара (не более 25 символов)
Barcode string Нет Штрих-код товара (не более 128 символов)
Name string Да Наименование товара (не более 128 символов)
Price number Да Стоимость единицы товара (не меньше 0)
ClientPrice number Нет Стоимость единицы товара для клиента (не меньше 0). Обязательно в случае частичной выдачи
Amount number Да Кол-во товара (не меньше 1)
NdsRate number Нет Ставка НДС (0-100). По умолчанию 20. ПОЛЕ УСТАРЕВШЕЕ. ИСПОЛЬЗУЙТЕ NdsRateEnum
NdsRateEnum enumeration Нет Ставка НДС. По умолчанию "НДС 20%".
Возможные значения:
  • 0 - Без НДС
  • 1 - НДС 0%
  • 10 - НДС 10%
  • 18 - НДС 18%
  • 20 - НДС 20%
  • 110 - НДС 10/110
  • 120 - НДС 20/120
NdsSum number Нет Сумма НДС за единицу товара

Ответ сервера 201(Created) - Подтверждение того что посылка принята сервером

Описание схемы данных ответа
CreateShipmentResultModel
Наименование Тип Описание
SerialNumber string Серийный номер посылки
ShipmentNumber string Номер посылки в системе ДРХ Сервис без префикса 000000001
Weight number Вес посылки в граммах
Branch string Филиал, к которому относится точка. Актуально только для Евросети
SubBranch string Субфилиал, к которому относится точка. Актуально только для Евросети
ShopId string Код точки
ShopName string Наименование точки
Address string Адрес точки
CustomerName string ФИО получателя
CustomerPhone string Телефон получателя
Partner string Наименование вашего интернет-магазина
Id string Идентификатор посылки в системе партнера
Sender string Константа ООО «ДРХ Сервис»
DeliveryAgent string Агент доставки - юрлицо оператора доставки
DeliveryOperator number 1 - Евросеть, 2 - Связной
BarCode string Номер, который необходимо закодировать в Code39
AcceptancePoint string Место приемки
PartnerOrderNumber string Номер заказа, который был указан при создании посылки
Пример запроса JSON

    POST /shipments/v2.2/createExtended HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 379
    Content-Type: application/json

    {
      "Customer": {
        "FullName": "Иван Иванов",
        "Phone": "89032556522"
      },
      "Id": "ART90001",
      "ShopId": "M001",
      "Value": {
        "FromCustomer": 1000,
        "Mortgage": 900
      },
      "Weight": 0.1,
      "AcceptancePoint": "Msc",
      "IsPartialDelivery": false,
      "DeliveryCostForCustomer": null,
      "Items": [
        {
          "Artikul": "ART000001",
          "Barcode": "1234567890"
          "Name": "Вертолет желтый",
          "Price": 123.42,
          "ClientPrice": 123.42,
          "Amount": 2,
          "NdsRateEnum": 20,
          "NdsSum": 24.68
        }
      ],
      "AddDeliveryPriceToSumFromClient": true,
      "OrderNumber": "OrdNum12345"
    }
  
Пример запроса XML
Для использования XML в заголовке запроса необходимо указывать следующие параметры:
Content-Type: application/xml
Accept: application/xml

    POST /shipments/v2.2/createExtended HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 379
    Content-Type: application/xml
    Accept: application/xml

    <ShipmentCreateExtendedModel
        xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://schemas.datacontract.org/2004/07/PartnerDelivery.WebApi.Host.Controllers.Shipments.V2._2Models">
        <Customer>
          <FullName>Test</FullName>
          <Phone>123456789</Phone>
        </Customer>
        <Id>Xm1l1232456</Id>
        <ShopId>M001</ShopId>
        <Value>
          <FromCustomer>100</FromCustomer>
          <Mortgage>100</Mortgage>
        </Value>
        <Weight>2</Weight>
        <AcceptancePoint>Msc</AcceptancePoint>
        <AddDeliveryPriceToSumFromClient>true</AddDeliveryPriceToSumFromClient>
        <OrderNumber>OrdNum12345</OrderNumber>
    </ShipmentCreateExtendedModel>
  

Ответ сервера 201(Created) - Подтверждение того что посылка принята сервером

Пример ответа

    <CreateShipmentExtendedResultModel
      xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://schemas.datacontract.org/2004/07/PartnerDelivery.WebApi.Host.Controllers.Shipments.V2._2Models">
      <SerialNumber>000000001292412194</SerialNumber>
      <DeliveryPrice>162.50</DeliveryPrice>
      <SumFromClient>262.50</SumFromClient>
    </CreateShipmentExtendedResultModel>
  

Описание моделей см. в примере для JSON

5. Получение файла наклейки

GET запрос

Пример запроса
    
    GET /shipments/v2.2/ART90001/receipt HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
  

В ответ будет возвращен файл наклейки в формате, выбранном в личном кабинете (html или pdf)

6. Получение состояния посылок

POST запрос

Пример запроса
    
    POST https://api.drhl.ru/shipments/v2.2/statusBatch HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 74
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Type: application/json

    {
      "ShipmentIds": [
        "ShipmentId1", "ShipmentId2", "ShipmentId3"
      ]
    }
  
Ограничение на запрос - не более 1000 посылок в одном запросе.
Пример ответа
    
    [
      {
        "ShipmentId": "ShipmentId1",
        "Date": "2016-08-16T17:50:00.77+03:00",
        "Name": "Выдан клиенту",
        "Status": 70
      },
      {
        "ShipmentId": "ShipmentId2",
        "Date": "2016-08-19T14:22:23.23+03:00",
        "Name": "Денежные средства за заказ переведены",
        "Status": 75
      },
      {
        "ShipmentId": "ShipmentId3",
        "Date": "2016-09-28T21:22:40.32+03:00",
        "Name": "Произведен возврат заказа",
        "Status": 125
      }
    ]
  
Если в запросе присутствует идентификатор посылки, которая не была добавлена ранее в систему, в ответе информации о данной посылке не будет.

Возможные статусы см. Возможные статусы

7. Получение истории состояния посылок

POST запрос

Пример запроса
    
    POST https://api.drhl.ru/shipments/v2.2/statusHistoryBatch HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 74
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Type: application/json

    {
      "ShipmentIds": [
        "ShipmentId1", "ShipmentId2"
      ]
    }
  
Ограничение на запрос - не более 1000 посылок в одном запросе.
Пример ответа
    
    [
      {
        "ShipmentId": "ShipmentId1",
        "Entries": [
           {
            "Date": "2017-09-29T09:05:28.12+03:00",
            "Name": "Заказ создан в системе ДРХ Логистик",
            "Status": 10
          },
          {
            "Date": "2017-09-29T19:26:10.24+03:00",
            "Name": "Заказ готов к отправке в ПВЗ",
            "Status": 14
          }
        ]
      },
      {
        "ShipmentId": "ShipmentId2",
        "Entries": [
          {
            "Date": "2017-09-21T12:55:37.84+03:00",
            "Name": "Заказ создан в системе ДРХ Логистик",
            "Status": 10
          },
          {
            "Date": "2017-09-21T19:13:33.38+03:00",
            "Name": "Заказ готов к отправке в ПВЗ",
            "Status": 14
          },
          {
            "Date": "2017-09-22T00:46:44.95+03:00",
            "Name": "Заказ отправлен в ПВЗ",
            "Status": 50
          },
          {
            "Date": "2017-09-25T10:46:02.99+03:00",
            "Name": "Заказ доставлен в ПВЗ",
            "Status": 55
          },
          {
            "Date": "2017-09-28T17:10:00.17+03:00",
            "Name": "Выдан клиенту",
            "Status": 70
          }
        ]
      }
    ]
  
Если в запросе присутствует идентификатор посылки, которая не была добавлена ранее в систему, в ответе информации о данной посылке не будет.
Возможные статусы
Код Наименование
10 Заказ создан в системе ДРХ Логистик
14 Заказ готов к отправке в ПВЗ
50 Заказ отправлен в ПВЗ
55 Заказ доставлен в ПВЗ
70 Выдан клиенту
71 Выдан клиенту частично
75 Денежные средства за заказ переведены. Финальный статус.
80 Заказ отправлен обратно (отказ клиента)
85 Заказ отправлен обратно (не востребован)
124 Возврат получен на складе ДРХ
125 Произведен возврат заказа. Финальный статус.
253 Отменен партнером. Финальный статус.
255 Отменен администратором. Финальный статус.
248 Заказ утерян/поврежден. Финальный статус.
251 Не принят складом агента. Финальный статус.

8. Получение ссылки для просмотра статуса посылки получателем

GET запрос

Пример запроса
    
    GET https://api.drhl.ru/shipments/v2.2/ART90001/clientStatusUrl HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 0
    X-ApiKey: 00000000-0000-0000-0000-000000000
  
Пример ответа
    
    {
      "Url": "http://drhl.ru/XXXX"
    }
  

9. Получение состояния посылок для получателей

POST запрос

Пример запроса
    
    POST https://api.drhl.ru/shipments/v2.2/clientStatusBatch HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 74
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Type: application/json

    {
      "ShipmentIds": [
        "ShipmentId1", "ShipmentId2", "ShipmentId3"
      ]
    }
  
Ограничение на запрос - не более 1000 посылок в одном запросе.

Пример ответа

    
    [
      {
        "ShipmentId": "ShipmentId1",
        "Date": "2016-08-16T17:50:00.77+03:00",
        "Name": "Заказ принят службой доставки",
        "Status": 251
      },
      {
        "ShipmentId": "ShipmentId2",
        "Date": "2016-08-19T14:22:23.23+03:00",
        "Name": "Заказ доставлен в ПВЗ",
        "Status": 55
      },
      {
        "ShipmentId": "ShipmentId3",
        "Date": "2016-09-28T21:22:40.32+03:00",
        "Name": "Заказ выдан",
        "Status": 70
      }
    ]
  
Если в запросе присутствует идентификатор посылки, которая не была добавлена ранее в систему, в ответе информации о данной посылке не будет.

Возможные статусы, см. Возможные статусы

10. Получение истории состояния посылок для получателей

POST запрос

Пример запроса
    
    POST https://api.drhl.ru/shipments/v2.2/clientStatusHistoryBatch HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 74
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Type: application/json

    {
      "ShipmentIds": [
        "ShipmentId1", "ShipmentId2"
      ]
    }
  
Ограничение на запрос - не более 1000 посылок в одном запросе.
Пример ответа
    
  [
    {
      "ShipmentId": "ShipmentId1",
      "Entries": [
        {
          "Date": "2016-08-16T17:50:00.77+03:00",
          "Name": "Заказ принят службой доставки",
          "Status": 251
        }
      ]
    },
    {
      "ShipmentId": "ShipmentId2",
      "Entries": [
        {
          "Date": "2016-08-16T10:50:00.77+03:00",
          "Name": "Посылка не передана в службу доставки",
          "Status": 249
        },
        {
          "Date": "2016-08-16T17:50:00.77+03:00",
          "Name": "Заказ принят службой доставки",
          "Status": 251
        },
        {
          "Date": "2016-08-17T10:50:00.77+03:00",
          "Name": "Заказ доставлен в ПВЗ",
          "Status": 55
        }
      ]
    }
  ]

Если в запросе присутствует идентификатор посылки, которая не была добавлена ранее в систему, в ответе информации о данной посылке не будет.
Возможные статусы
Код Наименование
50 Заказ в пути
55 Заказ доставлен в ПВЗ
70 Заказ выдан
75 Заказ отправлен обратно
249 Посылка не передана в службу доставки
250 Заказ ожидает передачи в службу доставки
251 Заказ принят службой доставки

11. Получение списка точек доставки

Метод устаревший. Следует использовать Получение списка точек доставки. Версия 2

GET запрос

Пример запроса

    GET https://api.drhl.ru/shipments/v2.2/deliveryPoints HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
  
Пример ответа

    {
      "Points": [
        {
          "DeliveryOperatorId": 1,
          "DeliveryOperator": "Евросеть",
          "StickerType": 1,
          "Address": "Строителей пр-кт 45А",
          "Branch": "Филиал Поволжский",
          "City": "Пенза",
          "CityId": 1,
          "CityKladr": "1900000400000",
          "DeliveryCost1": 1000,
          "DeliveryCost2": 1100,
          "DeliveryCost3": 1200,
          "DeliveryCost4": 1300,
          "DeliveryCost5": 1400,
          "DeliveryCost6": 1500,
          "DeliveryCost7": 1600,
          "DeliveryCost8": 1700,
          "DeliveryTime": "6-13 дн.",
          "IsActive": true,
          "Latitude": 53.231193,
          "Longitude": 44.996101,
          "Name": "Пенза-21",
          "OwnerCode": "P721",
          "Region": "Пензенская обл",
          "ReturnCost": 2000,
          "ReturnCost1": 500,
          "ReturnCost2": 550,
          "ReturnCost3": 600,
          "ReturnCost4": 650,
          "ReturnCost5": 700,
          "ReturnCost6": 750,
          "ReturnCost7": 800,
          "ReturnCost8": 850,
          "SubBranch": "Субфилиал Пенза",
          "Comment": "В период новогодних праздников точка закрыта",
          "OpenTime": "08:00",
          "CloseTime": "22:00"
        },
        {
          "DeliveryOperatorId": 1,
          "DeliveryOperator": "Евросеть",
          "StickerType": 1,
          "Address": "Ивана Франко 38",
          "Branch": "Филиал Уральский",
          "City": "Пермь",
          "CityId": 2,
          "CityKladr": "2000000400000",
          "DeliveryCost1": 1000,
          "DeliveryCost2": 1100,
          "DeliveryCost3": 1200,
          "DeliveryCost4": 1300,
          "DeliveryCost5": 1400,
          "DeliveryCost6": 1500,
          "DeliveryCost7": 1600,
          "DeliveryCost8": 1700,
          "DeliveryTime": "8-15 дн.",
          "IsActive": true,
          "Latitude": 58.063178,
          "Longitude": 56.354552,
          "Name": "Пермь-85, Вышка 2",
          "OwnerCode": "U941",
          "Region": "Пермский край",
          "ReturnCost": 2000,
          "ReturnCost1": 500,
          "ReturnCost2": 550,
          "ReturnCost3": 600,
          "ReturnCost4": 650,
          "ReturnCost5": 700,
          "ReturnCost6": 750,
          "ReturnCost7": 800,
          "ReturnCost8": 850,
          "SubBranch": "Субфилиал Пермь",
          "Comment": "",
          "OpenTime": "08:00",
          "CloseTime": "24:00"
        }
      ]
    }
  
Описание схемы данных ответа
GetDeliveryPointsModel
Наименование Тип Описание
Points DeliveryPointDto[] Точки доставки
DeliveryPointDto
Наименование Тип Описание
Address string Адрес точки доставки
Branch string Филиал, к которому относится точка. Актуально только для Евросети
SubBranch string Субфилиал, к которому относится точка. Актуально только для Евросети
City string Наименование населенного пункта
CityId number Id населенного пункта в системе
CityKladr string КЛАДР населенного пункта
DeliveryCost1 number Стоимость доставки до 1кг
DeliveryCost2 number Стоимость доставки до 2кг
DeliveryCost3 number Стоимость доставки до 3кг
DeliveryCost4 number Стоимость доставки до 4кг
DeliveryCost5 number Стоимость доставки до 5кг
DeliveryCost6 number Стоимость доставки до 6кг
DeliveryCost7 number Стоимость доставки до 7кг
DeliveryCost8 number Стоимость доставки до 8кг
DeliveryTime string Срок доставки через московский склад вида "Х-Y дн." или "Х дн."
IsActive boolean Если true - точка работает, иначе нет - отправка не возможна
Latitude number Широта
Longitude number Долгота
Name string Наименование точки
OwnerCode string Код точки
Region string Наименование региона
ReturnCost number Поле устаревшее - не использовать
ReturnCost1 number Стоимость возврата до 1кг
ReturnCost2 number Стоимость возврата до 2кг
ReturnCost3 number Стоимость возврата до 3кг
ReturnCost4 number Стоимость возврата до 4кг
ReturnCost5 number Стоимость возврата до 5кг
ReturnCost6 number Стоимость возврата до 6кг
ReturnCost7 number Стоимость возврата до 7кг
ReturnCost8 number Стоимость возврата до 8кг
Comment string Комментарий к работе точки
OpenTime string Время открытия точки в формате ХХ:ХХ. Может быть не указано.
CloseTime string Время закрытия точки в формате ХХ:ХХ. Может быть не указано.
DeliveryOperatorId number Ид оператора доставки. 1 - Евросеть, 2- Связной
DeliveryOperator string Наименование оператора доставки.
StickerType number Тип этикетки. 1 - Евросеть, 2 - Связной

12. Получение списка точек доставки. Версия 2

GET запрос

Пример запроса

    GET https://api.drhl.ru/shipments/v2.2/deliveryPoints2 HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
  
Пример ответа

    {
      "Points": [
        {
          "DeliveryOperator": {
            "Id": 1,
            "Name": "Евросеть"
          },
          "StickerType": 1,
          "ShopId": "KD79",
          "Name": "Майкоп-10",
          "ZipCode": "385006",
          "Address": "Привокзальная 122",
          "Metro": null,
          "Branch": "Филиал Южный",
          "SubBranch": "Субфилиал Краснодар-Восток",
          "Latitude": 44.621762,
          "Longitude": 40.10357,
          "Region": {
            "Id": 1,
            "Name": "Адыгея Респ"
          },
          "City": {
            "Kladr": "0100000100000",
            "Id": 622,
            "Name": "Майкоп"
          },
          "DeliveryTime": {
            "Msc": {
              "From": 5,
              "To": 10
            }
          },
          "OpenTime": "10:00",
          "CloseTime": "21:30",
          "Comment": null,
          "Directions": null,
          "DeliveryCost1": 346.8,
          "DeliveryCost2": 364.8,
          "DeliveryCost3": 382.8,
          "DeliveryCost4": 400.8,
          "DeliveryCost5": 463.7,
          "DeliveryCost6": 495.7,
          "DeliveryCost7": 530.7,
          "DeliveryCost8": 568.7,
          "ReturnCost1": 173.4,
          "ReturnCost2": 182.4,
          "ReturnCost3": 191.4,
          "ReturnCost4": 200.4,
          "ReturnCost5": 231.85,
          "ReturnCost6": 247.85,
          "ReturnCost7": 265.35,
          "ReturnCost8": 284.35
        },
        {
          "DeliveryOperator": {
            "Id": 2,
            "Name": "Связной"
          },
          "ShopId": "2010459",
          "Name": "СПб Народная39",
          "ZipCode": "193079",
          "Address": "Народная ул, дом 39, Литера Б, помещение 1-Н",
          "Metro": "Ломоносовская",
          "Branch": "СПБ",
          "SubBranch": null,
          "Latitude": 59.881882,
          "Longitude": 30.471861,
          "Region": {
            "Id": 78,
            "Name": "Санкт-Петербург г"
          },
          "City": {
            "Kladr": "7800000000000",
            "Id": 937,
            "Name": "Санкт-Петербург"
          },
          "DeliveryTime": {
            "Msc": {
              "From": 3,
              "To": 7
            },
            "Spb": {
              "From": 2,
              "To": 6
            }
          },
          "OpenTime": "09:00",
          "CloseTime": "22:00",
          "Comment": null,
          "Directions": "Станция метро «Дыбенко». Далее необходимо пройти по проспекту Большевиков и повернуть на Народную улицу. На пересечении с Дальневосточным проспектов будет расположен магазин (по левой стороне).",
          "DeliveryCost1": 193,
          "DeliveryCost2": 202,
          "DeliveryCost3": 211,
          "DeliveryCost4": 220,
          "DeliveryCost5": 250.9,
          "DeliveryCost6": 266.9,
          "DeliveryCost7": 283.9,
          "DeliveryCost8": 302.9,
          "ReturnCost1": 96.5,
          "ReturnCost2": 101,
          "ReturnCost3": 105.5,
          "ReturnCost4": 110,
          "ReturnCost5": 125.45,
          "ReturnCost6": 133.45,
          "ReturnCost7": 141.95,
          "ReturnCost8": 151.45
        }
      ]
  }
  
Описание схемы данных ответа
GetDeliveryPoints2Model
Наименование Тип Описание
Points DeliveryPoint2Dto[] Точки доставки
DeliveryPoint2Dto
Наименование Тип Описание
DeliveryOperator SimpleDto Оператор доставки. Варианты: 1 - Евросеть, 2 - Связной
StickerType SimpleDto Тип этикетки. Варианты: 1 - Евросеть, 2 - Связной
ShopId string Код точки
Name string Наименование точки
ZipCode string Почтовый индекс точки
Address string Адрес точки
Metro string Ближайшая станция метро
Branch string Филиал, к которому относится точка.
SubBranch string Субфилиал, к которому относится точка. Указан только у точек Евросети
Latitude number Широта
Longitude number Долгота
Region SimpleDto Регион
City CityDto Населенный пункт
DeliveryTime Словарь. Ключ - маршрут Route, значение - DeliveryTimeDto Сроки доставки.
Если склада приемки нет среди ключей этого словаря, значит доставка через этот склад на эту точку недоступна.
OpenTime string Время открытия точки в формате ХХ:ХХ. Может быть не указано.
CloseTime string Время закрытия точки в формате ХХ:ХХ. Может быть не указано.
Comment string Комментарий к работе точки
Directions string Указания как найти точку
DeliveryCost1 number Стоимость доставки до 1кг
DeliveryCost2 number Стоимость доставки до 2кг
DeliveryCost3 number Стоимость доставки до 3кг
DeliveryCost4 number Стоимость доставки до 4кг
DeliveryCost5 number Стоимость доставки до 5кг
DeliveryCost6 number Стоимость доставки до 6кг
DeliveryCost7 number Стоимость доставки до 7кг
DeliveryCost8 number Стоимость доставки до 8кг
ReturnCost1 number Стоимость возврата до 1кг
ReturnCost2 number Стоимость возврата до 2кг
ReturnCost3 number Стоимость возврата до 3кг
ReturnCost4 number Стоимость возврата до 4кг
ReturnCost5 number Стоимость возврата до 5кг
ReturnCost6 number Стоимость возврата до 6кг
ReturnCost7 number Стоимость возврата до 7кг
ReturnCost8 number Стоимость возврата до 8кг
SimpleDto
Наименование Тип Описание
Id number Идентификатор объекта
Name string Наименование объекта
CityDto
Наименование Тип Описание
Kladr string Кладр населенного пункта
Id number Идентификатор населенного пункта
Name string Наименование населенного пункта
DeliveryTimeDto
Наименование Тип Описание
From number Срок доставки От
To number Срок доставки По

13. Получение точной даты доставки на точку

GET запрос

Описание схемы передаваемых в запрос данных
Наименование Тип Обязательно Описание
shopId string Да Код точки
route string Нет Маршрут. По умолчанию Msc (обычный маршрут)
toDrhlDeliveryDate datetime Да Дата передачи посылки на склад ДРХ Логистик (до 17:00). Дата в формате ГГГГ-ММ-ДД
Пример запроса
    
    GET https://api.drhl.ru/shipments/v2.2/M001/2016-01-30/exactdeliverydate HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
  
Пример ответа
    
    {
      "DeliveryDate": "2016-02-01T00:00:00"
    }
  
Если точка не имеет точного расписания доставки, будет возвращен ответ с кодом 400 и текстом “Выбранная точка не имеет точного расписания доставки.”

14. Создание акта приема-передачи (ПП)

POST запрос

Пример запроса

    
    POST https://api.drhl.ru/shipments/v2.2/transferAct/create HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 212
    Content-Type: application/json

    {
      "PartnerShipmentIds": [
        "Id1",
        "Id2"
      ]
    }
  
Описание схемы передаваемых в запрос данных
    
    {
      "PartnerShipmentIds": [
        "Id1", // идентификатор посылки 1 (переданный партнером при создании посылки в поле Id)
        "Id2" // идентификатор посылки 2 (переданный партнером при создании посылки в поле Id)
      ]
    }
  
Посылка должна быть со статусом “Посылка создана в системе ДРХ Логистик” (249) и не находиться ни в одном из неотмененных актов ПП.

Ответ сервера 201(Created) - подтверждение того что акт ПП создан

Описание схемы данных ответа
    
    {
      "Id": 12 // идентификатор акта ПП, по которому можно его получить или отменить
    }
  

15. Получение акта приема-передачи (ПП)

GET запрос

Пример запроса
    
    GET https://api.drhl.ru/shipments/v2.2/transferAct/12/getFile HTTP/1.1
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 212
    Content-Type: application/json
  

Ответ сервера: 200 (ОК) с xlsx файлом акта ПП

16. Отмена акта приема-передачи (ПП)

POST запрос

Пример запроса
    
    POST https://api.drhl.ru/shipments/v2.2/transferAct/12/cancel
    Host: api.drhl.ru
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Length: 212
    Content-Type: application/json
  

Ответ сервера: 200 (ОК)

17. Информация по посылкам

POST запрос

Пример запроса

    POST https://api.drhl.ru/shipments/v2.2/info HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 74
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Type: application/json

    {
      "ShipmentIds": [
        "ShipmentId1",
        "ShipmentId2"
      ]
    }
  
Ограничение на запрос - не более 1000 посылок в одном запросе.
Пример ответа

    {
      "ShipmentId1": {
        "SerialNumber": "000000001999999999",
        "ShipmentNumber": "999999999",
        "Weight": 220,
        "Branch": "Филиал Центральный",
        "SubBranch": "Субфилиал Юго-восточный",
        "ShopId": "RE37",
        "ShopName": "Тамбов-2",
        "Address": "Советская ул 179",
        "CustomerName": "Иванов Иван Иванович",
        "CustomerPhone": "79123457890",
        "Partner": "Test Partner",
        "Id": "ShipmentId1",
        "Sender": "ООО «ДРХ Сервис»",
        "DeliveryAgent": "ООО «Евросеть Ритейл»",
        "DeliveryOperator": 1,
        "BarCode": "000000001540108659",
        "PartnerOrderNumber": null,
        "Route": "Москва",
        "DeliveryPrice": 100,
        "ReturnPrice": 100,
        "CodFee": 2.67,
        "InsuranceFee": 0.4
      },
      "ShipmentId2": null
    }
  
Если в запросе присутствует идентификатор посылки, которая не была добавлена ранее в систему, в ответе значение словаря по этой посылке будет null.
Описание схемы данных ответа
ShipmentInfoResultModel
Наименование Тип Описание
SerialNumber string Серийный номер посылки
ShipmentNumber string Номер посылки в системе ДРХ Сервис без префикса 000000001
Weight number Вес посылки в граммах
Branch string Филиал, к которому относится точка. Актуально только для Евросети
SubBranch string Субфилиал, к которому относится точка. Актуально только для Евросети
ShopId string Код точки
ShopName string Наименование точки
Address string Адрес точки
CustomerName string ФИО получателя
CustomerPhone string Телефон получателя
Partner string Наименование вашего интернет-магазина
Id string Идентификатор посылки в системе партнера
Sender string Константа ООО «ДРХ Сервис»
DeliveryAgent string Агент доставки - юрлицо оператора доставки
DeliveryOperator number 1 - Евросеть, 2 - Связной
BarCode string Номер, который необходимо закодировать в Code39
PartnerOrderNumber string Номер заказа, который был указан, если посылка создавалась методом createExtended
Route string Маршрут
DeliveryPrice number Тариф за доставку
ReturnPrice number Тариф за возврат
CodFee number Комиссия за перевод наложенного платежа
InsuranceFee number Комиссия за страховку

18. Опись возвращаемой после частичной выдачи посылки

POST запрос

Пример запроса

    POST https://api.drhl.ru/shipments/v2.2/returningPartialShipmentsInventory HTTP/1.1
    Host: api.drhl.ru
    Content-Length: 74
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
    Content-Type: application/json

    {
      "ShipmentIds": [
        "ShipmentId1",
        "ShipmentId2"
      ]
    }
  
Ограничение на запрос - не более 1000 посылок в одном запросе.
Пример ответа

    {
      "ShipmentId1": [
        {
          "Artikul": "A000001",
          "Barcode": "1234567890",
          "Name": "Вертолет желтый",
          "Amount": 2
        },
        {
          "Artikul": "A000002",
          "Barcode": "8901234556",
          "Name": "Слон синий",
          "Amount": 1
        }
      ],
      "ShipmentId2": null
    }
  
Если в запросе присутствует идентификатор посылки, которая не была добавлена ранее в систему, или заказ не был частично выдан, в ответе значение словаря по этой посылке будет null.
Описание схемы данных ответа
GetReturningInventoryResultModel
Наименование Тип Описание
Артикул string Артикул
Barcode string Штрих-код
Name string Наименование
Amount number Количество

19. Расчет стоимости доставки

POST запрос

Пример запроса

    GET https://api.drhl.ru/shipments/v2.2/calculate?shopId=M001&valueFromCustomer=1000&valueMortgage=100&weight=2.1&dimensions.height=10&dimensions.length=20&dimensions.width=30 HTTP/1.1
    Host: api.drhl.ru
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
  
Пример ответа

    {
      "DeliveryPrice": 173.7,
      "ReturnPrice": 86.85,
      "CodFee": 20,
      "InsuranceFee": 0.8
    }
  
Описание схемы данных запроса
CalculateModel
Наименование Тип Описание
ShopId string Код точки
ValueFromCustomer number Сумма наложенного платежа
ValueMortgage number Оценочная стоимость
Weight number Вес в килограммах
Dimensions ShipmentDimensionsModel Нет Габариты посылки в см. Если указаны, то мы сразу сможем сказать, проходит посылка по габаритам или нет, если не указаны, то сообщим об этом в момент приемки на складе.
Описание схемы данных ответа
CalculateResultModel
Наименование Тип Описание
DeliveryPrice number Тариф за доставку
ReturnPrice number Тариф за возврат
CodFee number Комиссия за перевод наложенного платежа
InsuranceFee number Комиссия за страховку

20. Справочник населенных пунктов

Справочник меняется редко. Вызывать чаще, чем раз в неделю, смысла нет.

POST запрос

Пример запроса

    POST https://api.drhl.ru/shipments/v2.2/cities HTTP/1.1
    Host: api.drhl.ru
    Accept: application/json
    X-ApiKey: 00000000-0000-0000-0000-000000000
  
Пример ответа

    {
    "Cities": [
      {
        "Id": 19,
        "Name": "Абаза",
        "Region": {
          "Id": 19,
          "Name": "Хакасия Респ"
        },
        "Kladr": "1900000400000",
        "Price1": 100.1,
        "Price2": 200.1,
        "Price3": 300.1,
        "Price4": 400.1,
        "Price5": 500.1,
        "Price6": 600.1,
        "Price7": 700.1,
        "Price8": 800.1,
        "ReturnPrice1": 100.1,
        "ReturnPrice2": 200.1,
        "ReturnPrice3": 300.1,
        "ReturnPrice4": 400.1,
        "ReturnPrice5": 500.1,
        "ReturnPrice6": 600.1,
        "ReturnPrice7": 700.1,
        "ReturnPrice8": 800.1
      },
      {
        "Id": 2,
        "Name": "Абакан",
        "Region": {
          "Id": 19,
          "Name": "Хакасия Респ"
        },
        "Kladr": "1900000100000",
        "Price1": 100.1,
        "Price2": 200.1,
        "Price3": 300.1,
        "Price4": 400.1,
        "Price5": 500.1,
        "Price6": 600.1,
        "Price7": 700.1,
        "Price8": 800.1,
        "ReturnPrice1": 100.1,
        "ReturnPrice2": 200.1,
        "ReturnPrice3": 300.1,
        "ReturnPrice4": 400.1,
        "ReturnPrice5": 500.1,
        "ReturnPrice6": 600.1,
        "ReturnPrice7": 700.1,
        "ReturnPrice8": 800.1
      }
    }
  
Описание схемы данных ответа
GetCitiesModel
Наименование Тип Описание
Cities GetCitiesCityModel[] Города
GetCitiesCityModel
Наименование Тип Описание
Id number (целое) Уникальный идентификатор населенного пункта в системе ДРХ
Name string Наименование населенного пункта
Region SimpleDto Регион
Kladr string КЛАДР населенного пункта. Если у населенного пункта изменился кладр, или же в системе ДРХ изначально был указан некорректный, указывается несколько через пробел
Price1-Price8 number Тариф за доставку ДО 1-8 кг
ReturnPrice1-ReturnPrice8 number Тариф за возврат ДО 1-8 кг
SimpleDto
Наименование Тип Описание
Id number Идентификатор объекта
Name string Наименование объекта

Интеграция виджета выбора точки доставки

Внимание! Виджет можно использовать только в системах, доступ к которым может получить любой пользователь интернета. Это ограничение связано с условиями использования Яндекс.Карт
Пример

Страница https://api.drhl.ru/DeliveryPoints/widget – пример интеграции виджета выбора точки доставки для вашего магазина

API
Конструктор
    
    new MapWidget(PARTNER_ID, HTML_CONTAINER_ID, CALLBACK, DATA);
  
Параметры
PARTNER_ID идентификатор партнера
HTML_CONTAINER_ID html id тега, в котором будет находиться виджет
CALLBACK функция, в которую будет передана выбранная точка
DATA необязательный параметр с дополнительными данными:
townId идентификатор населенного пункта, как в списке виджета
hidePriceFromWord если true, в стоимости доставки не будет отображаться слово "от"
Методы
    
    setTown(TOWN_ID)
  
Параметры
TOWN_ID идентификатор населенного пункта. ID тот же, что в списке виджета
Установка виджета
1. Добавить js скрипты яндекс карт и виджета в head страницы Боевой режим:
  
    <script src="//api-maps.yandex.ru/2.1/?lang=ru-RU&apikey=27a7052e-a18a-44b1-8703-c6d29de14712" type="text/javascript"></script>
    <script src="https://api.drhl.ru/api/deliverypoints" type="text/javascript"></script>
  
Тестовый режим:
  
    <script src="//api-maps.yandex.ru/2.1/?lang=ru-RU&apikey=27a7052e-a18a-44b1-8703-c6d29de14712" type="text/javascript"></script>
    <script src="https://api-demo.drhl.ru/api/deliverypoints" type="text/javascript"></script>
  
2. Инициализировать виджет
    
    <script>
    //Эта функция будет вызвана когда точка доставки будет выбрана
    window.onPointSelected = function(deliveryPoint) {
      // описание объекта deliveryPoint
      // {
      //   city: "Москва" //город доставки
      //   region: "Москва г." // регион доставки, необходим для городов, находящихся в нескольких регионах
      //   address: "Кутузовский пр-кт 22", // Адрес точки
      //   deliveryCost1: 1000, // Стоимость доставки до 1кг
      //   deliveryCost2: 1100, // Стоимость доставки до 2кг
      //   deliveryCost3: 1200, // Стоимость доставки до 3кг
      //   deliveryCost4: 1300, // Стоимость доставки до 4кг
      //   deliveryCost5: 1400, // Стоимость доставки до 5кг
      //   deliveryCost6: 1500, // Стоимость доставки до 6кг
      //   deliveryCost7: 1600, // Стоимость доставки до 7кг
      //   deliveryCost8: 1700, // Стоимость доставки до 8кг
      //   hash: "D9B04D555562C41955612352F046E6CE", // Хеш сумма, для валидации подлинности данных для устаревшей тарифной сетки до 4 кг (не использовать, оставлено для совместимости с ранее интегрировавшимися партнерами)
      //   hash8: "31AE97914586F6AA97F52E0AE4B41FD5", // Хеш сумма, для валидации подлинности данных для тарифной сетки до 8 кг на доставку (не использовать, оставлено для совместимости с ранее интегрировавшимися партнерами)
      //   hash16: "5E0680EBB4BC2607EE4875F3C2825C98", // Хеш сумма, для валидации подлинности данных для тарифных сеток до 8 кг на доставку и на возврат
      //   name: "Кутузовский пр-т, 22", // Имя точки
      //   returnCost: 500, // Стоимость возврата (не использовать, оставлено для совместимости с ранее интегрировавшимися партнерами)
      //   returnCost1: 500, // Стоимость возврата до 1кг
      //   returnCost2: 550, // Стоимость возврата до 2кг
      //   returnCost3: 600, // Стоимость возврата до 3кг
      //   returnCost4: 650, // Стоимость возврата до 4кг
      //   returnCost5: 700, // Стоимость возврата до 5кг
      //   returnCost6: 750, // Стоимость возврата до 6кг
      //   returnCost7: 800, // Стоимость возврата до 7кг
      //   returnCost8: 850, // Стоимость возврата до 8кг
      //   shopId: "M354" // Идентификатор точки
      //   deliveryOperatorId: 1 // Идентификатор торговой сети
      //   deliveryOperator: "Евросеть" // Наименование торговой сетиы
      // }
        console.log(deliveryPoint); 
    }

    // partnerId - Идентификатор партнера
    // map - id элемента страницы, куда необходимо вставить виджет. Элемент должен быть не менее 900px в ширину и 720px в высоту
    // для адаптивных интерфейсов ширина 900px должна соблюдаться при ширине экрана более 992px. Высота должна быть 720px всегда
    // onPointSelected - функция, которая будет вызвана после выбора точки пользователем
    var mapWidget = new MapWidget(partnerId, "map", onPointSelected);
    // запустить инициализацию виджета
    mapWidget.init();
  </script>
Параметры виджета

Параметры передаются javascript-объектом последним параметром конструктора виджета.

Наименование Тип Описание
townId townId ИД города, выбранного по умолчанию
height number Высота виджета в пикселях
size string Общий размер виджета (влияет на внешний вид: размер шрифта, отображаются ли картинки и т.п.):
  • xs - очень маленький
  • sm - маленький
  • md - средний
  • lg - большой
balloonParams object Настройки отображения балуна при нажатии на точку
По умолчанию параметры следующие. Для того, чтобы что-то поменять весь объект передавать необязательно, достаточно только поля:
            
            {
              address: {
                visible: true
              },
              storageDays: {
                visible: true
              },
              workingHours: {
                visible: true
              },
              deliveryTime: {
                visible: true
              },
              paymentType: {
                visible: true
              },
              price: {
                visible: true,
                hidePriceFromWord: false
              },
              exactDeliveryBtn: {
                visible: true
              }
            };
          
        
Виджет необходимо инциализировать только один раз, иначе возникнет ошибка.
Хеш сумма для валидации подлинности данных

После получения данных из виджета о выбраной точке и стоимости доставки в данную точку, необходимо удостоверится что покупатель не
подделал данные о стоимости доставки. Для этого необходимо использовать алгоритм указанный ниже.

Используемый в алгоритме параметр partnerApiKey является секретным, поэтому все проверки должны происходить только на серверной
стороне, данный ключ не должен передаваться в браузер.

Хеш сумма (hash16) расчитывается следующим образом:

  1. Создается строка содержащая в себе следующие значения разделенные знаком пробела
    “shopId X-ApiKey deliveryCost1 deliveryCost2 deliveryCost3 deliveryCost4 deliveryCost5 deliveryCost6 deliveryCost7 deliveryCost8 returnCost1 returnCost2 returnCost3 returnCost4 returnCost5 returnCost6 returnCost7 returnCost8”
    Поле X-ApiKey - секретный ключ доступа Остальные поля берутся из объекта deliveryPoint
  2. Строка преобразовывается в массив байт в кодировке UTF-8
  3. Для массива байт расчитывается MD5 Hash
Пример
    
    "MW71 CD5BBABD-A836-444F-A9E9-DF9534810BB5 1000.00 1100.00 1200.00 1300.00 1400.00 1500.00 1600.00 1700.00 550.00 600.00 650.00 700.00 750.00 800.00 850.00"
    Даст хеш сумму 2CD27DC1EB3F3045F905377BDFE05710
  

Интеграция виджета проверки статуса заказа

Пример

Страница https://api.drhl.ru/shipmentStatus/widget – пример интеграции виджета проверки статуса заказа для вашего магазина

API
Конструктор
    
    new ShipmentStatusWidget(PARTNER_WIDGET_KEY, HTML_CONTAINER_ID, CALLBACK);
  
Параметры
PARTNER_WIDGET_KEY ключ партнера для использования виджетов
HTML_CONTAINER_ID html id тега, в котором будет находиться виджет
CALLBACK функция, в которую будет передан статус заказа
Используемый параметр PARTNER_WIDGET_KEY не связан и не является partnerApiKey (X-ApiKey). PARTNER_WIDGET_KEY - уникальный ключ партнера для использования виджетов.
Установка виджета
1. Добавить js скрипт виджета в head страницы Боевой режим:
    
    <script src="https://api.drhl.ru/api/shipmentStatus" type="text/javascript"></script>
  
Тестовый режим:
    
    <script src="https://api-demo.drhl.ru/api/shipmentStatus" type="text/javascript"></script>
  
2. Инициализировать виджет
    
    <script>
      //Эта функция будет вызвана когда будет получен статус заказа
      window.onStatusLoaded = function(data) {
      // Используем полученные данные
       console.log(data);
      };

    // 6CEBB44205DF4FED9B649D15F948135B - Ключ партнера для использования виджета
    // status - id элемента страницы, куда необходимо вставить виджет.
    // виджет растягивается на весь размер элемента
    // рекомендуемые значения - 300px в ширину, 520px в высоту 
    // onStatusLoaded - функция, которая будет вызвана после получения статуса заказа
    var shipmentStatusWidget = new ShipmentStatusWidget("6CEBB44205DF4FED9B649D15F948135B", "status", onStatusLoaded);
    // запустить инициализацию виджета
    shipmentStatusWidget.init();
    </script>
  

Доступные маршруты

В настоящий момент доступны следующие маршруты:

  1. Msc - Обычный маршрут (посылки поедут через центральный склад, расположенный в Москве)
  2. Spb - Сокращенный маршрут (посылки поедут по Северо-Западу, через санкт-петербургский распределительный центр, не заезжая в Москву)