Визард «Приём оплаты через ЮKassa»
Визард «Приём оплаты через ЮKassa» собирает приём платежей целиком: заказ → оплата → страница статуса → приёмник уведомлений. Разбираем поля мастера, три сценария, которые он строит, подключение кабинета ЮKassa и проверку цепочки на тестовом магазине.
ЮKassa принимает платежи и сообщает сайту о результате. Чтобы это заработало, сайту нужно четыре вещи: тип «Заказ», сценарий оплаты, страница статуса и приёмник уведомлений. Визард создаёт всё разом — вам остаются данные шопа и два клика в кабинете ЮKassa.
Что понадобится
- Shop ID — личный кабинет ЮKassa → Настройки → Магазин.
- Секретный ключ — Настройки → API-ключи. Для проверки годится ключ тестового магазина.
- Сценарий, на холст которого встанет оплата (или пустой новый — визард любит чистый холст).
Где найти визард
Админка → «Сайт» → сценарий → тулбар → «Пресеты» → карточка «Приём оплаты через ЮKassa». Визорд также доступен при создании сценария — в окне создания есть поле «Начать с пресета».

Поля мастера
| Поле | Что вписать |
|---|---|
| Тип контента для заказов | Существующий тип заказов или новый — визард предложит создать «Заказы» (order) с полями title, amount, status, payment_id |
| Shop ID | Из кабинета ЮKassa; только цифры |
| Поле суммы | Свойство типа, куда пишется сумма (amount); подойдёт 990, 990.5 или 990.00 — в ЮKassa уйдёт "990.00" |
| Поле статуса | Свойство статуса заказа (status) |
| Секретный ключ магазина | API-ключ шопа; уезжает в «Секреты» как yookassa_basic и никогда не попадает в сценарий открытым текстом |
| Секрет в URL уведомлений | Случайная строка ≥8 символов — войдёт в адрес приёмника, который вы впишете в кабинете |
| Адрес сайта | https://ваш-сайт — на него вернут покупателя и на него же придут уведомления |
| Путь страницы возврата | Куда вернуть покупателя после оплаты, по умолчанию /payment/return |

Что собирает визард
Одна заявка «Создать» — и в проекте появляются три сценария, два маршрута и шаблон:
| Артефакт | Роль |
|---|---|
| Основной сценарий (на ваш холст) | Заказ → платёж → редирект на ЮKassa |
Сценарий payment_return |
Страница статуса: показывает «оплачен / в обработке» |
Сценарий yookassa-hook |
Приёмник уведомлений: переводит заказ в «paid» |
Маршрут <путь возврата> (GET) |
Держит страницу статуса; кэш отключён (TTL 0) |
Маршрут /yookassa-hook/<секрет> (POST) |
Принимает уведомления; кэш отключён (TTL 0) |
Шаблон payment_return.liquid |
Разметка страницы статуса — правится в «Файлах» |
Основная цепочка читается сверху вниз: Начало → GraphQL (создать заказ со статусом pending) → HTTP POST к api.yookassa.ru/v3/payments — авторизация Basic из «Секретов», ключ идемпотентности — свежий uuid — → GraphQL (дописать заказу payment_id) → Редирект 303 на confirmation_url из ответа ЮKassa.

Приёмник уведомлений работает так: по payment_id и сумме из уведомления выбирается заказ; если совпадение нашлось — статус меняется на paid и ЮKassa получает 200 {"ok":true}, если нет — 400 {"error":"mismatch"}, заказ не трогается.
Подключить кабинет ЮKassa
- Скопируйте URL приёмника из подсказки визарда:
https://<адрес сайта>/yookassa-hook/<секрет>. - Личный кабинет ЮKassa → Настройки → HTTP-уведомления → впишите этот URL.
- Подключите событие
payment.succeeded— его достаточно для перевода заказов в «paid».
Проверка на тестовом магазине
Цепочка проверяется end-to-end на тестовом магазине ЮKassa:
- оформление заказа уводит на yoomoney-чек (303) и после оплаты возвращает на страницу статуса;
- уведомление получает
200, заказ — статус «Оплачен», страница возврата показывает «Заказ оплачен»; - уведомление с чужой суммой получает
400, заказ не меняется; - запрос с неверным секретом в URL получает
404.
Тонкости
- Сумма нормализуется фильтром
money— в заказ можно вписать990,990.5или990.00, а в ЮKassa уйдёт всегда"990.00": Liquid печатает числа в минимальной записи («990»), поэтому формат фиксирует фильтр, а не тип поля. - ЮKassa не подписывает уведомления — вместо проверки подписи визард использует неугадываемый URL с секретом и сверку суммы с заказом. Подключайте в кабинете только
payment.succeeded. - Кассовые чеки 54-ФЗ визард не собирает — их стоит подключать отдельно, если вы на НМЦК.
payment_idпоявляется не сразу: на шаге чекаута его ещё нет, сценарий дописывает его в заказ вторым запросом уже после создания платежа.- Обе страницы не кэшируются (TTL 0): статус и вебхук всегда отвечают живыми данными.
- Сумма сверяется по заказу: если посетитель откроет страницу статуса до оплаты, шаблон честно покажет «ещё не оплачен».
Частые вопросы
| Вопрос | Ответ |
|---|---|
| Все уведомления получают 404 | Не совпадает секрет в URL или сценарий yookassa-hook не опубликован. Сверьте URL в кабинете с подсказкой визарда. |
| Заказ не становится «Оплачен» | Проверьте, что URL уведомлений вписан в кабинете и что сумма в заказе равна сумме платежа — расхождение отвечает 400. |
| Хочу принимать не рубли | Валюта RUB зашита в узле платежа — поменяйте её в конфигурации HTTP POST-узла на холсте. |
| Страница возврата показывает «ещё не оплачен» после оплаты | Обновите страницу через минуту: уведомление могло ещё дойти. Если не помогает — сверьте URL уведомлений и журнал запусков yookassa-hook. |
См. также: Пресеты сценариев · Узлы-действия: что умеет каждый · Черновик, превью и публикация