Общая информация

Для демонстрации возможностей интернет-доставки предоставляется решение для развертывания простого сайта.

Решения реализовано на базе Angular JS (JavaScript-фреймворк с открытым исходным кодом), что позволяет развернуть сайт практически на любой платформе (IIS, Apache и т.д.)

Дистрибутив со скриптами доступен на FTP ftp://ftp.ucs.ru/Delivery/WebDelivery

Примечание

Исходные коды (скрипты) сайта могут быть использованы для встраивания в существующий сайт Заказчика.

Настройка сайта

Настройка сайта выполняется в файле \config-app\config.js

var globalDeliveryConfig = {
    "urlService": "http://dlv.ucs.ru", // основной адрес серверной части

    "sid": "Ваш_SID",
    "corpId": "19999",
    "objectId": "199990001", // объект по умолчанию, если в GPX не нашел ресторан

    "showDetailError": 1, // показывать подробное описание ошибок  1/0
    "keyMapApiGoogle": "AIzaSyAFj0xH0xc3pzPo4Sl6DSgAZilfQ9_GbqU", // из личного кабинета Google аккаунта
    "local": "ru", // локализация ru/en
    "currency": "P", // валюта
    "addTimes": 1, // в часах (только целые значения), при заказе "на ближайшее время" добавляем этот параметр к текущему времени
    "periodNoDelivery": 60, // в минутах, период в течении которого доставка еще работает, но заявки уже не принимаются (перед завершением работы)
};

где

  • urlService: "http://dlv.ucs.ru"  -  основной адрес серверной части WebDelivery
  • sid: — SID корпорации, полученный из административной части WebDelivery
  • corpId: 19999 - код корпорации
  • objectId: 199990001  - код объекта по умолчанию, если на GPX-сервере на найден ресторан
  • keyMapApiGoogle: 'AIzaSyAFj0xH0xc3pzPo4Sl6DSgAZilfQ9_GbqU'  - код для карт Google из личного кабинета Google-аккаунта
  • local: 'ru'  - установка начальной локализации сайта
  • currency: 'P' - валюта
  • addTimes: 1 -  при заказе "на ближайшее время" значение этого параметра (в часах) добавляется  к текущему времени,  (только целые значения)
  • periodNoDelivery: 60  - период (в минутах) в течении которого доставка еще работает, но заявки уже не принимаются (перед завершением работы)

Изображения для блюд меню

Изображения для блюд меня располагаются в каталоге \images-product\..

Названия файлов изображений должны быть сформированы следующим образом: img<код блюда>.jpg
Например, для блюда с кодом 28 изображение должно называться img28.jpg

Локализация сайта

Ресурсы для локализации сайта находятся в файле \assets\js\local.js (по умолчанию, поддерживаются русский и английский языки).

Язык сайта устанавливается в файле \assets\js\config.js с помощью параметров local и defaultLocal:

var app = angular.module('WebDelivery', ['ngRoute', 'ngStorage', 'ui.event', 'ngMask', 'ui.autocomplete', 'ui.bootstrap']);
app.factory("configServ", ["$http", function ($http) {
    return {
        ...
        local: 'ru', // локализация ru/en
        defaultLocal: 'en', // локализация по умолчанию, в случае отсутствия перевода
        ...
    }
}]);

Описание работы сайта

Пример сценария использования сайта:

  • Гость заходит на сайт доставки, на стартовой странице предлагается выбрать вариант получения заказа - доставка или самовывоз:

В случае самовывоза:

  • гостю отображается список доступных ресторанов:

  • после выбора ресторана отображается каталог меню с возможностью заказа блюд:

В случае доставки:

  • гостю в обязательном порядке необходимо ввести адрес доставки:


  • после ввода адреса отображается карта с меткой (адресом доставки), которую можно перемещать для более точного выбора адреса либо согласиться с выбранным адресом и нажать [Перейти к заказу]:


  • после подтверждения адреса на сервер отправляются координаты доставки и введенный адрес,  сервер автоматически определяет ресторан из текущей зоны доставки и возвращает текущее меню ресторана

  • далее, аналогично самовывозу, гость попадает в каталог меню ресторана, определенного сервером:

Примечание: Для работы с зонами доставки необходимо произвести настройки в Редакторе DictionaryEditor.exe (создать зоны, привязать к ним улицы и привязать к ним рестораны).

  • гость в любой момент может просмотреть корзину с добавленными блюдами и перейти к оформлению заказа

  • при оформлении заказа необходимо ввести персональные данные, указать тип оплаты и при необходимости добавить комментарий к заказу - содержимое корзины поступает на сервер доставки и доступно на кассе ресторана, а также в ПО Диспетчер:


Онлайн-оплата заказа

Интерфейс позволяет сделать предоплату заказа любыми валютами, бонусами, определенными в настройках RK7. Привязки к определенной платёжной системе нет.

Пользователь своими ресурсами (например, на своём сайте) проводит платёж любой удобной ему платёжной системой; убеждается в достоверности платежа; и затем, через интерфейс предоплаты "Delivery_WebOrder", передает информацию о предоплате в RK7 и Доставку. Если онлайн-оплата прошла успешно, то сайт может сообщить в Доставку, что заказ оплачен послав запрос  /api/v1/Payment
ВАЖНО! Пользователи "Delivery_WebOrder" должны обеспечивать недоступность посторонним лицам sid, а также идентификаторов заказа: visitid, guid. В случае каких-либо подозрений- сменить sid.
 Ниже рассмотрен пример формы имитирующей онлайн-оплату веб-заказа.

Для того, чтобы валюта появилась в списке доступных для предоплаты валют, необходимо выполнить в менеджере RK7 следующие действия:

- Добавить к валютам расширенное свойство ForDelivery.

- Установить для требуемой валюты значение свойства ForDelivery = 1.

При выборе оплаты онлайн отобразится следующая форма:

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

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

После оформления заказа в вэб, заказ отображается в доставке:

В модуле диспетчер заказ отображается в статусе Не подтверждён: