Яндекс Pay – современная платёжная система‚ позволяющая принимать онлайн‑платежи от физических лиц и ИП‚ а также использовать сплит‑платежи и QR‑коды. В статье собраны все необходимые шаги: от регистрации в личном кабинете до финального перехода в боевой режим.
Содержание
- Регистрация и подача заявки
- Технические и юридические требования
- Варианты интеграции
- Web‑SDK (JavaScript)
- API (REST)
- Платёжные ссылки и QR‑коды
- Тестирование и переход в боевой режим
- Безопасность и PCI DSS
- Часто задаваемые вопросы
Регистрация и подача заявки
Первый шаг – создать аккаунт в личном кабинете Яндекс Pay и официально запросить подключение сервиса.
- Перейдите по ссылке https://pay.yandex.ru/ и нажмите «Регистрация».
- Заполните форму:
- Юридическое лицо (ОГРН‚ ИНН‚ КПП).
- Контактные данные ответственного за платёжный процесс.
- Банковские реквизиты для получения средств.
- Отправьте заявку на подключение «Yandex Pay» и‚ при необходимости‚ «Yandex Pay Split».
- Ожидайте подтверждения от службы поддержки (обычно 3‑5 рабочих дней). После одобрения вы получите доступ к:
- API‑ключам (public и secret).
- Настройкам Callback URL.
- Тестовой среде (sandbox).
После получения доступа можно приступать к технической настройке.
Технические и юридические требования
Технические
- HTTPS‑сервер с валидным SSL‑сертификатом (обязательно для всех запросов к API).
- Поддержка Web‑SDK или возможность отправлять HTTP‑запросы к REST‑API.
- Настроенный Callback URL (URL‚ куда Яндекс Pay будет отправлять уведомления о статусе платежа).
- Сервер‚ способный обрабатывать JSON‑payload и проверять подписи (HMAC‑SHA256).
Юридические
- Согласие с условиями использования Яндекс Pay.
- Если вы обрабатываете данные банковских карт напрямую (не через готовый виджет)‚ необходимо пройти сертификацию PCI DSS. При использовании Web‑SDK и готовых форм обработку карт осуществляет Яндекс‚ поэтому сертификат не требуется.
- Соблюдение требований к персональным данным (GDPR‚ ФЗ‑152).
Варианты интеграции
Яндекс Pay предлагает три основных способа подключения: готовый Web‑SDK‚ прямой REST‑API и простые платёжные ссылки/QR‑коды. Выбор зависит от уровня кастомизации и технической компетенции команды.
Интеграция через Web‑SDK (рекомендовано для большинства сайтов)
- Подключите скрипт SDK в
<head>вашего сайта:<script src="https://pay.yandex.ru/sdk/v1/pay.js"></script> - Создайте кнопку оплаты и инициализируйте платёжную сессию:
<button id="yapay-button">Оплатить</button> <script> document.getElementById('yapay-button').addEventListener('click'‚ function { // 1. Запрос к вашему бекенду – создание платёжной сессии fetch('/api/create-payment'‚ {method: 'POST'}) .then(r => r.json) .then(data => { // 2. Запуск SDK с полученными данными YaPay.checkout({ shopId: data.shopId‚ paymentToken: data.paymentToken‚ returnUrl: data.returnUrl‚ // куда вернётся пользователь после оплаты onSuccess: function (result) { console.log('Платёж успешен'‚ result); }‚ onError: function (error) { console.error('Ошибка оплаты'‚ error); } }); }); }); </script> - На сервере реализуйте эндпоинт
/api/create-payment:- Получите от Яндекс Pay publicKey и secretKey.
- Сформируйте запрос
POST /v1/payments(см. официальную документацию API) с параметрами:amount‚currency‚orderId‚description‚callbackUrl. - В ответе Яндекс вернёт paymentToken – передайте его в клиентскую часть.
- Обработайте callback‑уведомления (см. раздел Callback URL ниже).
Прямая интеграция через REST‑API
Подходит‚ если нужен полный контроль над процессом (например‚ для мобильных приложений или сложных бизнес‑логик).
- Получите API‑ключи (Public и Secret) из личного кабинета → Раздел «API‑ключи».
- Создайте платёжную сессию:
POST https://pay.yandex.ru/api/v1/payments Headers: Authorization: Basic BASE64(PublicKey:SecretKey) Content-Type: application/json Body: { "amount": {"value": "1500.00"‚ "currency": "RUB"}‚ "orderId": "ORDER-12345"‚ "description": "Оплата заказа #12345"‚ "returnUrl": "https://example.com/payment/success"‚ "callbackUrl": "https://example.com/api/yapay/callback" } - В ответе получите paymentId и paymentUrl. Перенаправьте пользователя на
paymentUrlлибо отобразите его вiframe. - Обрабатывайте уведомления о статусе платежа (см. раздел Callback URL).
Платёжные ссылки и QR‑коды (самый простой способ)
Если нет возможности менять код сайта‚ можно использовать готовые ссылки.
- Отправьте запрос
POST /ordersк API Яндекс Pay с параметрами:{ "amount": {"value": "500.00"‚ "currency": "RUB"}‚ "orderId": "QR-98765"‚ "description": "Оплата через QR‑код"‚ "callbackUrl": "https://example.com/api/yapay/callback" } - В ответе получите поле paymentUrl. По этой ссылке открывается страница оплаты‚ а также генерируется QR‑код‚ который можно вывести на сайте или в мобильном приложении.
- Для создания QR‑кода используйте любой генератор (например‚ Google Chart API):
https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl=PAYMENT_URL
Обработка Callback‑уведомлений (Webhook)
Яндекс Pay отправляет POST‑запросы на указанный в запросе callbackUrl. Важно:
- Ответить статусом
200 OKв течение 5 секунд – иначе система будет считать запрос неуспешным и повторит попытку. - Проверять подпись сообщения. В заголовке
X-Signatureпередаётся HMAC‑SHA256‚ рассчитанный из тела запроса и вашего secretKey.
Пример проверки подписи на PHP:
<?php
$secret = 'YOUR_SECRET_KEY';
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SIGNATURE'];
$calcSignature = hash_hmac('sha256'‚ $payload‚ $secret);
if (!hash_equals($calcSignature‚ $signature)) {
http_response_code(400);
exit('Invalid signature');
}
// Обрабатываем событие
$data = json_decode($payload‚ true);
if ($data['event'] === 'payment.succeeded') {
// помечаем заказ как оплаченный
}
http_response_code(200);
?>
Тестирование и переход в боевой режим
- Тестовая среда (sandbox) активируется автоматически после одобрения заявки. В личном кабинете переключите «Тестовый режим» → «Включить».
- Создавайте тестовые заказы‚ используя тестовые карты (пример: 4111 1111 1111 1111‚ CVV 123‚ срок действия любой будущий).
- Проверьте:
- Создание платёжной сессии.
- Отображение формы оплаты.
- Работу Callback‑уведомлений.
- Обработку ошибок (недостаточно средств‚ отказ банка).
- После успешного теста перейдите в боевой режим:
- В личном кабинете отключите «Тестовый режим».
- Обновите API‑ключи (если они отличаются для продакшн‑окружения).
- Убедитесь‚ что ваш сервер принимает запросы только от официальных IP‑адресов Яндекс Pay (список в документации).
Безопасность и соответствие PCI DSS
Если вы используете готовый Web‑SDK или платёжные ссылки‚ обработку данных карты выполняет Яндекс‚ поэтому требования PCI DSS к вашему серверу снижаются до уровня PA‑DSS – самый минимальный. Однако следует:
- Регулярно обновлять сертификаты TLS (минимум TLS 1.2).
- Хранить только идентификатор заказа и статус платежа – никаких PAN‑данных.
- Вести журнал всех запросов к API (для аудита).
- При прямой работе с картами (редко) пройти полную сертификацию PCI DSS (уровень 1).
Часто задаваемые вопросы
- Можно ли принимать платежи без регистрации компании? – Нет. Яндекс Pay работает только с юридическими лицами (ООО‚ ИП и т.п.).
- Сколько стоит подключение? – Подключение бесплатно‚ но сервис берёт комиссию с каждой транзакции (обычно 2‑3 % + фиксированная ставка).
- Можно ли использовать Яндекс Pay совместно с другими платёжными шлюзами? – Да. Вы можете добавить кнопку Яндекс Pay рядом с другими сервисами (PayPal‚ Stripe и т.д.).
- Как включить сплит‑платежи? – После одобрения заявки на «Yandex Pay Split» в личном кабинете укажите распределение получателей в параметре
splitпри создании платежа. - Что делать‚ если клиент не получает уведомление о платеже? – Проверьте корректность
callbackUrl‚ доступность сервера и подпись сообщения. Также убедитесь‚ что ваш сервер отвечает статусом 200.
Подключение Яндекс Pay к вашему сайту – процесс‚ который можно выполнить за несколько часов‚ если следовать пошаговой инструкции:
- Регистрация и одобрение заявки.
- Настройка технических требований (HTTPS‚ Callback URL).
- Выбор способа интеграции (Web‑SDK – самый простой‚ API – для полной кастомизации‚ ссылки/QR‑коды – для быстрых решений).
- Тестирование в sandbox‑режиме.
- Переход в боевой режим и мониторинг транзакций.
Соблюдая рекомендации по безопасности и правильно обрабатывая callback‑уведомления‚ вы сможете обеспечить надёжный и удобный приём платежей для своих клиентов.
Удачной интеграции!