АО «Айко»
Услуги
Россия, Москва
Сентябрь 2022
Необходимо было разработать единый модуль интеграции с двумя разными версиями API iiko. У модуля должен иметься единый внешний программный интерфейс.
То есть модуль должен быть так реализован чтобы его использование из Laravel-контроллеров конечного приложения было полностью идентично независимо от того, что использует ресторан: устаревшую версию iikoBizAPI + iikoCardAPI или новую версию iikoCloud API.
В процессе разработки столкнулись со множеством проблем, например:
— Ответ от iiko может приходить не сразу, а через несколько минут, или даже не с первого раза, иногда iiko недоступна для некоторых видов действий (например для размещения заказов) по 1-2 часа. Поэтому некоторые задачи необходимо отправлять в диспетчер, который пытается их выполнить "до победного"
— В процессе размещения заказа iiko не блокирует размещаемый заказ от чтения. Поэтому метод синхронизации заказов, который получает заказы пользователей, отсутствующие на сайте (например, сделанные в мобильном приложении или в ресторане по QR-коду) может прочитать ещё не до конца сформированный заказ (в котором, например, вообще нет позиций, но есть сумма итого, или нет части позиций, или ещё не применилась скидка).
— В iiko имеется сложный механизм программ лояльности, к тому же данные на основании, которых iiko решает кому какие скидки выдавать имеются только внутри самой iiko, поэтому даже не стоит пытаться посчитать скидку клиента на своей стороне. Нужно вызывать калькуляцию iiko, чтобы она решала какие скидки доступны клиенту. Применение промо-кодов тоже лучше реализовывать внутри iiko, иначе нельзя будет стыковать скидку промо-кода и другие программы лояльности.
Реализация заняла 5 дней, но ещё около 15 дней заняла отладка, в процессе которой были обнаружены десятки подводных камней и нюансов, которые практически нереально учесть без знания того как работает iiko. Естественно, все эти нюансы не описаны в документациях, и не всегда известны поддержке, часто бывает быстрее самостоятельно разобраться, чем ждать ответ от поддержки.
Так что самое ценное — это опыт, полученный в процессе разработки. Теперь уже мы знаем практически всё об устройстве различных программных интерфейсов iiko и связи этих интерфейсов с другими приложениями экосистемы iiko, такими как iikoChain, iikoBiz и iikoFront.
Есть идея! с удовольствием обсудит вашу задачу