
Разбор для бизнеса · 08.10.2026
Webhook сообщает о событии: агенты проверяют отправителя, содержание и повторную доставку
Что такое вебхук, когда событию можно доверять и какие проверки забрать вместе с обработчиком. На документах провайдеров и нашей продаже курса.
Текст подготовлен машиной агентов под редакцией Евгения Шилова · факты проверены 8 октября 2026
Webhook сообщает вашему сайту о событии, а право выдать товар требует отдельной проверки.
На обработчике продажи нашего курса разберём, почему проверка подписи пропускала оплату чужого товара и какие проверки нужны перед выдачей.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Webhook приносит сообщение, а действие определяет ваш код.
Webhook, или вебхук, связывает событие в одном сервисе с вашим сайтом. Вы заранее указываете адрес приёмника. Когда событие происходит, сервис отправляет туда сообщение: например, платёж сменил статус.
Запрос через API вы начинаете сами: спрашиваете кассу, оплачен ли заказ. С вебхуком касса обращается к вашему сайту после изменения. ЮKassa описывает именно такой обмен в документации, проверенной 8 октября 2026.
ИИ-агенты могут написать приёмник и проверки вокруг него. После выпуска сообщения разбирает серверный код по заданным правилам. Поэтому при покупке разработки нужно согласовать, какой результат считается верным.
Событие и результат отвечают на разные вопросы.
Документация ЮKassa и GitHub, проверка 08.10.2026. Последняя строка описывает предлагаемую приёмку.
2. Подпись подтверждает отправителя, а товар проверяется отдельно.
Адрес вебхука не удостоверяет отправителя. Знание адреса позволяет отправить туда запрос. До изменения заказа обработчик проверяет подлинность сообщения способом, который описан у выбранного сервиса.
Способы проверки различаются. GitHub описывает подпись сообщения с секретом, а ЮKassa предлагает проверить статус объекта через API или IP-адрес отправителя. Агенту нужны документы конкретного поставщика.
Подлинное сообщение тоже бывает неподходящим для действия. В одном кабинете кассы продаются разные продукты, и подпись у их уведомлений проходит одну проверку. Доступ к курсу требует покупки курса.
В задании нужно связать событие с вашим заказом. Товар, сумма и валюта сверяются с условиями этого заказа, включая согласованные скидки. Тестовая оплата остаётся в тестовом сценарии.
Приёмник проверяет основание для действия.
Документация GitHub и ЮKassa, наше ревью цепочки продажи от 09.09.2026. Состав сверки заказа предложен редакцией; проверено 08.10.2026.
3. Повторная доставка должна закончить работу без повторной выдачи.
Сервис может прислать событие повторно. Например, ваш сайт выполнил действие, но отправитель не получил ответ из-за обрыва связи. Повтор уведомления должен встретить уже записанный результат.
Номер сообщения помогает узнать повтор, но выдачу привязывают ещё и к заказу. Stripe предупреждает, что разные события могут относиться к одному объекту. Запрет выдать тот же доступ повторно должен работать и при одновременных запросах.
Состояние каждого шага записывают отдельно. Доступ уже создан, письмо ещё не отправлено: повтор продолжает доставку письма. Пометка «всё обработано» сразу после создания доступа оставляет следующий шаг без восстановления.
Порядок прихода тоже требует правила. Stripe не гарантирует порядок доставки, поэтому старое уведомление не должно возвращать оплаченный заказ в ожидание. При сомнении обработчик запрашивает текущее состояние у провайдера.
Повтор сохраняет результат и завершает недоставленное.
Stripe, разделы о повторах и порядке; наша история письма доступа от 09.09.2026. Проверено 08.10.2026. Это условия приёмки, а не замер внедрения всех защит на нашем сайте.
4. Ревью нашей продажи нашло ошибку между оплатой и доступом.
Наш опыт относится к vibecoding.ru: клиентского кейса такого обработчика у нас нет. Инженер ведёт машину агентов, которая строит сайт и его продажу курса. Ревью своей цепочки обнаружило условия, при которых человек получил бы неверный доступ или остался бы без письма.
Проверка дошла дальше подписи. Кабинет кассы общий для продуктов, поэтому в обработчик добавили сверку товара. Уведомление об оплате другого товара перестало служить основанием для доступа к курсу.
Вторая находка касалась восстановления. Повтор узнавал уже созданный доступ и пропускал письмо, даже если отправка упала. Исправление отделило результат выдачи от результата отправки.
Ревью превратило условия сбоя в правила.
09.09
Ревью: подпись подтверждала кабинет кассы, а обработчик открывал курс без сверки товара. Правило после ревью: перед доступом сверяется товар покупки.
09.09
Ревью: при уже созданном доступе повтор пропускал неотправленное письмо. Правило после ревью: отправка проверяется по журналу писем, сбой позволяет повторить незавершённый шаг.
Собственное ревью цепочки продажи курса, 09.09.2026; оригинальная запись сверена 08.10.2026. Это найденные до боевых продаж условия, а не рассказ о потерянных платежах.
Смысл защиты от повторов здесь двойной: сохранить выданное и закончить недоставленное. Проверка «мы уже видели этот запрос» закрывает только первую половину. Полезный результат продажи включает письмо, с которым покупатель сможет войти.
Техническую ошибку разбирают вместе с ответственностью за ошибки агента. В случае вебхука приёмка касается всей цепочки до покупателя. Успех приёма сообщения не заменяет результат последнего шага.
Наша открытая машина агентов показывает изменения сайта и роль инженера. Счётчик подтверждает работу на своём продукте. Проверки конкретного вебхука подрядчик показывает отдельно.
5. Агенту ставят задачу вместе с условиями отказа и восстановления.
Фраза «подключите вебхук» оставляет исполнителю слишком много решений. Запишите, какое событие принимаем, от какого сервиса и что должно измениться у покупателя. Хорошая задача для ИИ-агента заканчивается наблюдаемым результатом.
Агенту передают пример сообщения без данных реального покупателя. Для написания кода хватает тестовых заказов и описания проверки подписи. Обращение с данными клиентов у агентов стоит согласовать до начала работы.
Исполнитель пишет проверки на успешную доставку и на отказ. Чужой товар с подлинной подписью нужен в наборе примеров так же, как верная покупка. Иначе ошибка из нашей истории снова останется за пределами теста.
Человек принимает смысл этих проверок. Какие статусы дают право выдать товар, что делать после возврата и кто видит сбой, решает владелец процесса. Эти решения записывают в приёмку обработчика.
Готовность проверяют отказом, повтором и восстановлением.
Приёмочная таблица редакции по документам провайдеров и собственному ревью; 08.10.2026. Сценарии проверяют на тестовых данных.
6. Обработчик сдают вместе с журналом результата и способом повторить шаг.
Подтверждение доставки и выполнение действия имеют разные статусы. ЮKassa принимает ответ HTTP 200 как подтверждение получения уведомления. Покупатель может ещё ждать письмо или доступ.
Долгую работу можно передать в очередь, как рекомендует GitHub. Тогда до ответа отправителю событие должно быть сохранено так, чтобы пережить остановку процесса. После ответа повтором и восстановлением управляет уже ваша система.
Журнал связывает событие, заказ и выполненные шаги. Руководителю нужен ответ «что получил покупатель», а инженеру ещё и причина отказа или место остановки. По такому журналу выбирают следующий шаг исправления.
Журнал отличает получение от результата.
Предлагаемая модель приёмки по GitHub и собственной истории доступа; 08.10.2026. Это разные состояния работы, не готовый интерфейс нашего сайта.
После остановки приёмника сверяют пропущенные события с данными провайдера. У повторов есть ограничения, и согласованный способ восстановить заказ пригодится после их окончания. Исчезнувшее сообщение не появится от одного наличия журнала.
Если обработчик нужно заказать, передайте исполнителю таблицу проверок и пример заказа. На странице агентной разработки по подписке тариф «Один проект» стоит 250 000 ₽ в месяц на 8 октября 2026. Обработчик входящего события можно обсудить как отдельную задачу с согласованными проверками и защитой от повторов.
Это цена месяца работы над проектом. Срок и объём одной задачи определяют после знакомства с вашим сервисом и правилами выдачи. По счётчику нашего сайта их не выводят.
Если сначала нужен следующий шаг для руководителя, начните со страницы для руководителя. Для обсуждения обработчика подготовьте сообщение провайдера и список действий после него.
Сдача заканчивается замкнутой проверкой: событие пришло, основание проверено, результат записан, незавершённое восстановлено. Новая ошибка пополняет проверку и задачу исполнителю. Так сообщение становится управляемой работой.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Договор доставки | Официальные документы ЮKassa, GitHub и Stripe: событие, проверка отправителя, ответ приёмника, повторы и порядок. Способы проверки различаются; универсальная подпись не предполагается | 2026-10-08 |
| Наша цепочка продажи | Оригинальная запись собственного ревью от 09.09.2026: проверка товара и восстановление письма доступа. Описаны условия, найденные до боевых продаж, а не ущерб покупателям. Частные файлы не показаны | 2026-10-08 |
| Публичный след машины | Живой /open и кадр: 7 107 коммитов за 99 дней, счётчик с 1 июля 2026. Длительность воспроизведена как на экране. Это общий счёт изменений сайта, не проверка качества вебхука | 2026-10-08 |
| Условия подписки | Живой /services и кадр: «Один проект» 250 000 ₽ в месяц, один поток; «Все проекты» 500 000 ₽ в месяц, три потока. Это стоимость подписки на работу, не одного обработчика | 2026-10-08 |
| Граница вывода | Таблицы приёмки составлены редакцией по документации и собственному опыту. Клиентского кейса такого обработчика у нас нет; стоимость и срок отдельной задачи не измерялись | 2026-10-08 |
7. Частые вопросы
Что такое webhook URL?+
Адрес в вашей системе, куда сервис отправляет уведомления. Сам по себе адрес не подтверждает отправителя. Рядом с ним нужна настроенная проверка подлинности.
Вебхук и callback означают одно и то же?+
В документации ЮKassa входящие уведомления названы webhook и callback. В других документах callback может означать функцию обратного вызова внутри программы. Смотрите на способ доставки в конкретном API.
Нужно ли постоянно опрашивать API при подключённом вебхуке?+
Вебхук позволяет узнавать об изменениях без постоянного опроса. Отдельный запрос пригодится, чтобы проверить актуальный статус или восстановиться после пропущенного уведомления.
Что такое идемпотентность вебхука?+
Повторная обработка сохраняет уже выполненный результат. Повтор оплаты не создаёт новый доступ, а незавершённый шаг можно продолжить. Защита должна выдерживать и одновременные доставки.
Код 200 означает, что покупатель получил товар?+
Нет. Это код ответа приёмника; его смысл задаёт договор доставки. У ЮKassa он подтверждает получение уведомления. Выдачу товара проверяют отдельной записью результата.
Нужно ли давать агенту настоящий секрет вебхука?+
Для написания кода используют тестовый секрет и тестовые сообщения. Настройку рабочего секрета выполняют в защищённой среде; его значение не требуется в задании или примерах для модели.
Источники
- ЮKassa, «Входящие уведомления» — официальная документация
- GitHub, Best practices for using webhooks — официальная документация
- GitHub, Validating webhook deliveries — официальная документация
- Stripe, Receive Stripe events in your webhook endpoint — официальная документация
- ELMA365, «Вебхук (Webhook): что это, как настроить и проверить» — база знаний вендора
- vibecoding.ru, открытая машина агентов — наш публичный экран
- vibecoding.ru, условия разработки по подписке — наш публичный экран
Запомнить
1. Webhook сообщает о событии. До действия проверьте, что именно оно разрешает сделать.
2. Подлинность и содержание проверяют отдельно. Включите чужой товар в приёмку.
3. Повтор сохраняет выполненное и продолжает незавершённое. Проверьте одновременные доставки.
4. Подтверждайте приём после сохранения события. Ответ сервиса и выдача покупателю имеют разные статусы.
5. Заберите журнал результата и способ восстановить шаг. Ошибку превращайте в проверку до следующего выпуска.