Вебхуки для новых заказов
Вебхук отправляет каждый новый заказ и каждое его изменение в вашу систему как подписанное JSON-сообщение. Вы даёте Menuthere HTTPS-адрес и секрет, а затем проверяете подпись каждого запроса. Кнопка проверки и журнал доставок позволяют убедиться, что всё работает.
- Где
- Set up by Menuthere support
- Тариф
- Панель не ограничивает вебхуки по тарифу.
- Время
- 15 мин
- Обновлено
Настройте вебхук
Шаг 1: Отправьте поддержке свой адрес
Вебхуков в панели пока нет, поэтому их настраивает поддержка Menuthere. Отправьте поддержке адрес, который будет получать заказы. Он должен начинаться с https:// и быть доступен из интернета. Адреса вроде localhost или из частной сети вызвать нельзя.
Шаг 2: Сохраните секрет подписи
Поддержка включает вебхуки заказов и даёт вам секрет подписи. Храните его только на своём сервере. С его помощью вы проверяете, что каждый запрос действительно пришёл от Menuthere.
Шаг 3: Попросите тестовое событие
Попросите поддержку отправить тестовое событие. Оно отправляет пример order.created на ваш адрес, а результат показывает Delivered с кодом ответа вашего адреса или то, что пошло не так.
Что отправляет Menuthere
| Событие | Когда отправляется |
|---|---|
| order.created | Заказ оформлен. |
| order.status_updated | Меняется статус заказа, например принят, еда готова или выполнен. |
| payment.status_updated | Заказ отмечен оплаченным или меняется способ оплаты. |
| delivery.status_updated | Назначен курьер или меняется состояние доставки. |
| Заголовок | Значение |
|---|---|
| x-menuthere-event | Название события. |
| x-menuthere-timestamp | Unix-время в секундах, при каждой попытке ставится заново. |
| x-menuthere-signature | Шестнадцатеричный HMAC-SHA256 исходного тела запроса, посчитанный с вашим секретом. |
Тело — это конверт с event, уникальным id, created_at и data. Тестовое событие также несёт "test": true, так что не передавайте его на кухню. Для order.created в data лежат поля ниже.
| Поле | Содержимое |
|---|---|
| order_id, order_number | ID заказа и номер, который видит ваша команда. |
| status, type, placed_at, currency | Текущий статус, тип заказа, время оформления и валюта. |
| totals | subtotal, delivery_charge, packing_charge, gst, discount, grand_total. |
| customer | name, phone, address. |
| table | number и name стола для заказа за столом, иначе пусто. |
| items | Каждая строка: name, quantity, unit_price, total_price, variant, notes. |
| notes, payment | Примечание клиента, а также method оплаты и is_paid — оплачен ли заказ. |
Проверка и надёжность
- Сверяйте подпись с исходным телом запроса. Если разобрать и заново закодировать JSON, изменятся пробелы и порядок, и подпись не совпадёт.
- Будьте идемпотентны. Один и тот же id может прийти дважды. Используйте его, чтобы не создать второй кухонный тикет.
- Отвечайте 2xx быстро. Menuthere ждёт 8 секунд на попытку и пробует до трёх раз: через 1,5 секунды, а затем через 5. Таймаут, 5xx, 408 и 429 повторяются. Любой другой 4xx понимается как осознанный отказ, и повторы прекращаются.
- Смотрите Recent deliveries. Панель показывает попытки за последние 24 часа, самые новые первыми, с кодом ответа и временем. Каждый повтор — отдельная строка.
Вопросы
Можно ли направить вебхук на сервер в моей собственной сети?
Можно ли сообщить кассе, что заказ принят?
Хранится ли журнал доставок вечно?
См. также
Не нашли ответ? Напишите на [email protected] или в чат, с 9:00 до 21:00.Справочный центрЦеныmenuthere.com
