Интеграция сайта и CMS с ЮKassa: ключи, вебхуки и тестирование
Table of contents
Зачем нужна интеграция ЮKassa
Интеграция ЮKassa (ю касса) позволяет принимать онлайн‑платежи банковскими картами, СБП, электронными кошельками и другими методами прямо на вашем сайте, в мобильном приложении или CMS. Правильно настроенные ключи, вебхуки и API обеспечивают стабильный прием платежей, корректное отображение статусов и автоматическую синхронизацию с вашим бэкендом и отчетностью.
Если вы только начинаете, зарегистрируйте аккаунт и выполните вход в Личный кабинет. Новым мерчантам поможет страница Регистрация, а при проблемах входа — разделы Вход и Ошибки входа. Восстановить доступ можно через Восстановить доступ.
Схема работы: от клиента до платежа
![Схема интеграции ЮKassa — последовательность шагов клиента, сайта, API и вебхуков]
Коротко о потоке:
- Клиент выбирает товар и жмет «Оплатить».
- Ваш сайт/магазин создает платеж через API ЮKassa (иногда это делает установленный плагин CMS).
- Пользователь оплачивает на защищенной платежной странице.
- ЮKassa отправляет вебхук о статусе платежа на ваш endpoint.
- Вы подтверждаете оплату, отгружаете товар и формируете отчетность.
Ключи ЮKassa и учетные данные
Для безопасной интеграции вам потребуются несколько типов ключей/идентификаторов. Они различаются по назначению — от доступа к API до проверки подписи уведомлений.
| Тип ключа/идентификатора |
Где получить |
Где используется |
| Shop ID (идентификатор магазина) |
Личный кабинет |
В Basic-авторизации запросов к API |
| Secret Key (секретный ключ) |
Личный кабинет |
Подпись/авторизация API-запросов, валидация уведомлений в ряде сценариев |
| Секрет вебхука (подпись) |
При создании webhook в ЛК |
Проверка подлинности уведомлений от ЮKassa |
| OAuth-токен (опционально) |
По расширенным сценариям |
Интеграции с партнерскими решениями, требующими OAuth |
Где получить ключи
- Зайдите в Личный кабинет под своей учетной записью. Если еще нет аккаунта — пройдите Регистрацию.
- Перейдите в раздел настроек интеграции и сгенерируйте Secret Key. Скопируйте его в конфигурацию бэкенда/плагина.
- Создайте вебхук и зафиксируйте «секрет для уведомлений» — он нужен для проверки подписи сообщений.
Как хранить и кто должен иметь доступ
- Храните ключи в переменных окружения или менеджерах секретов (не в репозитории).
- Раздавайте доступ только администраторам, соблюдайте политику наименьших привилегий. Подробнее — в разделе Безопасность.
Вебхуки ЮKassa: настройка и проверка подписи
Вебхуки ЮKassa уведомляют ваш сервис о смене статуса платежа. Это важно, потому что клиент может закрыть браузер сразу после оплаты, а ваш сервер все равно получит финальный статус.
Ключевые события:
| Событие |
Назначение |
| payment.waiting_for_capture |
Платеж авторизован и ожидает подтверждения с вашей стороны |
| payment.succeeded |
Платеж успешно завершен, можно отгружать товар |
| payment.canceled |
Платеж отменен |
| refund.succeeded |
Возврат успешно проведен |
Рекомендации по настройке вебхуков:
- Создайте HTTPS endpoint, доступный из интернета (например, /api/yookassa/webhook).
- Включите логирование запросов и ответов вебхука (без сохранения персональных данных).
- Верифицируйте подпись: вычисляйте HMAC по телу запроса и сравнивайте с подписью из заголовков/настроек, используя «секрет для уведомлений».
- Возвращайте HTTP 200 в случае корректной обработки, иначе ЮKassa может повторять доставку уведомления.
API ЮKassa: основные запросы
Интеграция через API ЮKassa (api юкасса) строится вокруг операций с платежами и возвратами. Ниже — базовые действия.
- Создать платеж: POST /payments
- Получить платеж: GET /payments/{payment_id}
- Подтвердить (capture) платеж: POST /payments/{payment_id}/capture
- Отменить платеж: POST /payments/{payment_id}/cancel
- Создать возврат: POST /refunds
Советы по реализации:
- Авторизация: используйте Basic Auth со связкой Shop ID + Secret Key.
- Идемпотентность: в запросах на создание платежа и возврата передавайте заголовок Idempotence-Key (уникальный UUID на операцию), чтобы избежать дублей при повторных попытках.
- Валюта и суммы: работайте в рублях и корректно округляйте суммы до двух знаков.
- Таймауты и повторы: закладывайте повтор запросов и обработку сетевых ошибок.
Минимальный пример JSON-тела создания платежа (сокращенный):
{
"amount": { "value": "100.00", "currency": "RUB" },
"capture": true,
"confirmation": { "type": "redirect", "return_url": "https://example.ru/return" },
"description": "Заказ №1001"
}
Отслеживать статусы, сверять оплаты и формировать выгрузки удобно через раздел Платежи и отчеты.
Плагины CMS ЮKassa: WordPress, 1C‑Битрикс, OpenCart и др.
Если вы используете CMS/CMF, готовые плагины ЮKassa ускоряют запуск.
Популярные платформы:
- 1C‑Битрикс, Битрикс24
- WordPress + WooCommerce
- OpenCart
- CS‑Cart
- PrestaShop
- MODX
- Drupal
Общий порядок установки плагина (может незначительно отличаться):
- Установите модуль через маркетплейс вашей CMS или скачайте дистрибутив.
- Активируйте модуль и перейдите в его настройки.
- Укажите Shop ID, Secret Key, включите тестовый режим при необходимости.
- Задайте URL для вебхуков (если модуль не делает это автоматически).
- Настройте способы оплаты (карты, СБП, кошельки и др.).
- Проведите тестовый платеж и проверьте корректность статусов заказов в админке.
Плагины CMS ЮKassa обычно уже умеют:
- Создавать платежи и обрабатывать ответы API;
- Подписывать и валидировать уведомления (вебхуки ю касса);
- Сопоставлять статусы «Оплачен», «Ожидает оплаты», «Отменен».
Тестовый режим и чек-лист перед запуском
Тестирование критично, чтобы в продакшене не возникли незапланированные отказы. Включите тестовый режим в Личном кабинете и выполните следующие проверки:
- Проверьте успешный платеж и отмену.
- Проверьте сценарий waiting_for_capture, если у вас двухстадийная схема (auth+capture).
- Оформите частичный возврат и убедитесь, что статус в CMS и вашей CRM корректно обновился.
- Смоделируйте повторную доставку вебхука: ваш endpoint должен быть идемпотентным и обрабатывать дубликаты безопасно.
- Проверьте корректный редирект на return_url после успешной оплаты и корректное отображение страницы заказа.
- Убедитесь, что бухгалтерская и аналитическая отчетность сходится, а комиссии учтены согласно Тарифы и комиссии.
Совет: используйте тестовые карты из официальной документации и зафиксируйте все кейсы в чек-листе — это упростит дальнейшую регрессию.
Безопасность: лучшие практики
Интеграция платежей — зона повышенной ответственности. Следуйте рекомендациям:
- Обновляйте плагины и SDK, используйте LTS-версии языка/фреймворка.
- Храните ключи и секреты только на серверной стороне. Не выкладывайте их в Git или клиентский JavaScript.
- Подтверждайте все входящие вебхуки по подписи, проверяйте содержание событий и соответствие суммы/заказа.
- Шифруйте трафик (HTTPS), используйте современные шифросuites и HSTS.
- Ограничьте доступ к админке CMS и Личному кабинету, включите MFA. Подробнее — в разделе Безопасность.
- Для мобильных приложений используйте нативные SDK и прокси-сервер для операций, требующих секретов. См. раздел Мобильная интеграция.
Отладка и типичные ошибки
Ниже — частые ситуации при интеграции с api юкасса и способы их решения.
| Симптом |
Возможная причина |
Что проверить |
| HTTP 401/403 при обращении к API |
Неверный Shop ID или Secret Key |
Синхронизируйте ключи из ЛК, проверьте формат Basic Auth |
| HTTP 400/422 при создании платежа |
Некорректные поля запроса |
Валюта, формат суммы, уникальный Idempotence-Key |
| Вебхуки не приходят |
Неверный URL или SSL-проблемы |
Доступность endpoint из интернета, срок действия сертификата |
| Несовпадение суммы/статуса |
Ошибка бизнес-логики в обработчике |
Идемпотентность хэндлера, валидация подписи вебхука |
| Дубли платежей |
Повтор запроса без Idempotence-Key |
Генерируйте уникальный ключ для каждой операции |
Если проблема связана с доступом к аккаунту — проверьте Ошибки входа или Восстановить доступ. По техническим вопросам и эскалации обращайтесь в Поддержку.
Для сверки транзакций и актов используйте материалы в разделе Платежи и отчеты.
FAQ по интеграции ЮKassa
- Можно ли запустить без разработчика? Да, с CMS это реально: установите официальный модуль, укажите ключи и пройдите тестовые платежи.
- Сколько занимает подключение? От 30 минут (CMS) до 1–2 дней для кастомного бэкенда с вебхуками и проверкой подписи.
- Что выбрать: одностадийную или двухстадийную оплату? Если вы отгружаете не сразу, двухстадийная схема (authorize + capture) безопаснее для возвратов и частичных списаний.
- Как учитывать комиссии? Сверяйте информацию в Тарифы и комиссии и автоматизируйте выгрузки через Платежи и отчеты.
Итоги и следующий шаг
Интеграция с ЮKassa — это понятная последовательность: получить ключи, подключить API или плагин CMS, настроить вебхуки, протестировать сценарии и соблюсти требования безопасности. Следуйте этому руководству, и вы быстро начнете принимать платежи без лишних рисков и потерь.
Готовы к запуску? Зайдите в Личный кабинет, проверьте настройки, выполните контрольные тесты и при необходимости напишите в Поддержку. Удачных продаж!