Евгений Герасимов
Подключить · Вебхук

Вебхук Тильды: как передавать оплаченные заказы в службу доставки

Чтобы отправление в Ozon создавалось само, сервис должен узнать об оплаченном заказе. У Тильды для этого есть один путь — вебхук, то есть отправка данных заказа на внешний адрес. Разбираем по справке Тильды, как он работает, как его настроить «только после оплаты», как защитить и что сервис делает с полученным заказом.

Почему именно вебхук

У Тильды нет API заказов. Её API — только на тарифе Business и с лимитом 150 запросов в час — умеет отдавать проекты и страницы, но методов для заказов в нём нет. Статусы заказов в самой Тильде меняются вручную и с внешними системами не синхронизируются.

Поэтому единственный автоматический способ узнать об оплаченном заказе — подключить внешний адрес как «сервис приёма данных», то есть вебхук. Корзина ST100 — это форма, и её данные Тильда умеет отправлять на такой адрес вместе с почтой, CRM и другими приёмниками.

У этого есть важное следствие: обратного канала нет. Статусы Ozon в заказ Тильды не вернуть, а отмену заказа в Тильде сервис не увидит. Поэтому статусы, отмены и возвраты живут в кабинете сервиса.

Как Тильда отправляет вебхук

По справке Тильды:

ЧтоКак устроено
Где настраивается«Настройки сайта → Формы → Webhook», затем подключается в настройках конкретного блока
ПротоколPOST-запрос, только на адрес с HTTPS
Проверка при подключенииТильда присылает тестовый запрос, и адрес должен ответить «ok»
Время на ответ5 секунд; в старом разделе ответов Тильды встречается 7 секунд — ориентируемся на 5
Повторы при ошибкеЕщё две попытки с интервалом в минуту
Где видны ошибки«Заявки → Журнал ошибок»
Какие поля приходятПеременные полей формы — имя, почта, телефон, свои и скрытые поля, плюс номер заявки и номер формы
Дополнительные опцииОтправка cookie, товары массивом, внешний идентификатор, формат JSON

Только после оплаты

Для доставки важно, чтобы отправление создавалось только по оплаченному заказу. В Тильде за это отвечает галочка в настройках платёжной системы: «Отправлять данные в сервисы приёма данных только после оплаты». По справке Тильды она включена по умолчанию и важнее настроек отдельных приёмников.

Проверьте, что галочка стоит. Тогда заказ, который покупатель оформил, но не оплатил, до сервиса не дойдёт, и в Ozon ничего не создастся. Отправление уходит в Ozon только после оплаты — так же, как у встроенных служб Тильды.

Как защищён вебхук

У вебхука Тильды нет подписи запроса и нет официального списка IP-адресов, с которых он приходит. Есть только общий секрет — API-ключ. В настройках вебхука три поля:

  • API Method — где передавать ключ: в заголовке или в теле POST-запроса;
  • API Name — имя заголовка или поля;
  • API Key — сам секрет.

Сервис выдаёт каждому магазину свой секрет и сравнивает его с пришедшим так, чтобы по времени ответа нельзя было подобрать ключ. Публичный идентификатор магазина в адресе вебхука доступа не даёт: без секрета запрос не примут. Если секрет мог попасть не в те руки, выпустите новый в разделе «Установка» кабинета сервиса — старый сразу перестанет работать, и его нужно будет заменить в Тильде.

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

Настройка по шагам

  1. В кабинете сервиса откройте раздел «Установка»: там адрес вебхука вашего магазина и кнопка «Показать секрет».
  2. В Тильде откройте Настройки сайта → Формы → Webhook и вставьте адрес.
  3. Заполните API-ключ: «API Method» — в заголовке, «API Name» и «API Key» — как в кабинете сервиса.
  4. Сохраните. Тильда отправит проверочный запрос, сервис ответит «ok».
  5. Откройте настройки блока корзины ST100 → «Контент» → «Приём данных» и отметьте этот вебхук.
  6. В настройках платёжной системы проверьте галочку «Отправлять данные в сервисы приёма данных только после оплаты».

Новый блок ST100 сам подключается ко всем приёмникам данных проекта. Проверьте «Приём данных» у блока корзины, особенно если вебхук добавлен после блока.

Что сервис делает с заказом

Тильда ждёт ответа не больше 5 секунд, а Ozon иногда отвечает дольше. Поэтому внутри вебхука сервис не обращается к Ozon вообще:

  1. Проверяет секрет магазина.
  2. Смотрит, выбран ли вариант Ozon. Обычные формы и заказы с другими способами доставки сервис не сохраняет и просто отвечает «ok».
  3. Сохраняет заказ и сразу отвечает «ok» — обычно меньше чем за секунду.
  4. Решает, что делать дальше: если пункт есть в справочнике, расчёт цены найден и сделан для того же пункта, а оплачено не меньше расчёта, заказ ждёт передачи в Ozon. Иначе — статус «Нужно ваше решение» с причиной.
  5. Фоновая задача раз в минуту создаёт отправления в Ozon по ждущим заказам.

Повторный вебхук по тому же заказу второго отправления не создаст. Если сервис не смог сохранить заказ, он отвечает ошибкой — и Тильда сама повторит отправку через минуту.

Какие данные нужны сервису

Из вебхука сервис берёт:

  • имя, телефон и почту покупателя — для отправления в Ozon и писем;
  • поле «Доставка» — название варианта и оплаченную цену в виде «Название = цена»;
  • скрытые поля пункта — ozon_point_id, ozon_point_address и ozon_quote_id;
  • данные оплаты и товары — сумму и состав заказа для объявленной стоимости посылки.

Сервис разбирает данные корзины и строкой JSON, и вложенным массивом, а товары — и объектами, и строками. Если скрытые поля не придут, сервис найдёт расчёт по номеру заказа, который виджет передал после оформления.

Если заказ оплачен, а в кабинете его нет

  • Откройте «Заявки → Журнал ошибок» в Тильде: там видно, отвечал ли адрес вебхука и что именно.
  • Проверьте, что вебхук отмечен в «Приёме данных» именно у блока корзины.
  • Проверьте секрет: после выпуска нового его нужно заменить и в Тильде.
  • Проверьте, что в заказе выбран вариант, название которого начинается со слова из настроек сервиса.

Если всё настроено, а заказа нет, ответьте на любое письмо сервиса — разберёмся.

Вопросы

Можно ли подключить вебхук сервиса вместе с CRM и почтой?

Да. У формы может быть несколько приёмников данных: заказ уйдёт и в CRM, и на почту, и в сервис.

Придёт ли в сервис заказ, который покупатель не оплатил?

Нет, если в платёжной системе включена отправка данных только после оплаты. Именно поэтому отправление в Ozon создаётся только для оплаченных заказов.

Что будет, если сервис в момент вебхука недоступен?

Тильда повторит отправку ещё два раза с интервалом в минуту. Ошибки будут видны в журнале ошибок заявок.

Читайте дальше

Регистрация открыта

Подключите Ozon Доставку к Тильде — 50 доставок бесплатно

Регистрация занимает пару минут: почта, сайт и ИНН организации или ИП. Дальше мастер в кабинете проведёт по шагам и сам проверит код, корзину и вебхук. За сервис вы платите только после 50 доставок. Для юрлиц и ИП.

Ozon и Ozon Доставка — товарные знаки их правообладателя, Tilda (Тильда) — товарный знак своего правообладателя. Сервис — независимая разработка: он работает через официальный Ozon Delivery API и штатную корзину Тильды и не является продуктом Ozon или Тильды. Тарифы и условия Ozon могут меняться — актуальные смотрите в кабинете Ozon Доставки.