Интеграция с API Деловые Линии

Author Автор: Роман Чернышов    Опубликовано: 16 августа 2020

Интеграция с API Деловые ЛинииДоброго времени друзья! Недавно я реализовал функционал интеграции CMS/CRM системы(объединяющей в себе и сайта, и бизнес логику связанную с работой всей компании) одного из своих клиентов с API транспортной компании Деловые Линии, что позволило существенно сократить время на работу с отправлениями грузов, оформлением заявок, отслеживанием, а также работы с отчетами. Для последних я также разработал автоматизированную систему ведения статистики с возможность просмотра данных в разных срезах. Далее обо всем подробнее.

Реализованный функционал

В рамках интеграции CMS/CRM системы с API Деловые Линии, был реализован функционал представляющий собой личный кабинет со следующими разделами:

  • Калькулятор расчета стоимости и сроков доставки груза, с автоматической подгрузкой данных из CRM системы, об отправителе и получателе, а также параметров самого груза;
  • Оформление заявок из личного кабинета, также с автоматической подгрузкой данных из CRM системы, об отправителе и получателе, а также параметров самого груза;
  • Поиск заказов в базе данных Деловых Линий по номеру отправления, дате или диапазону дат;
  • Работа со справочниками: терминалы и ПВЗ, использование кодов КЛАДР, поиск городов;
  • Работа с отчетами, получение данных о грузе(как отправленном от нас, так и поступающем к нам). Получение данных из отчетов о весе, стоимости, сроках. Сохранение данных в систему CRM. Ведение собственной статистики.

Реализованный функционал позволил существенно сократить время на оформление заявок на оправку грузов, из-за автоматического внесения данных об отправителе, получателе и параметрах груза в форму заявки. Ранее приходилось вносить данные вручную, на что уходило достаточно много времени работы менеджера. При большом количестве отправлений, ежедневно на эту простую операцию требовалось 1-2 часа рабочего времени.

Также автоматизация обработки отчетов, позволила собирать и структурировать данные(с возможностью выборки по разным срезам) о грузах направляющихся к нам, в том числе ведение статистики по месячным финансовым затратам на оплату приходящих грузов.

Описание API

На сайте компании Деловые Линии, в разделе для разработчика, предоставлена полная документация по работе с API, описаны все методы(в том числе на английском языке) с передаваемыми и получаемыми в ответ параметрами. Поддерживаются два формате передачи данных XML и JSON. Доступно два пространства методов: публичные методы и методы доступные только авторизированным пользователям. Для авторизации используется APIKey плюс логин и пароль от личного кабинета. Для получения APIKey, необходимо зарегистрироваться на сайте Деловых линий в разделе для разработчика, указав данные о своей компании и для чего вы будите использовать API.

На моя взгляд интересным является то, что одну учетную запись(APIKey и параметры доступа в личный кабинет) можно использовать для работы с разными контрагентами, что позволяет оформлять заказы от имени разных отправителей(компаний). В API для работы с контрагентами также предусмотрен метод, позволяющий получать список контрагентов(предварительно закрепленных в личном кабинете).

Пример запроса и ответа в формате JSON:

Авторизация пользователя
Адрес метода: https://api.dellin.ru/v3/auth/login.json
Запрос:

{
   "appkey":"00000000-0000-0000-0000-000000000000",
   "login":"info@info.ru",
   "password":"Password1"
}

Ответ:

{
   "metadata":{
      "status":200,
      "generated_at":"2015-06-18 12:37:28"
   },
   "data":{
      "sessionID":"00000000-0000-0000-0000-000000000000"
   }
}

Для работы с API Деловые Линии, на начальном этапе достаточно простого PHP класса:

<?
class DLClient {
	private $session;
 
	function __construct($appKey){
		$appKey?$this->appKey = $appKey:die("No app key given");
	}
 
	function auth($login, $password){
        $url = 'https://api.dellin.ru/v1/customers/login.json';
		$body = array(
			'login' => $login,
			'password' => $password,
			'appKey' => $this->appKey
		);
		$opts = array(
			'http' => array(
				'method' => 'POST',
				'header' => "Content-Type: application/json",
				'content' => json_encode($body)
			)
		);
		$result = file_get_contents($url, false, stream_context_create($opts));
		$res = (array)json_decode($result);
		$this->session = $res['sessionID'];
	}
 
	function request($op, $params = array()){
		$url = 'https://api.dellin.ru/v1/'.$op.'.json';
		$body = $params;
		$body["appKey"] = $this->appKey;
		if (isset($this->session)){
			$body["sessionID"] = $this->session;
		}
		$opts = array(
			'http' => array(
				'method' => 'POST',
				'header' => "Content-Type: application/json",
				'content' => json_encode($body)
			)
		);
		$result = file_get_contents($url, false, stream_context_create($opts));
		$this->result = (array)json_decode($result);
 
	}
}
 
 
// Пример использования
 
$appKey = '111';
$client = new DLClient($appKey);
 
$client->request('public/tracker', array('docId' => '13-00083508789'));
print_r ($client->result);
// работаем с массивом $client->result
 
// Если нужна авторизация:
$client->auth('login', 'pass');
$client->request('public/tracker', array('docId' => '13-00083508789'));
// работаем с массивом $client->result

Как видите есть возможность работы с методами где нужна авторизация, а также с методами без неё. В качестве названия метода указывается часть его URL, описанного в документации. Например «public/calculator_sf», для метода: «Калькулятор услуги Доставка до адреса»
с URL «http://api.dellin.ru/v1/public/calculator_sf.json». В документации есть готовые примеры на Ruby и Python.

Пожалуй это самый компактный PHP SDK для интеграции с API какой я когда либо встречал;)

Особенности

К особенностям можно отнести:

  • Ряд методов(например работа с отчетами), доступных только для авторизированных пользователей, активируется по дополнительному запросу в службу поддержки(время рассмотрения может занять до нескольких дней);
  • Имеются ограничения на количество запросов к API в час/минуту: 1600/45. Плюс рекомендуемый тайм-аут соединения — 10 секунд. Если ему следовать, то количество запросов в минуту снижается до 6-10. При реализации крупных проектов, работающих с множеством контрагентов, возможно данные лимиты будут малы, поэтому потребуется дополнительное согласование их со службой поддержки.

Заключение

Разработанный мною функционал для CMS/CRM системы, написан на языках PHP и JavaScript (стандартный стек для веб), и может быть интегрирован на любую веб-платформу, будь то сайт-сервис, интернет-магазин, личный кабинет пользователя и так далее. Так же сам функционал может быть изменен под ваши требования. Моя разработка не использует все доступные методы и возможности API(такой задачи не ставилось), например можно добавить функционал работы с адресной книгой и расширенные параметры заявок на оформление доставки груза.

Буду рад сотрудничеству, пишите!

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Оформить предзаказ
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка