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)
Параметры:
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=...
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 предприятия