Оплата в мессенджере: как собрать flow «чат → ссылка → оплата →…
  • Мессенджеры
  • Автор: Команда CrmAI
  • Опубликовано:
Схема платёжного flow в мессенджере: от чата до чека

Марина из отдела продаж написала мне в пятницу вечером: «Клиент три раза оплатил один заказ. Бухгалтерия в панике. Помогите». Это был интернет-магазин детских товаров — 800 заказов в день через Telegram. Их «платёжный flow» выглядел так: менеджер вручную копировал ссылку на оплату, отправлял в чат, а потом надеялся, что клиент нажмёт только один раз. Спойлер: клиенты нажимают не один раз.

Знакомо? Если вы продаёте через мессенджеры и принимаете оплату по ссылкам — эта статья для вас. Мы разберём, как построить надёжную цепочку от первого сообщения клиента до отправки электронного чека. Без дублей, потерянных платежей и нервных срывов бухгалтерии.

Но сначала — немного контекста. Почему вообще оплата в мессенджерах стала такой горячей темой?

«Мессенджеры превратились из канала общения в полноценную торговую площадку. По нашим данным, 67% клиентов предпочитают завершить покупку там же, где начали диалог. Уход на сайт — это потеря до 40% конверсии».

Продуктовый директор
CrmAI
Цитата

Анатомия идеального платёжного flow

Прежде чем лезть в настройки, давайте разложим процесс на составные части. Любой платёжный сценарий в мессенджере состоит из пяти этапов. Каждый — потенциальная точка отказа. И каждый можно сделать пуленепробиваемым.

1 Чат

Клиент выбирает товар или услугу в диалоге с ботом или менеджером

2 Ссылка

Система генерирует уникальную платёжную ссылку с привязкой к заказу

3 Оплата

Клиент переходит, платит картой, Apple/Google Pay или СБП

4 Подтверждение

Webhook от эквайера приходит в CRM, статус заказа обновляется, клиент получает сообщение

5 Чек

Онлайн-касса формирует чек по 54-ФЗ, ссылка на чек отправляется клиенту

Звучит просто? На бумаге — да. На практике каждый переход — это место, где что-то может пойти не так. Давайте разберём по порядку.

Этап 1. Чат: как довести клиента до кнопки «Оплатить»

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

Типичная ошибка: менеджер ведёт переписку в WhatsApp, а заказ вбивает в CRM по памяти. Клиент сказал «синий», менеджер записал «голубой». Клиент попросил доставку на вторник, менеджер поставил среду. Мелочи? Нет, потерянные деньги на возвратах и негативные отзывы.

Что должен делать бот (или система) на этом этапе

  • Фиксация в CRM в реальном времени. Каждое сообщение клиента должно автоматически попадать в карточку сделки. Никакого «потом перенесу»
  • Валидация данных. Если клиент указывает адрес — бот проверяет формат. Если номер телефона — валидирует. Это экономит часы на разборках
  • Подтверждение состава заказа. Перед отправкой ссылки на оплату — обязательный «сводный» блок: товар, количество, сумма, адрес. «Всё верно? Отправляю ссылку на оплату»
  • Создание уникального order_id. Ещё до генерации платёжной ссылки у заказа должен появиться уникальный идентификатор в вашей системе. Это критично для защиты от дублей

Подробнее о том, как правильно настроить бота для сбора заказов, мы писали в статье про LLM-бота в e-commerce.

Хотите увидеть, как это работает?

Покажем на демо, как CrmAI связывает мессенджер, платежи и CRM в единую систему.

Записаться на демо

Этап 2. Ссылка: генерация без права на ошибку

Вот мы подошли к самому «хрупкому» месту. Платёжная ссылка — это мост между вашей системой и деньгами клиента. Если мост шаткий, деньги упадут мимо.

Помните историю Марины? Три платежа за один заказ случились потому, что ссылка была «многоразовой». Клиент нажал, страница зависла, он нажал ещё раз. И ещё. Три успешных транзакции. Бухгалтерия в шоке, клиент в ярости, бизнес в минусе на возврат комиссий.

Принципы надёжной генерации ссылок

Одноразовость. Ссылка должна работать ровно один раз. После успешной оплаты — деактивироваться. Большинство эквайеров (ЮKassa, Тинькофф, Stripe) это поддерживают, но нужно явно включить в настройках.

Привязка к order_id. В метаданных платежа всегда должен быть ваш внутренний идентификатор заказа. Не «Оплата от Ивана», а «order_id: 2024-12-23-00847». Это спасёт вас при разборках через полгода.

Срок жизни. Ссылка должна «протухать». Обычно — 24 часа. Клиент решил подумать неделю? Пусть просит новую. Это защита от мошенничества и способ триггерить follow-up.

Критическая ошибка

Никогда не используйте одну ссылку для нескольких клиентов. «У нас стандартная цена, зачем каждый раз генерировать?» — слышал не раз. Затем, что вы не сможете понять, кто заплатил, если два клиента перейдут по одной ссылке с разницей в минуту. Каждый заказ — новая ссылка. Без исключений.

Техническая сторона: idempotency key

Если вы интегрируетесь с платёжным шлюзом через API — обязательно используйте idempotency key. Это специальный параметр, который гарантирует, что даже при повторном запросе (например, из-за таймаута) не будет создано два платежа.

Представьте: ваш сервер отправил запрос на создание платежа, но не получил ответ из-за сбоя сети. Он повторяет запрос. Без idempotency key — два платежа. С ним — эквайер вернёт тот же ID первого платежа. Магия? Нет, грамотная архитектура.

  • ЮKassa: параметр idempotence_key в заголовке запроса
  • Stripe: параметр Idempotency-Key
  • Тинькофф: параметр OrderId (уникальный для каждого заказа)

О том, как правильно строить интеграции с платёжными системами и другими сервисами, читайте в нашем гайде по REST API для разработчиков.

Этап 3. Оплата: пользовательский опыт решает

Клиент нажал на ссылку. Что он видит? Если это страница с мелким шрифтом, непонятными полями и логотипом, который он не узнаёт — конверсия падает. Люди не доверяют деньги незнакомцам.

Хорошая новость: современные эквайеры позволяют кастомизировать платёжную страницу. Ваш логотип, ваши цвета, ваше название. Клиент должен понимать, кому он платит.

Чек-лист UX платёжной страницы

  • Брендирование. Логотип компании, фирменные цвета. Клиент сразу понимает: это ваша страница, а не фишинг
  • Чёткое описание. «Оплата заказа #12345 в магазине "Детский мир"» вместо безликого «Оплата»
  • Сумма крупно. Клиент должен увидеть итоговую сумму до того, как вводить данные карты
  • Несколько способов оплаты. Карта, СБП, Apple/Google Pay. Чем больше опций — тем выше конверсия
  • Мобильная оптимизация. 80% оплат из мессенджеров идут с телефона. Страница должна быть идеальна на маленьком экране

«Мы провели A/B тест: стандартная страница эквайера против брендированной. Конверсия выросла с 73% до 89%. Люди не любят отдавать деньги безликим формам».

Руководитель e-commerce проектов
CrmAI
Цитата

Что делать, если оплата не прошла?

Клиент ввёл данные, нажал «Оплатить», и... ошибка. Недостаточно средств, карта заблокирована, технический сбой. Что происходит дальше?

Если ничего — вы теряете клиента. Он закрывает страницу, уходит в другой магазин, забывает про вас. Грустно, но часто.

Правильный сценарий: webhook об ошибке приходит в вашу систему, бот тут же пишет клиенту в чат: «Оплата не прошла. Попробуйте ещё раз или используйте другую карту. Вот новая ссылка: [ссылка]». Клиент не остаётся один на один с проблемой.

  • Плохо: Клиент видит «Ошибка оплаты» и закрывает страницу. Вы узнаёте об этом никогда
  • Хорошо: Бот через 30 секунд пишет: «Вижу, что-то пошло не так. Давайте попробуем ещё раз?»

Этап 4. Подтверждение: webhook — ваш лучший друг

Оплата прошла. Эквайер отправляет webhook в вашу систему. И вот тут начинается самое интересное — или самое болезненное, если вы не подготовились.

Webhook — это HTTP-запрос от платёжной системы к вашему серверу. В нём информация о платеже: статус, сумма, order_id, данные плательщика. Ваша задача — принять, обработать, обновить CRM и уведомить клиента. Звучит просто, но есть нюансы.

Три правила обработки webhook'ов

Правило 1: Отвечайте быстро. Большинство эквайеров ждут ответа не дольше 5-15 секунд. Если ваш сервер «думает» — webhook будет повторён. А это значит возможные дубли обработки. Принимайте webhook, ставьте задачу в очередь, отвечайте «200 OK». Обрабатывайте асинхронно.

Правило 2: Проверяйте подпись. Webhook может подделать кто угодно. Все серьёзные эквайеры подписывают запросы криптографической подписью. Не ленитесь её проверять. Иначе рискуете «подтвердить» оплату, которой не было.

Правило 3: Идемпотентность обработки. Webhook может прийти дважды (таймаут, повтор). Ваша система должна понимать: «Этот платёж я уже обработал» и не делать ничего второй раз. Храните обработанные payment_id, проверяйте перед действиями.

Архитектура обработки платежей

Эквайер Webhook endpoint Очередь задач Обработчик CRM + Уведомление

Асинхронная обработка защищает от таймаутов и дублей

Уведомление клиента: тональность имеет значение

Платёж подтверждён, статус заказа обновлён. Теперь нужно сообщить клиенту. И тут важен не только факт сообщения, но и его содержание.

Сухое «Оплата получена» работает, но не запоминается. А вот «Спасибо! Деньги получили, заказ #12345 уже собирают. Доставим завтра к 14:00» — это сервис. Клиент чувствует заботу.

  • Подтвердите сумму и номер заказа
  • Укажите следующий шаг (когда доставка, как отследить)
  • Дайте контакт для связи, если возникнут вопросы
  • Можно добавить лёгкий апсейл: «Кстати, к этому товару часто берут...»

О том, как правильно строить сообщения бота, чтобы они не раздражали, а продавали, читайте в статье про conversation design для B2B.

Этап 5. Чек: 54-ФЗ и никакой головной боли

Последний этап — отправка чека. По закону 54-ФЗ вы обязаны отправить электронный чек покупателю при дистанционной продаже. Штрафы за нарушение — от 10 000 рублей для ИП до 40 000 для юрлиц. За каждый чек.

Хорошая новость: если вы используете нормальную онлайн-кассу (АТОЛ, Эвотор, Модуль Касса), чек формируется автоматически при получении данных о платеже. Вам нужно только правильно настроить интеграцию.

Что должно быть в чеке

  • Наименование товара/услуги (не «Товар», а «Конструктор LEGO City 60198»)
  • Количество и цена
  • Сумма с НДС (если применимо)
  • Email или номер телефона покупателя для отправки
  • Признак расчёта (приход, возврат, аванс)

Интеграция кассы с мессенджером

В идеальном мире ссылка на чек приходит клиенту прямо в чат — туда же, где он делал заказ. Это удобно: вся история в одном месте. Реализуется это через webhook от кассы или через API: касса формирует чек, отдаёт ссылку, ваша система отправляет её клиенту.

Типичный flow: Эквайер отправляет webhook «платёж успешен» → Ваша система передаёт данные в кассу → Касса формирует чек, возвращает URL → Бот отправляет URL клиенту в мессенджер.

Не забывайте про возвраты

При возврате денег нужно формировать чек возврата. Это тоже требование 54-ФЗ. Если вы автоматизировали прямой платёж — автоматизируйте и обратный процесс. Клиент должен получить уведомление о возврате и чек так же, как получал подтверждение оплаты.

Контроль ошибок: что может пойти не так и как это отловить

Мы прошли весь flow от начала до конца. Теперь о том, что будет ломаться. Потому что будет — это неизбежно.

Типичные ошибки и как их отловить

Ошибка Причина Как отловить Что делать
Двойной платёж Клиент нажал дважды / сбой сети Мониторинг одинаковых order_id за короткий период Автоматический возврат + уведомление
Платёж без заказа Заказ удалён / ошибка в order_id Проверка существования заказа при обработке webhook Алерт в Slack/Telegram, ручной разбор
Webhook не пришёл Сбой сети / ваш сервер был недоступен Сравнение платежей в эквайере с платежами в CRM Ручной запрос статуса через API эквайера
Чек не сформирован Ошибка кассы / неверные данные Мониторинг ответов от кассы, алерт при ошибках Повторная попытка, эскалация на бухгалтерию
Клиент не получил уведомление Ошибка API мессенджера Логирование статуса отправки сообщений Повторная отправка, fallback на email/SMS

Главный принцип: логируйте всё. Каждый webhook, каждый ответ, каждое отправленное сообщение. Когда (не если) что-то сломается — логи будут вашим единственным способом понять, что произошло.

О том, как правильно настроить логирование и мониторинг для ботов, читайте в статье про monitoring AI-ботов.

Защита от дублей: архитектура, а не молитва

Дубли — это боль любого платёжного flow. Двойные платежи, двойные заказы, двойные чеки. Давайте разберём, как защититься на каждом уровне.

Уровень 1: Уникальность ссылки

Каждая платёжная ссылка — одноразовая. После успешной оплаты переход по ней показывает «Оплата уже произведена». Это первый барьер.

Уровень 2: Idempotency на API

При создании платежа используйте idempotency key. Даже если ваш сервер дёрнет API дважды — платёж будет один.

Уровень 3: Дедупликация webhook'ов

Храните обработанные payment_id в базе. Перед обработкой webhook проверяйте: «Я уже видел этот платёж?». Если да — отвечайте «200 OK» и ничего не делайте.

Уровень 4: Блокировка заказа

Когда клиент нажимает «Оплатить» — заказ блокируется на 15 минут. Нельзя создать новую ссылку для этого же заказа, пока не истечёт таймаут или не придёт webhook.

  • Четыре уровня защиты — это не паранойя, это реальность. Каждый уровень отлавливает свой класс проблем

Retention: как превратить платёж в начало отношений

Клиент заплатил. Заказ выполнен. На этом всё? Если да — вы теряете деньги. Момент после оплаты — идеальное время для укрепления отношений.

Почему? Потому что клиент только что принял решение вам доверять. Он ещё «тёплый». Используйте это.

Retention-сценарии после оплаты

День 0: Благодарность и ожидания. Сразу после оплаты — сообщение с благодарностью и чётким планом: когда доставка, как отследить, к кому обратиться с вопросами.

День 1-3: Проактивный статус. Не ждите, пока клиент спросит «Где мой заказ?». Сами сообщите: «Ваш заказ отправлен, вот трек-номер». Это снижает нагрузку на поддержку и повышает лояльность.

День 7-14: Обратная связь. «Как вам товар? Всё понравилось?» Простой опрос на 1-5. Это и NPS, и возможность отловить проблему до того, как она превратится в негативный отзыв.

День 30+: Персональное предложение. На основе истории покупок — релевантный апсейл. «К вашему конструктору идеально подходит набор дополнительных деталей. Специально для вас — скидка 15%».

«Привлечение нового клиента стоит в 5-7 раз дороже, чем удержание существующего. Платёжный flow — это не конец воронки, это начало retention-стратегии».

Head of Customer Success
CrmAI
Цитата

О том, как строить retention-стратегии и предсказывать отток, читайте в нашей статье про Customer Success и предсказание churn.

Итоговый чек-лист: запуск платёжного flow

Если вы дочитали до сюда — вы серьёзно настроены. Вот полный чек-лист для запуска надёжного платёжного flow в мессенджере.

Чек-лист запуска

Подготовка:

  • Выбран эквайер с поддержкой одноразовых ссылок и webhook'ов
  • Онлайн-касса интегрирована с CRM
  • Настроена генерация уникальных order_id
  • Реализована проверка подписи webhook'ов

Защита от дублей:

  • Платёжные ссылки одноразовые
  • Используется idempotency key при создании платежа
  • Реализована дедупликация webhook'ов по payment_id
  • Заказ блокируется на время ожидания оплаты

Уведомления:

  • Клиент получает подтверждение оплаты в чате
  • Ссылка на чек отправляется автоматически
  • При ошибке оплаты — автоматический follow-up
  • Настроены статусные сообщения (отправлен, доставлен)

Мониторинг:

  • Логируются все webhook'и и ответы
  • Настроены алерты на аномалии (дубли, ошибки, таймауты)
  • Регулярная сверка платежей в эквайере и CRM

Заключение: платежи — это не rocket science

Вернёмся к Марине и её трижды оплаченному заказу. После того как мы внедрили нормальный flow — подобных инцидентов больше не было. Ни разу за полгода. При тех же 800 заказах в день.

Никакой магии тут нет. Просто продуманная архитектура: одноразовые ссылки, idempotency keys, дедупликация, мониторинг. По отдельности — ничего сложного. Вместе — надёжная система.

Да, настройка требует времени. Да, придётся разобраться в API эквайеров и касс. Зато окупается быстро — меньше возвратов, меньше ручной работы, клиенты довольнее.

И помните: платёж — это не конец, а начало. Используйте момент «тёплого» клиента для построения долгосрочных отношений. Retention начинается с первого успешного платежа.

Готовы настроить надёжный платёжный flow?

Бесплатно проанализируем ваш текущий процесс и покажем, как его автоматизировать с CrmAI.

Получить консультацию