+2
На рассмотрении

Как осуществить интеграцию с Delivery Club?

смак58 6 лет назад обновлен mobidel 6 лет назад 7
-1

Они просят сделать какую-то доработку системы https://docs.google.com/document/d/1ZnHJ3KkHmXalWOUiwQL6ToxJE3MzR_UrnhzfLF6FN30/edit 

На рассмотрении

здравствуйте, сейчас с вами по телефону общались

ссылка не работает


Несуществующая страница

Страница, которую вы читаете, не существует.
Проверьте написание адреса — может быть, вы просто ошиблись при наборе или кто-то дал вам ссылку с опечаткой либо ссылку на свой почтовый ящик. А может быть, ранее существовавшая страница была удалена.

Отправлял файл с теми же данными в феврале на info@mobidel.ru

К сожалению, ответа по возможности реализации не получил.

Тоже интересует вопрос интеграции с DC

интеграция возможна, создайте отдельный топик для подключения

Топик, это отдельный отзыв?

Интеграция с системой заказов Delivery Club

Введение.

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

1. Отправка заказов в систему партнера

DC отправляет заказ в систему партнера в виде POST-запроса на указанный партнером URL. Запрос содержит в себе два параметра: Order и OrderText. Order содержит в себе параметры заказа в формате XML, OrderText содержит текстовое описание заказа.

Значения обоих параметров обработаны php-функцией urlencode.

Пример запроса:

POST http://server-name.ru/some_path/AddOrder

Content-Type: application/x-www-form-urlencoded

Order:

<?xml version="1.0" encoding="UTF-8" ?>

<Order Brand="BRANDNAME" DiscountPercent="0" PayMethod="100000001" QtyPerson="1" Type="Доставка" RemarkMoney="0" TimePlan="03.06.2016 03:29:00">

<LinkOk>Ok</LinkOk>

<LinkCancel>Cancel</LinkCancel>

<Customer FIO="Семенов Михаил Иванович" />

<Address CityName="Новосибирск" StationName="Ленинский" StreetName="улица Ленина" House="1" Corpus="2" Building="3" Flat="4" Porch="5" Floor="6" DoorCode="555">

<Remark>

<![CDATA[ Новосибирск, м. Ленинский, улица Ленина, 1, корпус 2, строение 3,подъезд 5, эт. 6, кв. 4 ]]>

</Remark>

</Address>

<Phone Code="915" Number="5555555" />

<Products>

<Product ID="PRODUCT_IDENTIFIER" Qty="1">

<Modificator Code="MODIFICATOR_IDENTIFIER" ID="MODIFICATOR_IDENTIFIER" Qty="1" Price="0" Title="Стандартное тесто 40см"/>

<Modificator Code="MODIFICATOR_IDENTIFIER" ID="MODIFICATOR_IDENTIFIER" Qty="1" Price="95" Title="Доп.ингред. 40 см Сырное ассорти"/>

</Product>

<Product ID="PRODUCT_IDENTIFIER" Qty="1">

</Product>

</Products>

<Remark>

 Комментарий к заказу

</Remark></Order>

Атрибуты тега Order:

Brand - уникальный идентификатор ресторана. Любой на ваш выбор

DiscountPercent - скидка в процентах

PayMethod - способ оплаты. Карта, наличные - Любые значения на ваш выбор

QtyPerson - количество персон

Type - способ доставки (pickup|delivery). Самовывоз или доставка.

RemarkMoney - требуется сдача с

TimePlan - ожидаемое время доставки dd.mm.YYYY hh:mm:ss

LinkOk - не используется

LinkCancel - не используется

Customer атрибуты

FIO - ФИО пользователя

Address - в атрибутах адрес, в дочернем элементе дублируется в виде текста

Phone - содержит в атрибутах телефон (Code и Number)

Products - содержит множество заказанных продуктов

Product атрибуты

ID - идентификатор на стороне партнера, полученный через импортирование меню

Qty — количество

Modificator - дочерний для Product, содержит модификаторы (доп сыр, соус и тому подобное). Подобен по структуре Product

Remark - комментарий к заказу

Система партнера должна ответить на запрос строкой в формате XML:

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>

<string xmlns="www.fast-operator.ru">

<Order Status="Ok" Code="1079690"/>

</string>

Тег string, должен содержать тег Order, со следующими атрибутами:

  • Status — статус заказа

  • Code — идентификатор заказа на стороне партнера

2. Опрос статуса заказа.

Опрос статуса заказа в системе партнера, производится DC путем отправки GET-запроса на указанный партнером URL. Запрос содержит параметр OrderCode.

Пример запроса:

GET http://server-name.ru/some-page/GetOrders?OrderCode=ORDER_ID

где ORDER_ID — идентификатор заказа в системе партнера (полученный в атрибуте Code тега Order XML ответа описанного в п.1).

Ожидается ответ в формате XML. Cодержимое тега <string> должно быть кодированной строкой, пропущена например через: http://php.net/manual/en/function.htmlentities.php

Пример ответа:

<?xml version="1.0" encoding="UTF-8"?>

<string xmlns="www.fast-operator.ru">

<Orders RC="1">

<Order RN="1" OrderID="100121858" State="Исполнен" StateCode="4" Code="201288" DateCreate="03.07.2016 13:36:23" PhoneCode="916" PhoneNum="4444444" BonusAmount="0.00" Amount="1540.00" DiscountPercent="0.00" DiscountAmount="0.00" DeliverySum="0.00" TotalClearAmount="0.00" Remark="DeliveryClub, в течении часа" Address="Новосибирск, м. Ленинский, улица Ленина, 1, корпус 2, строение 3, подъезд 5, эт. 6, кв. 4" AddressRemark="" QtyPerson="2" Department="Пр.Вернадского" DepartmentCode="1" TypeCode="1" Long="57.477992000" Lat="57.671387000" Courier="Иванов Иван" CourierCode="1" CourierType="1" CourierPhone="4444444">

<Products>

<Product Code="PRODUCT_IDENTIFIER" Name="Плов" Qty="1.00" UnitName="порция" Price="10.00" IsBonus="0" Remark="" DiscountPercent="0.00" DiscountAmount="0.00" Packet="0" />

</Products>

</Order>

</Orders>

</string>

CancelName =  “Причина отказа “  надо добавить в GetOrders если заказ с неуспешными статусами. Отклонен, отказан и т.д.

Стандартные причины отказа:

Клиент недоступен

Не устроило время доставки

Изменились планы клиента

Шутка

Тест

Клиент хочет оплатить картой

Клиента не устроила стоимость доставки

Дубль

Изменились данные заказа

Некорректная стоимость доставки

В настоящее время ресторан закрыт

Ресторан не доставляет по данному адресу

Высокая нагрузка

Блюда нет в наличии

У ресторана тех. проблемы

Нет курьеров

Изменилась стоимость блюда

Заказ менее минимальной суммы

Другое (укажите причину)

Таблица 1. Возможные значения атрибута State

Значение

Описание

Новый

Принят к исполнению. Нефинален.

Новый заказ

Принят к исполнению. Нефинален.

Новый с сайта

Принят к исполнению. Нефинален.

Новый on-line

Принят к исполнению. Нефинален.

Принят логистом

Принят к исполнению. Нефинален.

Принят

Принят к исполнению. Нефинален.

Отложен

Принят к исполнению. Нефинален.

Отложен: уточнение

Принят к исполнению. Нефинален.

Маршрутизация

Принят к исполнению. Нефинален.

Оформление

Принят к исполнению. Нефинален.

Дозаказ

Принят к исполнению. Нефинален.

ИНТЕРНЕТ ЗАКАЗ

Принят к исполнению. Нефинален.

В работе

Принят к исполнению. Нефинален.

В работе (R-Keeper)

Принят к исполнению. Нефинален.

Готов

Принят к исполнению. Нефинален.

Собран

Принят к исполнению. Нефинален.

Отправлен

Принят к исполнению. Нефинален.

Курьер выехал

Принят к исполнению. Нефинален.

Отправлен с курьером

Принят к исполнению. Нефинален.

Курьер выехал

Принят к исполнению. Нефинален.

Доставляется

Принят к исполнению. Нефинален.

Оплачен

Принят к исполнению. Нефинален.

Отдан

Клиент забрал сам. Финальный успешный.

Доставлен

Доставлен. Финальный успешный.

Исполнен

Доставлен. Финальный успешный.

Отказан

Отменен поставщиком. Финальный неуспешный.

Корзина

Отменен клиентом. Финальный неуспешный.

Импорт меню

Для принятия и публикации информации в базе данных Delivery Club используется специальный формат XML.

XML документ должен соответствовать следующему формату (DTD):

<!ELEMENT dc_catalog ((delivery_service))>

<!ATTLIST dc_catalog

last_update CDATA #REQUIRED

>

<!ELEMENT delivery_service ((categories, products))>

<!ELEMENT categories ((category+))>

<!ELEMENT category (#PCDATA)>

<!ATTLIST category

id CDATA #REQUIRED

parentId CDATA "0"

>

<!ELEMENT products ((product+))>

<!ELEMENT product ((category_id, name, description?, price, picture?, byWeight?, ingredients?))>

<!ATTLIST product

id CDATA  #IMPLIED

>

<!ELEMENT price (#PCDATA)>

<!ELEMENT picture (#PCDATA)>

<!ELEMENT byWeight (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT description (#PCDATA)>

<!ELEMENT category_id (#PCDATA)>

<!ELEMENT ingredients ((ingredient+))>

<!ELEMENT ingredient (#PCDATA)>

<!ATTLIST ingredient

title CDATA #REQUIRED

price CDATA #REQUIRED

>

Стандарт XML учитывает порядок следования элементов, поэтому важно соблюдать его в соответствии с прилагаемым DTD или примерами, приведенными ниже.

Стандарт XML не допускает использования в текстовых данных непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением символов с кодами 9, 10, 13 - табуляция, перевод строки, возврат каретки). Также этот стандарт требует обязательной замены некоторых символов (см. таблицу) на эквивалентные им символьные примитивы.

Таблица 2. Условия замены в текстовых полях

Текстовый символ

Замена (символьный примитив)

"

"

&

&

>

>

<

<

'

'

Описание формата полного списка товаров

Заголовок документа (XML header)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dc_catalog SYSTEM "http://www.delivery-club.ru/xml/dc.dtd">

Стандартный XML-заголовок со ссылкой на файл описания формата (DTD). Заголовок должен начинаться с первой строки, с нулевого символа. Вторая строка заголовка XML-документа определяет ссылку на файл описания формата данных (DTD).

Элемент dc_catalog

<dc_catalog last_update="2000-11-16 20:17">

  <delivery_service>

      ...

  </delivery_service>

</dc_catalog>

Любой XML-документ может содержать только один корневой элемент. Формат YML в качестве корневого использует элемент dc_catalog. Атрибут date элемента dc_catalog должен соответствовать дате и времени генерации XML-файла на стороне магазина. Дата должна иметь формат YYYY-MM-DD HH:mm. Ежедневно система автоматически проверяет изменения в дате после последнего обновления данных и в случае изменения даты  производит выгрузку обновленных данных на сайт delivery-club.ru.

Элемент delivery_service

<delivery_service >

<categories> ... </categories>

<products> ... </products>

</delivery_service >

В элементе delivery_service содержится описание продуктов.

Элемент categories

<categories>

<category id="1">Завтраки</category>

<category id="2">Пицца</category>

<category id="3" parentId="2">Пицца 23 см</category>

<category id="4" parentId="2">Пицца 36 см</category>

<category id="5">Напитки</category>

</categories>

В элементе categories содержится список категорий службы доставки. Каждая категория описывается отдельным элементом category. Описание категории должно включать ее идентификатор (параметр id) для всех категорий и идентификатор категории более высокого уровня для подкатегорий.

Идентификатор категории должен быть уникальным положительным целым числом. Ни у одной категории параметр id не может быть равен "0". Если элемент parentId не указан, то категория считается корневой.

Параметры:

id - идентификатор Вашей категории продуктов

parentId - идентификатор предыдущей по иерархии категории продуктов

*после каждой родительской категории должны идти дочерние, либо сначала необходимо описать родительские категории, а после описывать дочерние. В любом случае, если сначала идет описание дочерней категории, а после – родительской, то корректное отображение дерева невозможно.

Элемент products

<products>

<product>...</product>

...

</products>

В элементе products содержится список предложений службы доставки. Каждое предложение описывается отдельным элементом product.

Описание элемента product

<product id="6015">

      <category_id>0</category_id>

      <name>Морепродукты в соусе Том Ям</name>

      <price>250</price>       <picturepicture>

      <ingredients>

        <ingredient id="179" title="Свинина" price="95"/>

        <ingredient id="169" title="Шампиньоны" price="30"/>

        <ingredient id="174" title="Курица" price="95"/>

        <ingredient id="9150" title="Морепродукты" price="95"/>

        <ingredient id="1168" title="Креветки &quot;Коктейль&quot;" price="145"/>

      </ingredients>

      <variants>

        <variants_group title="Выберите основу">

          <variant title="Лапша яичная" price="0" id="9030"/>

          <variant title="Лапша стеклянная" price="0" id="9010"/>

          <variant title="Лапша пшеничная" price="0" id="9020"/>

          <variant title="Лапша гречневая" price="0" id="9000"/>

          <variant title="Пропаренный рис" price="0" id="9040"/>

        </variants_group>

        <variants_group title="Выберите остроту">

          <variant title="Не острый" price="0" id="3027"/>

          <variant title="Острее" price="0" id="3021"/>

          <variant title="Очень остро" price="0" id="3022"/>

        </variants_group>

        <variants_group title="И вот еще что">

          <variant title="Кунжут" price="0" id="3028"/>

          <variant title="Зеленый лук" price="0" id="3030"/>

          <variant title="Без овощей" price="0" id="3020"/>

          <variant title="Без посыпки" price="0" id="3031"/>

        </variants_group>

      </variants>

    </product>

Таблица 3. Описание элементов, входящих в элемент <product>

Элементы

Описание

id

Внутренний идентификатор продукта в системе. Важно передавать его в Delivery Club для корректного получения продуктов в передаваемых заказах.

name

Наименование продукта.

description

Описание продукта.

price

Стоимость продукта. Округление происходит в большую сторону.

ingredients

Дополнительные ингредиенты, которые можно добавить по желанию. Должны содержать ID, название и стоимость.

variants

Обязательные для выбора модификаторы. Могут быть сгруппированы в одну или несколько групп. Должны содержать ID, название и стоимость.

picture

По указанному URL-адресу должна находиться картинка формата jpeg или png наилучшего качества. Ресайз происходит автоматически на стороне Delivery Club. Ссылка на HTML с картинкой недопустима.

При добавлении Еды За Баллы

необходимо создать блюдо с нулевой ценой и другим ID.

Клиенту показываем основное блюдо, а передаем в систему ресторана блюдо с нулевой ценой.

Сервис поддержки клиентов работает на платформе UserEcho