Платежи и возвраты Stripe в Telegram: Stripe присылает событие, бот пишет в чат

Чтобы получать уведомления о платежах Stripe в Telegram, адрес триггера «webhook» из nana800 добавляют в Stripe как адрес для событий, а блок «Telegram message send» пишет в чат о каждой оплате и возврате. Нужны аккаунт Stripe и бот от @BotFather, код и свой сервер не нужны. Одно событие - это два запуска базового блока, а баланс каждый месяц бесплатно пополняется до 350 ₽.

Собрать в конструкторе

Что можно автоматизировать

  • Получать сообщение о каждой успешной оплате по событию payment_intent.succeeded: сумма, валюта и описание платежа
  • Узнавать о возвратах по событию charge.refunded: сколько вернули покупателю (amount_refunded) и по какому платежу
  • Видеть оплаты по ссылкам Stripe Checkout, созданным блоком «Stripe Request»: событие checkout.session.completed несёт почту покупателя
  • Раскладывать оплаты и возвраты по разным темам одной рабочей группы через поле «ID темы в группе»
  • Отдельно сообщать о крупных платежах: бесплатный блок «condition» сравнивает сумму с порогом, который вы задали
  • Проверять схему на событиях тестовой среды Stripe: у них поле livemode равно false, и такие сообщения легко пометить

Как настроить

  1. 1

    Создайте схему с вебхуком

    Создайте схему и добавьте триггер «webhook»: метод POST, путь вроде /stripe-k7q2x9 с несколькими случайными символами, чтобы адрес нельзя было угадать. Включите схему, иначе вебхук отвечает кодом 409. Нажмите кнопку «API» в конструкторе и скопируйте адрес вебхука.

  2. 2

    Добавьте адрес в Stripe

    В Stripe откройте Workbench, вкладку Webhooks, и нажмите Create an event destination. Выберите Your account и формат Snapshot: в формате Thin данных платежа в событии нет. Отметьте события payment_intent.succeeded и charge.refunded, тип Webhook endpoint и вставьте адрес вебхука в поле Endpoint URL.

  3. 3

    Посмотрите, что присылает Stripe

    Проведите платёж в тестовой среде Stripe или выполните в Stripe Shell команду stripe trigger payment_intent.succeeded. В истории запусков схемы в body будут id события, type с его названием и data.object с платежом: amount, currency, description, receipt_email. Сумма в центах: 2500 при валюте usd - это двадцать пять долларов.

  4. 4

    Разведите оплаты и возвраты по разным сообщениям

    Поставьте после триггера бесплатный блок «condition»: type равно payment_intent.succeeded. К ветке, где условие верно, подключите «Telegram message send» с текстом об оплате, ко второй ветке - ещё один с текстом о возврате и суммой amount_refunded. В обоих вставьте токен бота от @BotFather и ID чата, оформление plain_text.

  5. 5

    Сверяйте платёж перед выдачей товара

    Stripe хватает любого ответа с кодом 2xx: nana800 отвечает кодом 200, когда схема закончила работу, так что блок «webhook response» не нужен. Если по сообщению вы выдаёте товар, добавьте блок «Stripe Request» с операцией RETRIEVE_PAYMENT_INTENT и id платежа из события, а за ним «condition»: data.status равно succeeded.

Сколько стоит

Запуск блоков Stripe стоит 0,20 ₽, блоков Telegram - 0,10 ₽. Каждый месяц баланс бесплатно пополняется до 350 ₽, включённая схема стоит 0,42 ₽ в час.

Сервисы в связке

  • Stripe

    Страницы оплаты Stripe Checkout, клиенты, подписки, счета и возвраты прямо из схемы, без программирования. Бесплатный баланс каждый месяц, карта не нужна.

  • Telegram

    Соберите Telegram-бота без кода: ответы на сообщения, кнопки, заявки и уведомления в личку, группу или канал. Бесплатный баланс каждый месяц, карта не нужна.

Похожие связки

  • amoCRM + Telegram

    Новые сделки и смена этапа в amoCRM приходят сообщением в Telegram: в личку или в рабочую группу. Без кода и своего сервера, бесплатный баланс каждый месяц.

  • Битрикс24 + Telegram

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

  • CloudPayments + Telegram

    CloudPayments сообщает об оплате, отказе и возврате, а бот пишет в Telegram сумму, номер заказа и причину отказа. Без кода, бесплатный баланс каждый месяц.

  • Email + Telegram

    Пересылайте новые письма из Яндекс Почты, Mail.ru или корпоративной почты в Telegram без кода: отправитель, тема и текст. Бесплатный баланс каждый месяц, карта не нужна.

  • Gmail + Telegram

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

  • HTTP-запрос + Telegram

    Проверяйте сайт или API по расписанию и получайте сообщение в Telegram, если он не отвечает или вернул ошибку. Без кода и своего сервера, бесплатный старт.

Частые вопросы

Событие - это запуск триггера «webhook» и одно сообщение, то есть два запуска базового блока, 1 000 запусков стоят 100 ₽. Блок «condition» бесплатный, сверка платежа блоком «Stripe Request» добавляет ещё два запуска. Сообщение, которое Telegram не принял, не списывается. Схема ждёт события круглые сутки и стоит 0,42 ₽ в час, на это уходит большая часть бесплатных 350 ₽ в месяц.

Нет. Stripe считает подпись от точного текста запроса, а блоки nana800 получают уже разобранные поля, и блока для такой проверки нет. Значит, событие может прислать любой, кто узнал адрес вебхука, и сообщение будет выглядеть настоящим. Держите адрес в секрете, а перед выдачей товара сверяйте платёж блоком «Stripe Request»: выдуманного платежа в Stripe не найдётся.

Выключенная схема отвечает кодом 409, и Stripe считает доставку неудачной. В рабочем режиме Stripe повторяет такое событие до трёх суток с растущими паузами, в тестовой среде - три раза за несколько часов. Поэтому оплаты, пропущенные за время выключения, ещё придут в Telegram. Событие можно отправить и вручную кнопкой Resend в Stripe в течение 15 дней.

Да. Stripe предупреждает, что изредка доставляет одно событие повторно и не обещает порядок событий. У повтора тот же id события в body.id: добавьте его в текст сообщения, и дубль сразу видно. Не рассчитывайте, что сообщение о возврате всегда придёт после сообщения об оплате.

Скорее всего, адрес в Stripe создан с форматом Thin. В нём событие несёт только ссылку на объект, а саму сумму пришлось бы запрашивать отдельно. Создайте адрес заново с форматом Snapshot: тогда платёж целиком лежит в data.object, и его поля сразу подставляются в текст сообщения.

Схема работает только с уже открытым аккаунтом Stripe, а компаниям из России Stripe аккаунты не открывает. Для оплат в рублях в nana800 есть такие же уведомления в Telegram от ЮKassa, CloudPayments и Т-Банка, они тоже принимаются триггером «webhook».

Соберите первую схему бесплатно

Регистрация бесплатная, карта не нужна. Каждый месяц баланс бесплатно пополняется до 350 ₽, этого хватает примерно на 3 500 запусков простых блоков.

Собрать в конструкторе