Каким образом в системе iiko можно извлечь информацию о заказе, соответствующую определенному столу, используя номер этого стола?

При интеграции с сервисом iiko, я выполняю запрос на получение заказов по столу используя API по адресу https://api-ru.iiko.services/api/1/order/by_table, на который получаю ответ со статусом 200, но с пустым массивом `orders`. Данный запрос предшествует запросу на инициализацию заказа по столу по адресу https://api-ru.iiko.services/api/1/order/init_by_table, выполненный в соответствии с документацией. Могли бы вы поделиться своим опытом работы с iiko? Какова вероятная причина того, что массив заказов возвращается пустым, и каким образом можно успешно получить данные заказа по ID стола через API, если заказ был создан через терминал?
  • 5 декабря 2023 г. 22:29
Ответы на вопрос 1
Прежде всего, если вы получаете пустой массив `orders` при запросе к iiko API, важно убедиться, что по указанному столу действительно есть активные заказы. Есть несколько причин, по которым запрос может возвращать пустой массив:

1. Нет активных заказов: По запрошенному столу нет открытых или активных заказов в момент выполнения запроса.

2. Параметры запроса: Проверьте, правильно ли вы указали `accessToken`, `organizationId`, и `tableId` в вашем запросе. Ошибки в этих параметрах могут привести к некорректному или пустому ответу.

3. Право доступа: Убедитесь, что ваш API-токен имеет права на выполнение операции получения информации о заказах по столу.

4. Записи не попадают в выборку: Возможно, у вас установлены фильтры (например, дата или время), которые не позволяют попадать заказам в выборку.

5. Тайминги запроса: Выполнение запроса "init_by_table" может создавать новый заказ, который ещё не будет виден при немедленном последующем запросе "by_table" из-за задержек в системе. Убедитесь, что заказ был полностью проинициализирован перед тем, как запрашивать его данные.

Для устранения проблемы:

- Дважды проверьте данные, которые вы отправляете в запросе (в частности, данные `organizationId` и `tableId`).
- Убедитесь, что заказ на столе активен в этот момент. Можно попытаться получить список всех заказов и вручную проверить, есть ли среди них заказы для этого стола.
- Обратитесь в поддержку iiko за помощью или за дополнительной информацией по работе с их API.
- Используйте логирование для отслеживания запросов и ответов, чтобы точно понимать, что отправляется и получается от сервера.
- Прочтите обновления документации API, возможно, произошли изменения, которые повлияли на работу с API.

В вашем случае:

1. Для начала следует вызвать метод `init_by_table` и убедиться, что он успешно создал заказ на столе.
2. После создания заказа нужно дождаться достаточного времени (возможно, несколько секунд), чтобы база данных была обновлена и заказ стал виден для других запросов.
3. Затем можно вызвать метод `by_table` с корректным `accessToken`, `organizationId` и подтвердить, что `tableId` совпадает с ID стола, для которого инициировали заказ.

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