Запрос "telegram бот с robokassa для онлайн школы" обычно возникает в момент, когда простая ссылка на оплату уже не устраивает. Нужно, чтобы ученик увидел оффер в Telegram, оплатил курс, получил чек, попал в нужный сегмент, открыл доступ и не завис между платежным кабинетом, LMS и менеджером.

Короткий вывод: Robokassa закрывает прием платежа и фискальный контур, а Telegram-бот должен закрыть клиентский путь вокруг него. В Strelo этот путь можно собрать как коммерческий сценарий: создать заказ, отправить платежную ссылку, принять подписанный ResultURL, записать покупку в CRM и запустить ветку после оплаты.

Для онлайн-школы Robokassa стоит подключать не как одиночную ссылку, а как часть платежного контура: заказ, подписанный ResultURL, чек, статус в CRM, доступ и поддержка.
Для кого

Кому подойдет статья

Онлайн-школа

Нужно принимать оплату за курс, вебинар, тариф или клуб и автоматически понимать, кому выдавать доступ.

Продюсер запуска

Важны платежные статусы, дожим неоплативших, передача менеджеру и понятная картина выручки.

Администратор воронки

Нужно проверить ResultURL, SuccessURL, FailURL, чек, повторные уведомления и сценарий поддержки.

Карта решения

Что должна закрывать связка Telegram и Robokassa

Платежный провайдер отвечает за оплату, но бизнес-результат появляется только когда платеж связан с контактом, доступом и следующим шагом.

КритерийRobokassaTelegram-ботОперационный контур
До оплатыПлатежная форма и способы оплатыОффер, тариф, кнопка, объяснение следующего шагаПродукт, сумма, источник, внешний ID заказа
Во время оплатыОбработка платежа и фискальный контурОжидание статуса, fallback и кнопка поддержкиpending-заказ без завышения выручки
После оплатыResultURL с подписью и номером заказаСообщение об успехе, доступ и инструкцииCRM, теги, рассылка, аналитика, поддержка
Если любой из трех слоев выпадает, ученик может заплатить, но не получить понятный результат.

Где Robokassa находится в контуре онлайн-школы

Robokassa не заменяет Telegram-бот, CRM или учебную платформу. Ее роль конкретная: принять деньги, обработать платежный статус, помочь с чеком и вернуть техническое подтверждение в систему школы. Ошибка начинается, когда платежный сервис воспринимают как всю продажную систему.

У онлайн-школы обычно есть четыре слоя. Первый слой - витрина: вебинар, пост, рассылка, консультация или Telegram-воронка. Второй слой - платеж: сумма, способ оплаты, чек, статус. Третий слой - доступ: курс, группа, закрытый канал, кабинет или запись на созвон. Четвертый слой - учет: контакт, источник, покупка, менеджер, повторные касания и аналитика.

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

Слои

Четыре зоны платежного контура

Оффердо клика
сообщение и тариф

Ученик должен понять, что именно покупает и что будет после платежа.

Оплатаcheckout
Robokassa

Провайдер принимает деньги, обрабатывает платеж и возвращает статус.

Чекпосле платежа
фискализация

Чек, номенклатура, email и налоговый режим проверяются до запуска.

CRMпосле ResultURL
контакт и доступ

Покупка связывается с учеником, тарифом, источником и веткой сценария.

Маршрут

Путь заказа от Telegram до доступа

  1. Выбор продукта

    В боте выбран курс, тариф или вебинар. Система фиксирует сумму, валюту, название и контакт.

  2. Создание платежа

    Robokassa получает параметры заказа и выдает ссылку на оплату. У заказа появляется внешний номер.

  3. ResultURL

    После успешного платежа Robokassa отправляет уведомление. Обработчик проверяет подпись и связывает событие с заказом.

  4. Доступ

    Бот подтверждает оплату, выдает инструкцию, ставит тег покупателя и запускает нужную ветку.

Для кого такой сценарий особенно полезен

Онлайн-школа с одним недорогим вебинаром может временно жить на ручных ссылках. Но как только появляется несколько тарифов, рассрочка, менеджеры, повторные продажи или учебная группа, ручная сверка превращается в источник ошибок.

Первый тип проекта - эксперт или продюсер с запуском. В день продаж приходит много одинаковых вопросов: где оплатить, прошла ли оплата, когда придет доступ, где чек. Бот должен снять базовую нагрузку и передать человеку только спорные случаи.

Второй тип - школа с evergreen-воронкой. Трафик приходит каждый день, оплата идет без вебинара, а доступ нужен сразу. Здесь опасно ждать ручной проверки: ученик платит вечером, а доступ получает утром, пишет в поддержку и теряет доверие.

Третий тип - команда, которая оставляет уроки в GetCourse или другой LMS, но хочет продавать через Telegram. В этом варианте Telegram становится продажным фронтом, Robokassa - платежным шлюзом, LMS - учебным слоем, а CRM отвечает за контакт и повторные касания.

Сценарии

Где связка особенно окупается

Вечерние оплаты

Ученик платит после вебинара ночью и сразу получает доступ без ожидания администратора.

Менеджеры

Отдел продаж видит, кто оплатил, кто бросил checkout и кому нужен ручной ответ.

Реклама

Можно отличить проблему оффера от проблемы платежной формы и считать конверсию по шагам.

Strelo связывает Telegram-воронку, CRM, покупки, рассылки и аналитику в одном рабочем кабинете.
Strelo связывает Telegram-воронку, CRM, покупки, рассылки и аналитику в одном рабочем кабинете.

Как выглядит правильный путь ученика

Начинать нужно не с кабинета Robokassa, а с карты пути. Ученик видит оффер, выбирает тариф, получает понятное платежное сообщение, оплачивает, возвращается в Telegram и сразу понимает следующий шаг. Если оплата не прошла, он получает спокойный fallback, а не пустоту.

Технически у Robokassa есть три важные точки: страница оплаты, ResultURL для уведомления о успешной оплате, SuccessURL для возврата клиента после оплаты и FailURL для неуспешного сценария. Для бизнеса самая важная точка - ResultURL, потому что именно она подтверждает оплату для системы, а не просто для человека.

По официальной документации ResultURL получает уведомление после успешного платежа. Обработчик должен проверить подпись и вернуть текст OK плюс номер заказа. Если подпись не сходится, событие нельзя считать оплатой. Если обработчик не отвечает корректно, платежная система будет ретраить уведомление.

ResultURL

Что проверить в обработчике Robokassa

ResultURL нужен не для красивого возврата пользователя, а для серверного подтверждения оплаты.

КритерийПравильноОпасно
ПодписьПроверять SignatureValue с Password 2 до любых действийСчитать оплатой любой входящий запрос
ОтветВернуть OK плюс InvId, если событие принятоВернуть HTML-страницу или JSON там, где протокол ждет текст
ИдемпотентностьИспользовать InvId или внешний ID заказа как стабильный ключСоздавать новую покупку при каждом повторном webhook
КонтактСвязать платеж с contactId, заказом или pending-записьюИскать ученика только по email, если email мог не прийти
Для Robokassa авторитетный сигнал оплаты - подписанное уведомление, а не факт возврата пользователя на страницу успеха.
Тариф выбранЗаказ pendingResultURL проверенПокупка completedДоступ выдан
Статусы лучше хранить как отдельные состояния. Клик по оплате не равен completed.

Что делает Strelo вокруг Robokassa

В Strelo Robokassa подключается через commerce-слой. Нода Заказ создает внешний заказ, сохраняет pending-запись в contact_purchases, получает payment_url и кладет ссылку в переменную сценария. Дальше сообщение в боте может отправить эту ссылку ученику.

Когда Robokassa присылает ResultURL, Strelo проверяет подпись через Password 2, разбирает данные, связывает событие с контактом и обновляет покупку. Для Robokassa обработчик возвращает plain text OK с InvId, как требуется протоколом. Это важно: платежный вебхук не должен быть просто страницей успеха.

У Strelo есть и отдельная нода Оплата Robokassa как платежный gate. Она отправляет кнопку оплаты и кнопку проверки платежа. Если webhook уже подтвердил заказ, нода может продолжить сценарий по paid-ветке. Если платеж еще не найден, пользователь остается на шаге и видит понятное сообщение ожидания.

Strelo

Что уже есть в платежном слое

Заказиз ноды
payment_url

Нода Заказ создает внешний orderId и сохраняет ссылку оплаты в переменную сценария.

Webhookподпись
ResultURL

Robokassa-событие проверяется до записи покупки и до запуска ветки после оплаты.

CRMpending и completed
contact_purchases

Заказ и покупка живут рядом с контактом, продуктом, суммой, валютой и внешним ID.

Повторыбез дублей
dedup

Повторный webhook не должен второй раз выдавать доступ или задваивать выручку.

Гейт оплаты

Как нода оплаты ведет пользователя

  1. Сообщение с кнопкой

    Бот отправляет понятный текст и кнопку Оплатить со ссылкой Robokassa.

  2. Ожидание

    Если оплата еще не найдена, пользователь остается на шаге и может проверить платеж позже.

  3. Подтверждение

    Когда ResultURL подтвердил заказ или проверка статуса нашла оплату, сценарий идет по ветке paid.

  4. Поддержка

    Если платеж отменен или не проходит, бот дает безопасный маршрут к оператору.

Чек и фискализация: где нужна осторожность

Для онлайн-школы чек - не декоративная деталь. Покупатель ожидает подтверждение, бухгалтерия ожидает корректный состав заказа, а поддержка должна понимать, что отвечать на вопрос "где чек". Robokassa публично описывает несколько решений для чеков и онлайн-кассы, включая Robokassa Online, Robocheki и Robocheki SMZ.

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

Важно не обещать ученику автоматический доступ раньше, чем платеж подтвержден. Кнопка, клик и переход на checkout не равны оплате. Оплаченным считается только заказ, который получил доверенный статус от Robokassa и прошел проверку подписи.

Чек и доступ

Что нельзя смешивать в одном шаге

Фискализация, доступ и CRM - разные процессы. Их нужно проверить вместе, но не заменять один другим.

КритерийЧекДоступCRM
Кто отвечаетRobokassa, кассовое решение и настройки продавцаTelegram-сценарий, LMS или администраторStrelo или другая учетная система
Когда проверятьДо рекламного запуска, включая состав позицииПосле подтвержденного платежаПри каждом изменении статуса заказа
Типовая ошибкаНе передали email или номенклатуруВыдали доступ после клика, но до оплатыНе связали заказ с конкретным контактом
Проверочный платеж должен закончиться не только списанием, но и чеком, записью в CRM и доступом.
Риски

Где чаще ломается запуск

Чек проверили последним

Команда убедилась, что карта списывается, но не проверила состав чека, email и сценарий возврата.

Доступ зависит от человека

Оплаты вечером и в выходные копятся до ручной сверки, а поддержка получает вопросы от уже оплативших учеников.

CRM не знает тариф

Деньги пришли, но в контакте не видно, какой продукт куплен и какую ветку запускать дальше.

Как не потерять оплату между Robokassa и Telegram

Самая неприятная поломка выглядит так: деньги списались, ученик вернулся в Telegram, а бот молчит. Обычно причина в том, что сценарий полагался на SuccessURL или на ручной клик, а не на серверное уведомление.

SuccessURL удобен для UX: человек возвращается после оплаты и видит понятное сообщение. Но он не должен быть единственным источником правды. Пользователь может закрыть окно, сеть может оборваться, встроенный браузер может не вернуться в Telegram. ResultURL от Robokassa должен оставаться авторитетным сигналом.

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

Сбои

Три ситуации, которые нужно отработать

ResultURL не дошел

Провайдер повторяет уведомление. Обработчик должен быть доступен и возвращать корректный OK-ответ.

Подпись не совпала

Запрос нельзя принимать как оплату. Нужен лог ошибки и безопасный ответ без выдачи доступа.

Контакт не найден

Система должна найти pending-заказ или связать платеж по сохраненному contactId, иначе поддержка останется без контекста.

Повторы

Как не задвоить выручку и доступ

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

КритерийЧто хранитьПочему важноЧто будет без этого
external_order_idInvId или собственный orderIdСвязывает webhook с исходным заказомПовторный webhook создаст дубль
contact_idID ученика в CRMПонимаем, кому выдать доступОплата есть, а получатель неизвестен
statuspending, completed, failed, refundedДеньги считаются только после completedАналитика покажет выручку, которой нет
Идемпотентность - это не техническая роскошь, а защита от двойной выдачи доступа и неверной выручки.

Как писать платежное сообщение в боте

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

Хороший текст короткий. Например: "Вы выбрали тариф Практика. Стоимость 9900 руб. Нажмите Оплатить, после подтверждения бот пришлет доступ и инструкцию. Если ссылка не открылась, нажмите Помощь". В таком сообщении нет лишней SEO-воды, зато есть снятие тревоги.

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

UX оплаты

Что должно быть в платежном сообщении

Что покупает

Название курса, тариф, срок доступа и главный результат без длинного описания.

Сколько платит

Итоговая сумма и валюта, без сюрпризов на checkout.

Что делать при сбое

Кнопка помощи, повторная ссылка или операторский маршрут для спорных случаев.

Воронка

Какие шаги нужно считать отдельно

Примерная модель для диагностики. После запуска замените значения реальными данными из воронки.

Увидели оффер100%

Стартовая база конкретного предложения

Нажали оплату42%

Проверяет текст, цену и доверие к офферу

Завершили checkout27%

Показывает качество платежной формы и способы оплаты

Получили доступ26%

Проверяет ResultURL, CRM и post-payment ветку

График не является отраслевым benchmark. Это шаблон, какие переходы стоит измерять в онлайн-школе.

Тарифы, рассрочка и промокоды

У онлайн-школ редко бывает один единственный платеж. Обычно есть базовый тариф, тариф с куратором, VIP-пакет, ранняя цена, промокод, рассрочка или частичная предоплата. Все это нельзя прятать в свободный текст, иначе поддержка не поймет, что именно человек купил.

Перед отправкой в Robokassa бот должен знать продукт и тариф. В заказе полезно хранить не только сумму, но и код оффера, название тарифа, источник скидки, срок доступа, ответственного менеджера и правило post-payment. Тогда после оплаты не нужно угадывать, какой доступ открывать.

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

Тарифы

Как разные модели оплаты меняют сценарий

Robokassa принимает платеж, но логика доступа зависит от того, что именно продает школа.

КритерийМодельЧто хранить в заказеЧто делать после оплаты
Один курсФиксированная сумма за один продуктproduct_id, сумма, срок доступаОткрыть курс и отправить инструкцию
Несколько тарифовБаза, куратор, VIP или пакетtier_id, код тарифа, состав пакетаОткрыть правильный уровень доступа
ПредоплатаБронь места или первый платежтип платежа, остаток, дедлайн доплатыПоставить тег брони и запустить напоминание
ПромокодСкидка от запуска, партнера или менеджеракод скидки и источникСчитать экономику канала без ручных пометок
Чем больше тарифных вариантов, тем опаснее держать смысл покупки только в тексте платежа.
Платеж курса
Контакт
Telegram ID
email или телефон
источник
Заказ
InvId
сумма
статус
Продукт
курс
тариф
срок доступа
После оплаты
доступ
тег
инструкция
Такая структура помогает поддержке быстро понять, что именно оплатил ученик и что должно произойти дальше.

Что делать с неоплаченными заказами

Заказ в pending - это не провал. Это теплый сигнал. Человек дошел до оплаты, значит он понял оффер и готов сравнивать условия. Если его бросить, часть денег уйдет в тишину.

Дожим должен быть аккуратным. Через 20-30 минут можно напомнить о ссылке и дать способ написать менеджеру. Через сутки можно спросить, что остановило: цена, способ оплаты, сомнение по программе или техническая проблема. После этого контакт лучше перевести в отдельный сегмент, а не гонять по той же ветке.

Важно разделять неоплаченный заказ и отказ. Если человек нажал кнопку оплаты, но не завершил платеж, это один сценарий. Если человек выбрал "не сейчас", это другой сценарий. Если платеж отменен или возвращен, это третий сценарий с отдельной поддержкой.

Pending

Как работать с неоплаченным заказом

  1. 20-30 минут

    Напомнить о ссылке, но не давить. Добавить кнопку помощи, если checkout не открылся.

  2. Через сутки

    Спросить, что остановило: способ оплаты, цена, программа или техническая проблема.

  3. Передача менеджеру

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

  4. Сегмент

    Перенести контакт в сегмент теплых, но не оплативших. Не повторять ту же ветку бесконечно.

Дожим

Как различать неоплату, отказ и сбой

Одинаковые сообщения всем pending-контактам снижают доверие. Лучше разделять причину.

КритерийСостояниеДействиеТон сообщения
Нажал оплату и не завершилpending с payment_urlПовторная ссылка и помощьСпокойный, без давления
Написал вопросЕсть диалог или тег возраженияПередача менеджеруПерсональный
Платеж отмененfailed или refundedПоддержка и проверка причиныАккуратный, без автодоступа
Дожим после checkout работает лучше, когда бот понимает состояние заказа, а не просто рассылает всем одинаковую ссылку.

Интеграция с LMS и GetCourse

Многие школы не хотят переносить уроки из LMS. Это нормально. Telegram-боту не обязательно становиться учебным кабинетом. Его задача - продать, объяснить, принять оплату, зафиксировать контакт и передать ученика туда, где лежит обучение.

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

Самая опасная архитектура - когда бот, платежный кабинет и LMS знают разные версии правды. Например, в Robokassa оплата есть, в Telegram доступа нет, в LMS ученик не найден. Поэтому перед рекламой нужно пройти тестовый заказ от начала до конца и проверить все три слоя.

LMS

Что передавать после оплаты курса

Даже если обучение живет в другой системе, Telegram-продажа должна сохранять контекст.

КритерийПолеЗачем нужноОшибка без поля
ТарифКод продукта или tierВыдать правильный доступУченик получает не тот пакет
КонтактTelegram ID, email или CRM IDСвязать оплату с ученикомПоддержка ищет платеж вручную
ИсточникКанал, UTM, пост или рассылкаПонять, какой трафик окупаетсяМаркетинг видит только общую выручку
LMS может оставаться учебным слоем, но платежная правда должна быть связана с Telegram-контактом.
После оплаты важны не только деньги, но и сегмент, рассылка, поддержка и повторная продажа.
После оплаты важны не только деньги, но и сегмент, рассылка, поддержка и повторная продажа.

Проверка перед рекламным трафиком

Не запускайте рекламу сразу после того, как появилась платежная ссылка. Минимальный тест должен пройти как реальный ученик: новый контакт, выбор тарифа, переход на Robokassa, оплата в тестовом или боевом режиме на малой сумме, ResultURL, запись покупки, выдача доступа, повторный вебхук, вопрос в поддержку.

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

В аналитике нужно считать не только оплаченные заказы. Полезны четыре числа: дошли до оффера, нажали оплату, завершили платеж, получили доступ без обращения в поддержку. Тогда понятно, где чинить воронку: текст оффера, checkout, webhook или post-payment ветку.

Чеклист

Проверка перед трафиком

Тестовый платеж

Проведите заказ от Telegram до Robokassa и обратно, включая мобильный сценарий.

Webhook

Проверьте подпись, OK-ответ, повторное уведомление и недоступность обработчика.

Чек

Проверьте фискализацию, email, состав позиции, возврат и поддержку вопроса о чеке.

CRM

Убедитесь, что в контакте видны заказ, статус, сумма, продукт и источник.

Доступ

Проверьте, что доступ выдается только после confirmed payment и не дублируется.

Поддержка

Подготовьте ответ для случаев: оплата прошла, доступа нет, чек не пришел, карта не проходит.

QA

Минимальный сценарий проверки

Этот список стоит пройти до первой рекламной кампании на вебинар или курс.

КритерийПроверкаОжидаемый результатЧто фиксировать
Новая оплатаНовый контакт проходит по веткеЗаказ pending, потом completedexternal_order_id, contact_id, сумма
Повтор webhookТо же уведомление отправлено второй разДубль покупки не созданЛог dedup или известный заказ
Ошибка подписиSignatureValue не совпадаетДоступ не выданБезопасный отказ и лог
НеоплатаКлик был, платежа нетКонтакт ушел в pending-дожимПричина и следующий контакт
Если тестовый платеж прошел только в платежном кабинете, но не в CRM и не в доступе, запуск еще не готов.

Итог

Robokassa для онлайн-школы полезна, когда платеж встроен в управляемый клиентский путь. Сама по себе ссылка на оплату не решает доступ, чек, CRM, поддержку и дожим. Правильная схема строится вокруг заказа: created, pending, completed, доступ выдан, поддержка видит контекст.

Если школа продает через Telegram, удобнее собирать этот контур в платформе, где воронка, покупка, контакт и постплатежные действия связаны. В Strelo Robokassa может быть частью такого сценария: заказ создается в боте, ResultURL подтверждает оплату, CRM фиксирует покупку, а дальше запускается нужная ветка для ученика.

Запуск

Соберите оплату Robokassa как часть Telegram-воронки

В Strelo можно связать оффер, заказ, платежную ссылку, ResultURL, покупку в CRM, доступ и дожим неоплативших без отдельной связки из таблиц и ручной сверки.

Открыть Strelo

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

Можно ли продавать курс через Telegram-бота и Robokassa?

Да. Рабочая схема: бот создает заказ, отправляет платежную ссылку Robokassa, принимает ResultURL, записывает покупку в CRM и выдает доступ или инструкцию после подтверждения.

Что важнее для бота: SuccessURL или ResultURL?

ResultURL важнее для учета оплаты, потому что это серверное уведомление. SuccessURL полезен для возврата клиента, но не должен быть единственным основанием для выдачи доступа.

Нужно ли онлайн-школе проверять чек отдельно?

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

Что делать, если человек оплатил, но бот не выдал доступ?

Сначала проверьте ResultURL, подпись, связь с contactId и статус заказа. Поддержка должна видеть внешний номер платежа, тариф, сумму и контакт, чтобы быстро восстановить доступ.

Как Strelo помогает с Robokassa?

Strelo помогает собрать платеж как часть Telegram-воронки: заказ, payment_url, ResultURL, contact_purchases, CRM, ветка после оплаты, дожим pending-заказов и операторская поддержка.

Можно ли оставить обучение в GetCourse, а продавать через Telegram?

Да. В таком варианте Telegram-бот продает и подтверждает оплату, Robokassa принимает платеж, а LMS остается учебным кабинетом. Главное - передавать правильный доступ и хранить связь с контактом.

Почему нельзя считать клик по кнопке оплаты покупкой?

Клик означает только намерение. Покупка считается оплаченной после доверенного статуса от Robokassa, обычно через подписанный ResultURL.