API интернет заказа

Для упрощения интеграции вебмагазинов (вебсайтов) наших клиентов с системой mobidel.ru нами разработан программный интерфейс (API)

При формировании запроса используется кодировка UTF8

Создание Internet заказа.
Формат вызова функции:
online.mobidel.ru/makeOrder.php? user=robot&password=123456&wid=1&line=123456&articles[0]=1054&quantities[0]=1&...&
articles[n]=1067&quantities[n]=5&family=Иванов&street=Ленина&home=1&room=1&comment=&phone=223344

Пример вызова:

online.mobidel.ru/makeOrder.php?user=robot&password=123456&wid=1&line=123456&articles[0]=1054&quantities[0]=1&
articles[1]=1154&quantities[1]=8&family=Иванов&street=Ленина&home=1&room=1&comment=&phone=223344

В данном примере вызывается функция создания заказа c двумя товарами один с артикулом: 1054 (articles[0]=1054), и количеством 1 (quantities[0]=1), второй с артикулом: 1154 (articles[1]=1154), и количеством 8 (quantities[1]=8).

Модификаторы:

Для задания модификаторов для товара необходимо заполнить массивы модификаторов additives_a[x][y] и additives_q[x][y]. Оба массива имеют размерность 2. Первый индекс массива [x] указывает на порядковый номер товара в массиве articles , к которому добавляется модификатор, а второй индекс [y] - порядковый номер модификатора к товару (номера начинаются с 0). Массив additives_a содержит артикулы добавляемых модификаторов, массив additives_q - количество соответствующего модификатора.

Пример:

Добавим первый товар с модификаторами:

&articles[0]=1054&quantities[0]=1 (товар, артикул товара 1054, количество 1)
&additives_a[0][0]=2233&additives_q[0][0]=2 (модификатор 0 к товару 0, артикул модификатора 2233, количество 2)
&additives_a[0][1]=1122&additives_q[0][1]=7 (модификатор 1 к товару 0, артикул модификатора 1122, количество 7)
&additives_a[0][2]=0011&additives_q[0][2]=1 (модификатор 2 к товару 0, артикул модификатора 0011, количество 1)

добавим второй товар с модификаторами:

&articles[1]=155&quantities[1]=3 (товар, артикул 155, количество 3)
&additives_a[1][0]=336&additives_q[1][0]=1 (модификатор 0 к товару 1)
&additives_a[1][1]=225&additives_q[1][1]=1 (модификатор 1 к товару 1)
&additives_a[1][2]=772&additives_q[1][2]=1 (модификатор 2 к товару 1)
&additives_a[1][3]=555&additives_q[1][3]=1 (модификатор 3 к товару 1)

ВНИМАНИЕ!!! Для избежания проблем с распределением заказа просим создать дополнительно еще одного диспетчера с установленным флажком "диспетчер-Internet магазин", и производить авторизацию и создание заказов от его имени.



Параметры:

user имя диспетчера
password пароль диспетчера
wid идентификатор предприятия (id)
line телефон службы доставки, используется для привязки заказа к необходимой службе доставки, если не указан, то берется служба по умолчанию для "диспетчер internet магазин"
articles список артикулов товаров заказа
quantities список количества товаров
articles соответствует quantities, т.е. в заказ добавляется товар с артикулом articles и количеством quantities.
family фамилия клиента
street улица адреса доставки
home дом адреса доставки
room квартира адреса доставки
building корпус адреса доставки
comment комментарий к заказу
phone телефон клиента
entrance подъезд
floor этаж
code код
code2 код домофона
deliveryPrice стоимость доставки в копейках, можно задать любое цифровое значение
warehouseID точка комплектации
driverID курьер
advanceDeliveryDate дата доставки в формате 'HH:MM DD/MM/YYYY'
paymentMethod идентификатор метода оплаты (берем из админки)
discount идентификатор скидки (берем из админки)
discountSumm сумма скидки
useDiscountSumm флаг использования суммы скидки, а не идентификатора
margin идентификатор наценки (берем из админки)
marginSumm сумма наценки
useMarginSumm флаг использования суммы наценки, а не идентификатора
staffComment комментарий для кухни
independently флаг самовывоза (1 - самовывоз, 0 - доставка)
persons количество персон в заказе
saleChannel идентификатор канала продаж (берем из админки)
webID идентификатор заказа в вашем интернет магазине (не более 50 символов)
note купюра оплаты для расчета сдачи
promoCode сертификат
bonusPay количество списываемых бонусов


Возвращаемое значение:

ok идентификатор_заказа в том случае если заказ добавлен
error 1 система не смогла создать заказ
error 2 не найден идентификатор предприятия
error 4 не указан wid в запросе
error 5 не указан user в запросе
error 6 не указан password в запросе
error 7 не указаны товары в запросе
error 8 не указано количество товаров в запросе
error 10 проблемы с БД, повторите запрос,обратитесь в тех поддержку

В команду makeOrder добавлены следующие параметры:

advanceDeliveryDate дата доставки в формате 'HH:MM DD/MM/YYYY'
paymentMethod идентификатор метода оплаты (берем из админки)
discount идентификатор скидки (берем из админки)
discountSumm сумма скидки
useDiscountSumm флаг использования суммы скидки, а не идентификатора
margin сумма наценки
marginSumm флаг использования суммы скидки, а не идентификатора
useMarginSumm флаг использования суммы наценки, а не идентификатора
staffComment комментарий для кухни
independently флаг самовывоза (1 - самовывоз, 0 - доставка)
persons количество персон в заказе
saleChannel идентификатор канала продаж (берем из админки)
webID идентификатор заказа в вашем интернет магазине (не более 50 символов)
paid флаг оплаты (1 - оплачен, 0 - неоплачен)

Сменить состояние оплаты заказа:
/changePaymentOrder.php?idOrder=....&user=...&password=....&cid=...

Если оплаты не было, то станет оплачен, если оплачен, то станет неоплаченный

Пример php:

$url="http://online.mobidel.ru/makeOrder.php?".

"user=internet_user".
"&password=internet_zakaz".
"&wid=112".
"&line=22334455".

"&family=".urlencode($myfamily).
"&street=".urlencode($mystreet).
"&building=".urlencode($mybuilding).
"&home=".urlencode($myhome).
"&room=".urlencode($myroom).
"&comment=".urlencode($mycomment).
"&phone=".urlencode($myphone).
"&entrance=".urlencode($myentrance).
"&floor=".urlencode($myfloor).
"&nonCash=".urlencode($mynonCash);

$myi=0;
reset($myitems);
while ($mym=current($myitems)) {
$url.="&articles[".$myi."]=".$mym["id"]."&quantities[".$myi."]=".$mym["quantity"];
$myi++;
next($myitems);
};

$mych = curl_init();
curl_setopt($mych, CURLOPT_URL, $url);
curl_setopt($mych, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($mych, CURLOPT_HEADER, 0);
curl_exec($mych);
curl_close($mych);


Получить описание заказа:
/getOrder.php?idOrder=....&user=...&password=....&cid=...

Возвращается JSON объект следующей структуры:
order.id идентификатор заказа
order.cid идентификатор компании
order.number номер заказа
order.ordertype тип заказа
order.status текущее состояние заказа
order.staffStatus текущее состояние заказа в производстве
order.editing флаг возможности редактирования заказа
order.warning флаг "внимания" заказа (просрочен какой-то интервал)
order.createTime время создания заказа
order.createTimestamp timestamp создания заказа
order.staffTime время взятия в комплектование заказа
order.readyTime время укомплектования заказа
order.readyTimestamp timestamp укомплектования заказа
order.orderTimer служебное
order.advanceDeliveryDate дата доставки заказа предварительного заказа
order.advanceDeliveryHour
order.advanceDeliveryMinute
order.advanceDeliveryDay
order.advanceDeliveryMonth
order.advanceDeliveryYear
order.phone телефон клиента
order.deliveryPrice стоимость доставки
order.discountSumm сумма скидки на заказ
order.useDiscountSumm флаг использования суммы скидки на заказ
order.applicableDiscount идентификатор скидки заказа
order.settlementPeriod смещение относительно начала дня по времени клиента расчетного периода
order.nonCash оплата безналом

Состояние заказа кодируется следующим образом:

order.status текущее состояние заказа
0 заказ отложен - Предварительный заказ (заказ находится во вкладке предварительные)
1 заказ создан - Создан (момент создания заказа - диспетчер нажал на кнопку НОВЫЙ заказ)
2 заказ редактируется - Заказ создали, но еще не сохранили (диспетчер заполняет заказ данными, в списке статусов у диспетчера его нет)
3 заказ готов к исполнению - Новый (диспетчер сохранил заказ)
4 заказ передан водителю на ознакомление - заказ переходит в это состояние после статуса 3 если курьер подключен к системе через мобильное приложение и видит заказ в приложении, в списке статусов у диспетчера его нет
5 заказ блокирован водителем, водитель решает брать его или нет - курьер зашел в заказ через мобильное приложение и принимает решение брать заказ в работу или нет, в этот момент данный заказ другим курьерам для выбора недоступен, в списке статусов у диспетчера его нет
6 курьер взял заказ, но диспетчер его выбор не подтвердил (если включена функция подтверждение заказа диспетчером), в списке статусов у диспетчера его нет
7 заказ укомплектован - на заказ назначен курьер
8 заказ доставляется клиенту - Доставляется (курьер приступил к доставке заказа)
9 заказ выполнен
10 клиент отказался от заказа
order.staffStatus текущее состояние заказа в производстве
0 Создан (момент создания заказа - диспетчер нажал на кнопку НОВЫЙ заказ)
1 заказ передается в точку
2 заказ не передан в точку
3 заказ передан в точку - В производстве, для заказа выбрана точка комплектации
4 заказ взят в работу - Готовится (комплектовщик приступил к изготовлению заказа)
5 заказ отложен - Отложен (комплектовщик отложил изготовление заказа)
6 заказ укомплектован и готов к доставке - Готов к доставке (комплектовщик приготовил заказ)

Значения статусов заказа для интеграции:

status=3,4,5,6,7 staffStatus=3 - В производстве
status=3,4,5,6,7 staffStatus=4 - Готовится
status=0 Отложен (предварительный заказ)
status=3,4,5,6,7 staffStatus=6 - Готов к доставке
status=8 - Доставляется (В пути)
status=9 - Выполнен
status=10 - Отменен

Получение списка товаров:

http://online.mobidel.ru/getMenu.php?restaurantID=1&wid=2

где restaurantID - UID службы доставки

где wid - UID предприятия