Уведомления CloudPayments в Telegram: оплаты, отказы и возвраты в одном чате

Уведомления CloudPayments в Telegram в nana800 собирают из трёх блоков: «webhook» принимает данные платежа, «webhook response» отвечает CloudPayments {"code":0}, а «Telegram message send» пишет в личку или рабочую группу. CloudPayments сам присылает уведомление на адрес схемы при оплате, отказе и возврате, свой сервер не нужен. Одно уведомление - это два запуска базового блока, ответ CloudPayments бесплатный.

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

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

  • Сообщение о каждой оплате (уведомление Pay): сумма, валюта, номер заказа InvoiceId, почта покупателя и последние цифры карты
  • Отказы в оплате (Fail) с причиной из полей Reason и ReasonCode: менеджер связывается с покупателем, пока тот не передумал
  • Возвраты (Refund): сумма и номер исходной оплаты PaymentTransactionId, чтобы бухгалтерия видела каждый возврат
  • Двухстадийная оплата: у Pay со статусом Authorized деньги только заблокированы, и сообщение напомнит подтвердить заказ
  • Отличать проверочные платежи тестового сайта: у них TestMode равен 1, и блок «condition» может их пропускать
  • Видеть оплату ссылок, созданных блоком «CloudPayments»: номер заказа из блока приходит в уведомлении как InvoiceId

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

  1. 1

    Создайте схему и сразу поставьте ответ

    Создайте схему с триггером «webhook»: метод POST, путь, например /cloudpayments. Сразу за триггером поставьте бесплатный блок «webhook response»: в body json впишите {"code":0}, status оставьте OK. Ответ идёт первым, чтобы CloudPayments получил его на любое уведомление и в пределах своих 30 секунд ожидания.

  2. 2

    Укажите адрес в кабинете CloudPayments

    Включите схему и скопируйте адрес вебхука на странице «API». В личном кабинете CloudPayments откройте настройки сайта и включите уведомления Pay, Fail и Refund. В каждое вставьте этот адрес с пометкой в конце: ?type=pay, ?type=fail или ?type=refund. Метод выберите POST, кодировку UTF-8.

  3. 3

    Разведите уведомления по типам

    После ответа поставьте блок «condition»: query.type равно pay. Ветку, где условие верно, ведите в «Telegram message send» о покупке. Вторую ветку - в ещё один «condition» с проверкой fail: его верная ветка получает сообщение об отказе, а оставшаяся - о возврате. Блоки «condition» бесплатные.

  4. 4

    Соберите тексты сообщений

    В каждом блоке Telegram укажите токен бота от @BotFather и ID чата. Поля уведомления лежат в body под именами из документации CloudPayments: Amount - сумма через точку, Currency - валюта, InvoiceId - номер заказа, Email, CardLastFour - последние четыре цифры карты, Reason - причина отказа, DateTime - время по UTC.

  5. 5

    Проверьте на тестовом сайте

    Проведите оплату на тестовом сайте CloudPayments и откройте историю запусков схемы: там видны пришедшие поля и ответ {"code":0}. Если сообщения нет, посмотрите error_text в результате блока Telegram. Не выключайте схему: выключенная отвечает ошибкой 409, а включённая стоит 0,42 ₽ в час.

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

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

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

  • CloudPayments

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

  • Telegram

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

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

  • amoCRM + Telegram

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

  • Битрикс24 + Telegram

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

  • Email + Telegram

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

  • Gmail + Telegram

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

  • HTTP-запрос + Telegram

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

  • ChatGPT (OpenAI) + Telegram

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

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

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

CloudPayments сочтёт уведомление недоставленным и повторит его до 100 раз с паузами 1, 2, 5, 10 и 30 минут. Так бывает, когда схема выключена: вебхук отвечает кодом 409. Без блока «webhook response» nana800 ответит {"finished":true,"default":true}, а это тоже не {"code":0}. После включения схемы повторы дойдут, и сообщения появятся с опозданием.

Лучше не надо. Check приходит до списания денег, и CloudPayments проводит платёж, только если получил {"code":0}. Схема с «webhook response» одобрит все платежи подряд, а выключенная схема или сбой связи обернутся отказом в оплате. Для сообщений в Telegram хватает Pay, Fail и Refund: они приходят уже после операции.

Нет. CloudPayments подписывает уведомления в заголовках Content-HMAC и X-Content-HMAC, а блока, который пересчитает такую подпись, в nana800 нет. Значит, поддельное уведомление может прислать любой, кто узнал адрес. Если по уведомлению вы что-то выдаёте, добавьте блок «CloudPayments» с операцией get_payment и номером TransactionId: настоящая оплата вернёт статус Completed. Это ещё два запуска.

Подходит и обычная форма (application/x-www-form-urlencoded), и JSON: триггер «webhook» разбирает оба формата и кладёт поля в body под теми же именами. Метод в настройках уведомления должен совпадать с методом триггера, удобнее POST. Пометка ?type=pay в конце адреса попадает в query и не влияет на путь вебхука.

CloudPayments к этому моменту уже получил {"code":0} и повторять уведомление не станет. В результате блока Telegram останется error_text с причиной, например неверный ID чата, а неотправленное сообщение не списывается. Сам платёж не пропадёт: его данные остаются в истории запусков схемы и в кабинете CloudPayments.

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

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

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