Приём оплат через ЮKassa
Этот гайд для тех, кто продаёт прямо в диалоге: кофейни, магазины, курсы, услуги. Бот создаёт платёж в ЮKassa, отправляет клиенту ссылку на оплату, ждёт результата и ведёт сценарий дальше в зависимости от исхода — «Оплачено» или «Не оплачено».
Не путайте с оплатой тарифа botvk: подписка на платформу оплачивается через платёжный аккаунт самой botvk в разделе «Биллинг». Здесь речь о вашей собственной интеграции ЮKassa, через которую деньги от клиентов поступают напрямую вам.
Шаг 1. Подключите ЮKassa в настройках workspace
- Откройте раздел «Настройки → Интеграции».
- В карточке «YooKassa (ЮKassa)» заполните два поля: shopId и секретный ключ из личного кабинета ЮKassa.
- На стороне ЮKassa обязательно укажите URL для уведомлений:
https://api.botvk.ru/integrations/yookassa/webhook— без него бот не узнает о результате платежа.
Ключи хранятся на сервере в зашифрованном виде (AES-GCM) и принадлежат только вашему workspace — глобальных ключей платформа не использует. После сохранения секретные поля очищаются в форме: для обновления ключ вводится заново. Входящий вебхук дополнительно защищён IP-allowlist’ом ЮKassa и повторной проверкой платежа через API с вашими ключами.
Редактировать интеграции могут только владелец и администратор workspace.
Шаг 2. Добавьте блок «YooKassa: оплата»
Перетащите блок «YooKassa: оплата» из категории «Интеграции» на холст. Что он делает: создаёт платёж в ЮKassa, шлёт подписчику ссылку на оплату и ждёт результата.
Настройки:
- «Сумма, ₽» (обязательное) — число или переменная в фигурных скобках, например
1990или{total}. Переменная подставится суммой из сценария на момент платежа — удобно, если сумма посчитана блоком «Вычисление». - «Описание платежа» — видно подписчику в форме оплаты и в чеке; можно использовать переменные, например «Заказ в кофейне».
- «Сохранить id платежа в переменную (необязательно)» — идентификатор платежа YooKassa, по умолчанию
payment_id; пригодится для возврата или проверки статуса в следующих блоках.
Шаг 3. Подключите ветки «Оплачено» и «Не оплачено»
У блока два выхода:
| Выход | Когда срабатывает |
|---|---|
| «Оплачено» | Платёж успешно завершён |
| «Не оплачено» | Оплата не прошла или не состоялась |
- После «Оплачено» отправьте подтверждение заказа, выдайте товар или доступ, создайте лида в CRM или уведомьте менеджера.
- После «Не оплачено» напомните о заказе или предложите помощь с оплатой.
Пример: заказ → оплата → подтверждение
Базовая связка выглядит так:
- Бот собирает заказ (например, блоком «Выбор из вариантов»).
- Блок «Вычисление» считает сумму в переменную
total(формула вроде{qty} * 250). - Блок «YooKassa: оплата» с суммой
{total}отправляет ссылку на оплату. - Ветка «Оплачено» — сообщение «Спасибо, заказ оплачен!»; ветка «Не оплачено» — «Оплата не прошла, попробовать ещё раз?».
Шаг 4. Проверьте оплату в режиме «Тестирование»
Во вкладке «Тестирование» редактора бота сценарий прогоняется прямо в браузере — без отправки в VK и без реальных API-вызовов. Для платёжных блоков в окне теста появляется кнопка «Оплатить (тест)»: нажмите её, чтобы пройти ветку «Оплачено» и убедиться, что подтверждение и следующие блоки работают как задумано. Реальные деньги при этом не списываются.
Типовой сценарий
- Триггер «Старт по команде» — команды
/start, заказать. - «Выбор из вариантов» — клиент выбирает товар, выбор сохраняется в переменную
service. - «Запросить значение» (тип «Число») — количество, сохраняется в
number. - «Вычисление» — формула
{number} * 250, результат в переменнуюtotal. - «Отправить сообщение» — «Ваш заказ:
{service}×{number}. К оплате:{total}₽». - «YooKassa: оплата» — сумма
{total}, описание «Заказ:{service}», id платежа вpayment_id. - Выход «Оплачено» → «Отправить сообщение» — подтверждение заказа, затем «Уведомить менеджера в VK» — «Оплаченный заказ от
{first_name}на{total}₽». - Выход «Не оплачено» → «Отправить сообщение» — «Оплата не прошла. Попробуйте ещё раз или напишите нам».