# Яндекс Еда

**Раздел:** **Интеграции** (integracii.md)

Меркурий-ИИ можно подключить к Яндекс Еде, чтобы передавать меню и остатки товаров, а заказы покупателей автоматически получать в программу. Заказы создаются как заявки покупателя и могут сразу поступать на **кухонный экран KDS** (kds.md).

## Как работает интеграция
Яндекс Еда подключается к Меркурию через API и самостоятельно получает информацию о товарах, ценах и остатках.

Вручную выгружать меню или отправлять файлы не требуется.

Обмен работает в обе стороны:

Каждому ресторану или торговой точке Яндекс Еды соответствует отдельный склад Меркурия. Для него используются собственные цены и остатки.

Товары для меню выбираются по тому же принципу, что и для **интернет-витрины** (vitrina.md).

Для настройки откройте **«Интеграции → Яндекс Еда»**.

## Настройки подключения
Для подключения понадобятся реквизиты доступа к API и идентификаторы ресторанов.

Часть данных Меркурий создаёт автоматически, остальные предоставляет Яндекс Еда.

### Включить интеграцию
Главный переключатель подключения.

Установите галочку, чтобы разрешить обмен с Яндекс Едой. Если интеграция выключена, Яндекс Еда не сможет получать меню и передавать заказы в эту базу.

### OAuth client_id и OAuth client_secret
Это реквизиты, по которым Яндекс Еда получает доступ к API Меркурия.

**Их создаёт Меркурий, а не Яндекс Еда.**

При первоначальной настройке оставьте оба поля пустыми и нажмите **«Сохранить»**. Программа автоматически создаст необходимые значения.

При необходимости можно указать собственные значения из латинских букв и цифр, если это согласовано с Яндекс Едой.

Полученные `client_id` и `client_secret` необходимо передать менеджеру или технической поддержке Яндекс Еды вместе с адресом подключения.

Адреса находятся в блоке **«URL для Яндекс Еды»**. Для их копирования предусмотрена кнопка **«Копировать»**.

Яндекс Еда использует OAuth-адрес Меркурия для получения токена доступа:

`public/yandex-eda/oauth/token`

**Важно:** адрес API на сервере общий, но каждая база Меркурия имеет собственные ключи. Именно по ним программа определяет, с какой базой работает Яндекс Еда.

Поэтому передавайте ключи именно той базы, которую подключаете.

### Partner token
Токен, с которым Яндекс Еда обращается к API Меркурия после авторизации.

Он передаётся в запросах в заголовке:

`Authorization: Bearer ...`

Токен создаётся Меркурием при сохранении настроек. При необходимости его можно заменить кнопкой **«Новый token»**.

Обычно менять его не требуется. Новый токен может понадобиться, например, если прежний стал известен посторонним.

После замены необходимо согласовать с Яндекс Едой обновление доступа или повторную OAuth-авторизацию.

### Push статусов — base URL
Необязательное поле для адреса, на который Меркурий может отправлять уведомления об изменении статуса заказа.

Если Яндекс Еда предоставила адрес для таких уведомлений, укажите его здесь.

Если отправка статусов со стороны Меркурия не требуется, оставьте поле пустым. Яндекс Еда сможет самостоятельно запрашивать состояние заказов через API.

### Push token
Необязательный токен авторизации для отправки уведомлений о статусах.

Его предоставляет Яндекс Еда, если используется соответствующий способ обмена.

Не путайте этот токен с **Partner token**: они предназначены для разных направлений обмена.

### Склады и restaurant_id
В этом блоке настраивается соответствие складов Меркурия ресторанам Яндекс Еды.

Идентификатор `restaurant_id` можно получить в кабинете партнёра Яндекс Еды или у менеджера подключения.

Если у вас несколько ресторанов, каждому из них необходимо сопоставить соответствующий склад Меркурия.

Проверьте правильность идентификаторов: по ним Яндекс Еда определяет, к какой торговой точке относятся меню и заказы.

## Как подключить Яндекс Еду
После этого необходимо согласовать с Яндекс Едой проверку подключения и получение меню.

Когда обмен будет настроен на стороне агрегатора, новые заказы начнут поступать в Меркурий автоматически.

## Какие товары попадают в меню
Яндекс Еда получает ассортимент непосредственно из справочника товаров Меркурия.

Чтобы товар появился в меню, должны выполняться два условия:

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

Идентификатор блюда в Яндекс Еде соответствует идентификатору товара в Меркурии.

Отдельно сопоставлять товары двух систем не требуется.

Если у вас несколько ресторанов, для каждого используется цена соответствующего склада.

## Настройка остатков
В Меркурии предусмотрены два режима передачи ассортимента в Яндекс Еду.

### Весь ассортимент
В меню передаются все товары, разрешённые для показа в интернете и имеющие расходную цену на складе ресторана.

При запросе остатков Меркурий передаёт фактическое количество товара. Если остаток отсутствует или равен нулю, вместо него используется заданное **количество по умолчанию**.

Например, можно указать `999`.

Этот режим подходит для блюд, которые готовятся под заказ и не учитываются на складе как готовая продукция.

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

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

Яндекс Еде передаётся реальное количество.

Этот режим удобен для готовой продукции и товаров, доступность которых зависит от складских остатков.

Поле **«Кол-во по умолчанию»** отображается только при выборе режима **«Весь ассортимент»**.

## Получение заказов
Когда покупатель оформляет заказ в Яндекс Еде, агрегатор передаёт его в Меркурий через API.

Программа автоматически создаёт **заявку покупателя** на складе соответствующего ресторана.

В заявку передаются доступные сведения о заказе, включая:

Если Яндекс Еда повторно отправит заказ с тем же идентификатором, Меркурий не создаст вторую заявку.

### Обмен статусами
Яндекс Еда может запрашивать состояние заказа непосредственно через API Меркурия.

Если настроены push-уведомления, программа также может самостоятельно сообщать агрегатору об изменениях статуса.

Например, при переходах:

Если push-уведомления не настроены, Яндекс Еда получает сведения о статусах при собственных запросах к API.

## Передача заказов на кухню
Если в ресторане используется **кухонный экран KDS** (kds.md), заказы из Яндекс Еды могут автоматически попадать в очередь приготовления.

Для этого KDS должен быть настроен, а у соответствующих блюд должны быть указаны станции приготовления.

После поступления заявки сотрудники кухни увидят новый заказ без необходимости переносить его вручную из кабинета Яндекс Еды.

На этапе выдачи доступны состав заказа и адрес доставки, если он передан агрегатором.

## Ограничения интеграции

В текущей версии поддерживаются передача меню и остатков, получение заказов и обмен их статусами.

Пока не реализованы:
