automation

Как настроить вебхуки о депозитах из платёжного шлюза в алерты Telegram

Пошаговое руководство по передаче вебхуков о депозитах из платёжного шлюза в алерты Telegram: проверка подписи, дедупликация событий, учёт лимитов и уведомление команды.

Продвигайте ваш бизнес в Telegram

CRM, рассылки и поиск лидов. 1 неделя бесплатно.

Продвигайте ваш бизнес в Telegram

CRM, рассылки и поиск лидов. 1 неделя бесплатно.

Продвигайте ваш бизнес в Telegram

CRM, рассылки и поиск лидов. 1 неделя бесплатно.

Продавайте в Telegram

CRM, рассылки и поиск лидов. 1 неделя бесплатно.

Ключевые выводы

  • Для алерта о депозите нужны публичный эндпоинт, проверка подписи, дедупликация по ID события и вызов Telegram Bot API.

  • В документации Stripe сказано пропускать уже обработанные события и возвращать ответ 200, чтобы остановить повторные отправки.

  • Согласно Bots FAQ Telegram, бот не должен отправлять больше примерно одного сообщения в секунду в один чат.

  • Вебхуки и API crmchat позволяют привязать каждый депозит к контакту в Telegram.

Чтобы настроить вебхуки о депозитах, нужно зарегистрировать HTTPS-эндпоинт в платёжном шлюзе, проверять подпись каждого запроса, игнорировать дубликаты событий и пересылать короткое сообщение в чат Telegram через Bot API. Быстро отвечайте статусом успеха, а вызов Telegram делайте уже после этого.

Что нужно подготовить, прежде чем подключать платёжный шлюз к Telegram?

Вам понадобятся токен Telegram-бота, ID чата для алертов, небольшой сервер или инструмент автоматизации, способный принимать HTTPS-запросы, и секрет для подписи вебхуков из вашего шлюза.

Создайте бота через @BotFather, добавьте его в командную группу или канал и запишите ID чата. Токен бота и секрет подписи храните в переменных окружения, а не в коде.

Если не хотите писать сервер, в роли приёмника могут выступить n8n, Make или Zapier. Логика везде одна и та же.

  • Создайте бота в @BotFather и скопируйте токен.

  • Добавьте бота в чат для алертов и отправьте одно тестовое сообщение.

  • Возьмите ID чата из ответа метода getUpdates.

  • Сгенерируйте секрет подписи вебхуков в дашборде шлюза.

  • Разверните HTTPS-эндпоинт, принимающий POST-запросы.

Как убедиться, что вебхук о депозите настоящий?

Нужно пересчитать подпись по исходному телу запроса и вашему секрету, а затем сравнить её с заголовком подписи. Если значения не совпадают, отклоняйте запрос.

Используйте необработанное тело запроса, а не распарсенную и заново сериализованную версию, иначе дайджест будет другим. Сравнивайте функцией с постоянным временем выполнения.

Stripe добавляет временную метку в заголовок Stripe-Signature. Поскольку метка входит в подписываемые данные, злоумышленник не может изменить её, не сломав подпись, а ваше приложение может отклонять устаревшие запросы, как сказано в документации Stripe по вебхукам. Та же документация предостерегает от значения допуска 0: оно отключает проверку актуальности.

Другие шлюзы используют свои названия заголовков и алгоритмы, поэтому прочитайте страницу о подписях у вашего провайдера, прежде чем копировать эту логику.

Как избежать дублирующихся алертов о депозитах?

Сохраняйте ID каждого события и пропускайте любой ID, который уже обрабатывали. Шлюзы повторяют отправку при сбоях, поэтому один и тот же депозит может прийти не один раз.

В документации Stripe сказано пропускать уже обработанное событие и возвращать ответ 200, чтобы остановить дальнейшие повторы. Кроме того, Stripe генерирует новую подпись и временную метку при каждой повторной отправке, как указано в его документации по вебхукам, поэтому никогда не используйте подпись как ключ дедупликации. Используйте ID события.

  1. Достаньте ID события из payload.

  2. Найдите его в таблице базы данных или key-value хранилище.

  3. Если он уже есть, верните ответ об успехе и остановитесь.

  4. Если нет, сохраните ID, затем отправьте сообщение в Telegram.

  5. Верните шлюзу ответ об успехе.

Сохраняйте ID до отправки или помечайте его как «в обработке», чтобы две параллельные доставки не прошли проверку одновременно.

Как отправить алерт в Telegram?

Вызовите метод sendMessage в Bot API, передав ID чата и короткий текст, собранный из полей депозита. Ограничьтесь суммой, валютой, клиентом и статусом.

Полезный алерт выглядит так: «Депозит подтверждён: сумма и валюта, пользователь @handle, ID заказа». Не включайте данные карт и всё, что вы не стали бы вставлять в групповой чат.

Учитывайте лимиты. Согласно Bots FAQ Telegram, бот не должен отправлять больше одного сообщения в секунду в один чат, а при всплесках в итоге появляются ошибки 429. В том же FAQ сказано, что массовые уведомления ограничены примерно 30 сообщениями в секунду, если не включены платные рассылки.

В дни с большим объёмом объединяйте мелкие депозиты в одно сводное сообщение, а крупные отправляйте сразу. Добавьте повторную попытку с нарастающей задержкой на случай ответов 429.

Как связать депозит с контактом в CRM?

Сопоставьте Telegram username или ID плательщика с записью в CRM и обновляйте эту запись, когда приходит платёж. Так отдел продаж получает контекст, а не просто уведомление.

В crmchat есть REST API, который позволяет получать список контактов с фильтром по telegram.username и telegram.id, а затем обновлять поля, например кастомное свойство со статусом депозита. Полный список эндпоинтов смотрите в API crmchat.

crmchat также умеет отправлять исходящие события через вебхуки, которые срабатывают на contact.created, contact.updated и contact.deleted и подписаны заголовком HMAC-SHA256. Это значит, что смена статуса депозита у контакта может запустить второй сценарий в n8n, Make или Zapier.

В базе знаний crmchat также отмечено, что платёж в Stripe или любой другой триггер может запустить последовательность аутрича в Telegram, так что первый депозит способен автоматически запустить приветственное сообщение.

Для команд из iGaming владельцы сделок уже получают алерты в Telegram, когда лид отвечает. Алерты о депозитах добавляют к этой картине платёжную сторону. Про платёжные риски читайте в материале как проверять высокорисковые процессинги.

Как протестировать и мониторить настройку?

Отправьте тестовые события из песочницы шлюза, убедитесь, что на каждый ID события приходит ровно одно сообщение в Telegram, а затем намеренно вызовите сбои и посмотрите, как работают повторные отправки. Сделайте это до запуска в продакшен.

  • Отправьте тестовое событие о депозите и убедитесь, что алерт пришёл один раз.

  • Повторите то же событие и убедитесь, что второго алерта нет.

  • Отправьте payload с неверной подписью и убедитесь, что он отклонён.

  • Намеренно верните ошибку сервера и посмотрите, как шлюз повторяет отправку.

  • Логируйте каждый ID события, статус и код ответа Telegram.

  • Настройте оповещение на случай, если депозитов нет необычно долго.

Если алерты перестали приходить, сначала проверьте сертификаты эндпоинта и права бота. Наше руководство про остановившиеся вебхуки Telegram разбирает сторону Telegram. Для крупных переводов добавьте шаг с участием человека: процесс подтверждения двумя людьми.

FAQ

Можно ли отправлять вебхуки о депозитах прямо в Telegram без сервера?

Напрямую нельзя: шлюз присылает payload в своём формате, а Telegram ожидает вызов Bot API. Используйте no-code инструмент, например n8n, Make или Zapier, как промежуточное звено, либо небольшую serverless-функцию.

Почему я получаю один и тот же алерт о депозите дважды?

Шлюзы повторяют отправку, если не получили ответ об успехе вовремя, так что дубликаты — это нормально. Сохраняйте ID событий и, как советует документация Stripe, пропускайте уже обработанные события и возвращайте ответ 200.

Сколько алертов в секунду может отправить Telegram-бот?

В Bots FAQ Telegram сказано держаться ниже примерно одного сообщения в секунду в одном чате. Массовые уведомления ограничены примерно 30 сообщениями в секунду без платных рассылок.

Публиковать алерты о депозитах в группе или в личном чате?

Используйте закрытую командную группу, где есть только те, кому нужно видеть платежи. Не включайте в сообщение чувствительные данные, а вместо этого давайте ссылку на запись в CRM.

Читать далее

Последние отобранные посты для вас