REST-интерфейс системы доставки iRECA: Курьер. Заказы, товары, склады, курьеры, фискальные документы и удалённая фискализация. 93 метода в 21 разделах.
Минимальный сквозной сценарий: от получения токена до созданного заказа, который увидит курьер в приложении.
Получите токен. В web-кабинете диспетчера: «Настройки» → «Магазины» → «+Добавить» свой ресурс. Без web-кабинета — напишите в поддержку, потребуется ИНН компании.
Загрузите справочники. Налоговые ставки, типы платежей и причины отмены заказа создаются в web-кабинете, а читаются через API: налоговые ставки, типы платежей, причины отмены.
Создайте товары.POST /goods — на них будут ссылаться позиции заказа.
Настройте callback.POST /orders/callback — сервис будет сам присылать изменения по заказу, опрашивать API не нужно.
Создайте заказ.POST /orders — заказ появится у курьера в приложении.
Авторизация выполняется по токену. Токен передаётся в заголовке каждого запроса:
HTTP-заголовок
Authorization: Bearer ACCESS_TOKEN
Базовый адрес всех методов:
Base URL
https://api-courier-ireca.softbalance.ru/api/v1
Важно
Токен — это полный доступ к данным вашего ресурса. Не размещайте его в клиентском коде сайта или мобильного приложения: запросы к API должны уходить с вашего сервера.
Загрузите в свою систему справочники: налоговые ставки, типы платежей, причины отмены заказа.
Создайте callback-функцию, чтобы отслеживать изменения по заказу.
Создайте товары.
Создайте заказы.
Без web-кабинета диспетчера
Токен и учётные данные для работы в приложении выдаёт техническая поддержка. Отправьте обращение на ireca@softbalance.ru.
Для регистрации необходимо предоставить ИНН компании.
Важно
При интеграции через web-кабинет ряд сущностей создаётся только в самом кабинете, через API их можно лишь читать: курьеры, налоговые ставки, типы платежей, причины отмены заказа, роли, поставщики.
Если вы пользуетесь web-кабинетом и решите его отключить, все созданные данные сохранятся и останутся доступны по API.
Не передавайте локальное время заведения — пересчитайте его в UTC. Иначе курьер получит заказ со сдвинутым интервалом доставки.
Пагинация
Методы, возвращающие списки, принимают два параметра.
Параметр
Тип
Описание
page
number
Номер страницы, начиная с 1
count
number
Количество элементов на страницу. По умолчанию — 20, максимум — 500
Тело запроса
Методы создания и массового обновления принимают массив объектов, даже если объект один. Заголовок Content-Type: application/json обязателен для POST и PUT.
У большинства ресурсов есть метод POST .../replace — «создать или обновить». Если объект с указанным идентификатором существует, он будет обновлён; если нет — создан. Это удобнее, чем каждый раз проверять существование объекта отдельным запросом.
При возникновении ошибки сервис возвращает объект следующего вида:
Формат ошибки
{
"error": true,
"message": "Модель не существует"
}
В исходной документации этот пример был записан синтаксисом PHP — {"error" => true, …}. Здесь он приведён к настоящему JSON, который и приходит по HTTP.
Коды состояния HTTP
Код
Значение
200
Запрос выполнен, данные в теле ответа
201
Объект создан
204
Выполнено успешно, тело ответа пустое
400
Некорректный запрос
401
Токен не передан или недействителен
403
Недостаточно прав
404
Объект не найден
422
Данные не прошли валидацию
500
Внутренняя ошибка сервиса
Совет
Проверяйте именно код состояния HTTP, а не наличие поля error в теле: при 204 тела ответа нет вовсе.
Alfa! Получение списка заказов, которые изменили свой статус на указанный в запросе, в определенный период. Запрос возвращает массив заказов, которые за указанный в запросе период имели указанный статус доставки.
Если задано, значение этого свойства будет отображаться в приложении вместо значения "orderId".
isInternetPayment
Признак расчета в Интернет. Тэг 1125. Принимает значение "1" или "0". Если стоит значение "1" - заказ оплачен в Интернет и должен быть заполнен еще один атрибут "internetPaymentUrl". По умолчанию установлено значение "0".
internetPaymentUrl
Адрес сайта (места расчета) если 'isInternetPayment' имеет значение '1'. Передается в тэг 1187 "Место расчетов".
GETAlfa! Получение списка заказов, которые изменили свой статус на указанный в запросе, в определенный период. Запрос возвращает массив заказов, которые за указанный в запросе период имели указанный статус доставки.#
/orders
Пример запроса
curl
curl -X GET 'https://api-courier-ireca.softbalance.ru/api/v1/orders' \
-H 'Authorization: Bearer 4066e3217dfd51753d1f52cb7d033fe1'
Ответ
200Запрос выполнен, данные в теле ответа · application/json
Пример тела ответа в исходной документации не приведён.
Массив изменяемых аттрибутов (Для изменения доступны следующие аттрибуты: "statusId", "deliveryStatusId", "returnReasonId", "courierId", "deliveryTimeFrom", "deliveryTimeTo", "addressTo")
statusId
Статус заказа
deliveryStatusId
Статус состояния доставки заказа
returnReasonId
Причина отмены заказа
courierId
Идентификатор курьера
addressTo
Адрес доставки одной строкой
deliveryTimeFrom
Дата и время начиная с которого требуется доставить заказ
deliveryTimeTo
Дата и время к которому требуется доставить заказ
Пример запроса
curl
curl -X PUT 'https://api-courier-ireca.softbalance.ru/api/v1/orders/multipleUpdate' \
-H 'Authorization: Bearer 4066e3217dfd51753d1f52cb7d033fe1' \
-H 'Content-Type: application/json' \
-d '{"orderIds":["209900"],"attributes":{"statusId":1,"deliveryStatusId":11,"returnReasonId":"5276","courierId":"55750","addressTo":"Санкт-Петербург, ул. Передовиков, дом 25, кв 19","deliveryTimeFrom":"2021-06-15 13:21:13","deliveryTimeTo":"2021-06-15 15:21:13"}}'
Платежный агент. Оказание услуг покупателю (клиенту) пользователем, являющимся платежным агентом.
`paying_subagent`
Платежный субагент. Оказание услуг покупателю (клиенту) пользователем, являющимся платежным субагентом.
`attorney`
Поверенный. Осуществление расчета с покупателем (клиентом) пользователем, являющимся поверенным.
`commission_agent`
Комиссионер.Осуществление расчета с покупателем (клиентом) пользователем, являющимся комиссионером.
`another`
Другой тип агента. Осуществление расчета с покупателем (клиентом) пользователем, являющимся агентом и не являющимся банковским платежным агентом (субагентом), платежным агентом (субагентом), поверенным, комиссионером.