API CallBack

Определения.

Mobidel — программно-аппаратный комплекс Mobidel.ru для управления заказами.
Внешняя система (ВС) — любое приложение, облачный сервис и пр., имеющий публичный WEB-интерфейс, и реализующий протокол взаимодействия с Mobidel, описанный ниже, в полном объеме либо некоторую, достаточную для ее нужд, часть.
API логин внешней системы — соответствует строке, которая устанавливается в Рабочем месте администратора в настройках службы доставки. Необходим для идентификации запросов от Mobidel к внешней системе.
API пароль внешней системы — соответствует строке, которая устанавливается в Рабочем месте администратора в настройках службы доставки. Необходим для идентификации запросов от Mobidel к внешней системе.
Идентификатор сессии - формируется на основании API логина и API пароля внешней системы для подтверждения прав на выполнение запроса к внешней системе.
Рабочее место администратора — WEB-интерфейс настройки параметров API с помощью браузера (в настройках службы доставки). Доступен клиентам Mobidel по адресу: http://online.mobidel.ru

Требования.

Требования, предъявляемые к внешней системе, необходимые для взаимодействия с API:
1. Использование метода POST и GET для HTTP-запросов

Общие положения взаимодействия систем.

Внешняя система и API взаимодействуют между запросами по протоколу HTTP. Для взаимодействия с некоторыми компонентами API может потребоваться обмен IP-адресами. Такая модель будет работать только с такой внешней системой, которая может предоставить свой внешний (публичный) адрес для ее вызова со стороны API. Типичным примером является B2B взаимодействие между двумя "облачными" сервисами.

От API Mobidel для внешней системы предоставляются:

1. Базовый адрес API в сети Интернет: http://online.mobidel.ru. Используется для формирования запросов к API, например:

http://online.mobidel.ru/makeOrder.php
http://online.mobidel.ru/getOrder.php

подробнее API интернет заказа

От внешней системы для API Mobidel предоставляются:

1. Базовый адрес внешней системы в сети Интернет (IP или домен).
2. API логин внешней системы. Используется в процедуре идентификации внешней системой системы Mobidel.
3. API пароль внешней системы. Используется для генерации идентификатора сессии и подтверждения прав на выполнение запроса к внешней системе.

Базовый адрес внешней системы будет использоваться для отправки запросов и уведомлений от Mobidel к внешней системе.

Запросы между системами условимся разделять на асинхронные и синхронные:

1. Асинхронные запросы, обращаясь к какому-либо сервису системы, ограничиваются только передачей данных, не требуя и не ожидая данные в ответ. Единственная информация, принимаемая в ответ — код состояния HTTP, т.е. код ответа, информирующий об успешности выполнения самого запроса.
2. Синхронные запросы: ожидающие какие-либо данные в теле ответа. Тело ответа должно представлять сплошную json строку, если не оговорено иное. Параметры и данные, описывающие JSON объект, специфичны и описаны для каждого запроса отдельно.

Данные, которыми обмениваются системы, как правило, будут передаваться в теле POST-запроса/ответа.

Модель авторизации.

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

API CallBack.

API CallBack представляет собой набор запросов (уведомлений), которые направляются к внешней системе. Часть запросов может предполагать синхронный ответ.

Уведомление об изменении состояния заказа

Асинхронный запрос, формируемый системой Mobidel. Производится вызов url, записанного в поле URL API в Рабочем месте администратора в настройках службы доставки.

Тело POST-запроса имеет вид:
{ 
"action" : "changeOrder",
"orderID" : "34651024234273",
"reqID" : "23453465",
"sessionID" : "sessionID",
"SignatureValue" : " 10cdb27dc4becd7ac1f8f644fc0e2935"
}


action - поле, указывающее какое действие вызывается.
orderID - идентификатор заказа, состояние которого изменилось. Чтобы получить описание заказа в скипте обработки необходимо сформировать запрос getOrder к системе Mobidel.
reqID - идентификатор запроса, формируемый системой Mobidel.
sessionID - поле, значение которого соответствует API логину в Рабочем месте администратора в настройках службы доставки.
SignatureValue - поле, значение которого вычисляется следующим образом:
md5(reqID+":"+API логин+":"+API пароль);

Пример:
POST http://198.88.45.99/callback
{
"action" : "changeOrder",
"orderID" : "34651024234273",
"reqID" : "23453465",
"sessionID" : "sessionID",
"SignatureValue" : " 10cdb27dc4becd7ac1f8f644fc0e2935"
}


Пример php скрипта приема и обработки данных запроса (должен лежать по адресу URL API из Рабочего места администратора в настройках службы доставки):

<?php
// аналоги данных в полях API логин и API пароль в Рабочем месте администратора в настройках службы доставки
$mySessionID="mySessionID"; // API логин
$myPassword="myPassword"; // API пароль

// получаем данные запроса
$postdata = file_get_contents("php://input");

// записываем их в лог
$handle = fopen("./request.post", "w");
fwrite($handle,$postdata);
fclose($handle);

// декодируем из json-строки полученные данные
$request=json_decode($postdata);
if (isset($request))
if (isset($request["action"]))
if ($request["action"]=="changeOrder") {
// операция изменения состояния заказа
$orderID=$request["orderID"];
$reqID=$request["reqID"];
$sessionID=$request["sessionID"];
if ($mySession==$sessionID) {
$signature =$request["SignatureValue"];
$mySignature=md5($reqID.":".$sessionID.":".$myPassword);
if ($signature==$mySignature) {
// Система мобидел идентифицирована. Выполняем действие.
};
};
};
?>