external:доставка:api:install

Это старая версия документа!


Дополнительные настройки RK7

Для полноценной работы API доставки необходимо выполнить несколько дополнительных настроек

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

  1. В менеджерской RK7 перейдите в справочник Меню → Классификации блюд
  2. Создайте новую классификацию «Использовать для интернет-заказов»
  3. Для новой классификации создайте категории такие, какие группы блюд будут на сайте, запомните Идентификатор классификации с этими категориями
  4. Назначьте всем блюдам, которые будут доступны для продажи через внешнюю систему, категорию в рамках этой классификации. Пример: категории «супы», «первые блюда», «десерты». Группы блюд на сайте будут называться именно так вне зависимости от того, в какой группе блюдо расположено в меню r-keeper.

Важно!

API доставки не поддерживает комбо-блюда, блюда с обязательными модификаторами и сами модификаторы, а так же блюда с дробным количеством (весовые)

Для предотвращения программных ошибок и проблем с сохранением заказов воздержитесь от использования таких блюд для внешних заказов.


Для автоматического добавления блюд из интернет заказа необходимо добавить скрипт в форму редактирования заказа доставки.

  1. Перейдите в справочник Настройки → Графический интерфейс → Формы
  2. В группе Заказ → Редактирование заказа откройте для редактирования форму, использующуюся в схеме форм доставки.
  3. Для объекта DesignForm перейдите на вкладку «События» и двойным кликом добавьте обработчик осбытия «OnShow»
  4. В открывшимся редакторе укажите следующий скрипт, заменив значение переменной iport на IP адрес и порт установленного модуля мини-доставки в формате «IP.IP.IP.IP:PORT» Не используйте 127.0.0.1!!!
  5. ВНИМАНИЕ Убедитесь, что на всех кассовых станциях добавлен XML порт по инструкции для HoverButton
procedure DesignFormOnShowScript(Sender: TObject);
var
   res:string;
   iport:string;
begin
  iport := '192.168.1.7:11011'; //IP адрес и порт DeliveryHatch
  if not RKCheck.valid then Exit;
  if httpget('http://'+iport+'/api/int/orderitems?guid='+RKCheck.CurrentOrder.guidstring, res) <> 0 then
  begin
    GUI.ShowMessage('Minidlv/orderitems. '+iport+' Не доступен.');  
  end;
end;

При настройке использования схемы форм с данной формой не задавайте категорию заказа.
«Старый серый» интерфейс кассы рк7 использовать нельзя.


Чтобы иметь возможность получать с сайта (через API) заказы с уже произведённой оплатой - в rk7 должно быть включено использование предоплат. Оплата заказа через API добавляется в заказ как «Предоплата». Так сделано для того, чтобы заказ не закрывался сам сразу же, а оставался «висеть» в списке заказов до тех пор, пока персонал ресторана не закроет его вручную.

Для корректной работы такого механизма следует настроить параметр:
Настройки → Параметры → Использование опций → Печатные документы → Учет предоплат → Не учитывать

Нужно выбрать именно значение «Не учитывать», это не то же самое что «без предоплат».
Если в ресторане предоплаты используются по настоящему - сделайте исключение параметра и привяжите его категории заказа доставки.

Валюта и причина внесения денег для приема предоплат указывается в DeliveryHatch.ini - rkPayCode и rkPayReasonCode соответственно.

Пример настроек валюты и причины внесения:


В файл DeliveryHatch.ini в секцию [RK] добавьте новый параметр: rkMenuCateg

Этот параметр определяет классификацию блюд, с которой будет работать API доставки.

Значением данного параметра необходимо указать идентификатор классификации «Использовать для интернет-заказов»

С версии 3.0.5.1053 в секцию [RK] можно добавить параметр rkHitCateg

Параметр определяет категорию меню для пометки блюд как «Популярное» во внешних системах

Значением данного параметра необходимо указать идентификатор категории «Да» классификации «Популярно для доставки»

C версии 3.1.8.1521 в доставку добавлена поддержка модификаторов блюд.

С версии 3.1.8.1616 добавлен механизм фильтрации служебных модификаторов по весу.
Теперь через API доступны только модификаторы, вес которых больше нуля.
Отключить фильтрацию по весу можно в DeliveryHatch.ini в сексии RK с помощью параметра rkFilterModiWeights. Установить значение - 0.

В том же файле добавьте новую секцию «[APITOKEN]», в которой перечислите все токены, с которыми смогут работать внешние системы.

Токен для каждой внешней системы нужно придумать самостоятельно!!!

Сделать это можно при помощи генераторов паролей

Один токен-одна строка-один внешний клиент. Строка обязательно должна заканчиваться символом «=». Символ «=» обозначает окончание токена и не принадлежит ему. Т.е. в запросах токен использовать БЕЗ знака «=»

Для чего нужно использовать несколько разных токенов? \\ Пример: Наш ресторан принимает заказы с собственного сайта, а так же сотрудничает с 2-мя агрегаторами. Все эти источники работают через одно и то же API мини-Доставки. На этапе подключения заводим для каждого источника уникальный токен. В случае если мы перестаем работать с каким то из агрегаторов, то достаточно будет удалить выданный им токен из конфигурационного файла и данный источник не сможет больше выполнять запросы к API ресторана.

После редактирования DeliveryHatch.ini перезапустите модуль мини-доставки.


Последним этапом необходимо открыть сетевой порт для внешнего IP заведения, ведущий в порт доставки.
Как это сделать - зависит от конкретного оборудования в заведении.

Важно помнить, что доставка ограничивает доступ к стандартному WEB интерфейсу для запросов, адресованых не на один из IP адресов, принадлежащих компьютеру, где установлена доставка.

То есть невозможно получить доступ к стандартному графическому интерфейсу не из локальной сети.


Для этого есть сервис тестирования: https://dev.carbis.ru/test

Необходимо ввести параметры подключения к вашему экземпляру, если при работе с API планируется использование оплат, то включить соответствующий параметр, и после этого запустить проверку.

При корректно выполненной настройке, в модуле мини-Доставка появится новый внешний заказ и оплата (если был выставлен соответствующий признак). Если на каком то этапе тестирования возникнут ошибки, то в будут указаны возможные причины их возникновения и рекомендации по их устранению.

PS Сервис находится в режиме beta-тестирования. В случае получения ошибки вида «Access Violation XXX» просто запустите тест еще раз.

  • external/доставка/api/install.1606299372.txt.gz
  • Последнее изменение: 2020/11/25 13:16
  • Алексей Коробов