Яндекс Pay – современная платёжная система

Узнайте, как подключить Яндекс Pay для онлайн-платежей и сплит-платежей, и пройдите все шаги от регистрации до боевого режима

Яндекс Pay – современная платёжная система‚ позволяющая принимать онлайн‑платежи от физических лиц и ИП‚ а также использовать сплит‑платежи и QR‑коды. В статье собраны все необходимые шаги: от регистрации в личном кабинете до финального перехода в боевой режим.


Содержание

  1. Регистрация и подача заявки
  2. Технические и юридические требования
  3. Варианты интеграции
    • Web‑SDK (JavaScript)
    • API (REST)
    • Платёжные ссылки и QR‑коды
  4. Тестирование и переход в боевой режим
  5. Безопасность и PCI DSS
  6. Часто задаваемые вопросы

Регистрация и подача заявки

Первый шаг – создать аккаунт в личном кабинете Яндекс Pay и официально запросить подключение сервиса.

  1. Перейдите по ссылке https://pay.yandex.ru/ и нажмите «Регистрация».
  2. Заполните форму:
    • Юридическое лицо (ОГРН‚ ИНН‚ КПП).
    • Контактные данные ответственного за платёжный процесс.
    • Банковские реквизиты для получения средств.
  3. Отправьте заявку на подключение «Yandex Pay» и‚ при необходимости‚ «Yandex Pay Split».
  4. Ожидайте подтверждения от службы поддержки (обычно 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 (рекомендовано для большинства сайтов)

  1. Подключите скрипт SDK в <head> вашего сайта:
    <script src="https://pay.yandex.ru/sdk/v1/pay.js"></script>
  2. Создайте кнопку оплаты и инициализируйте платёжную сессию:
    <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>
  3. На сервере реализуйте эндпоинт /api/create-payment:
    • Получите от Яндекс Pay publicKey и secretKey.
    • Сформируйте запрос POST /v1/payments (см. официальную документацию API) с параметрами: amount‚ currency‚ orderId‚ description‚ callbackUrl.
    • В ответе Яндекс вернёт paymentToken – передайте его в клиентскую часть.
  4. Обработайте callback‑уведомления (см. раздел Callback URL ниже).

Прямая интеграция через REST‑API

Подходит‚ если нужен полный контроль над процессом (например‚ для мобильных приложений или сложных бизнес‑логик).

  1. Получите API‑ключи (Public и Secret) из личного кабинета → Раздел «API‑ключи».
  2. Создайте платёжную сессию:
    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"
    }
    
  3. В ответе получите paymentId и paymentUrl. Перенаправьте пользователя на paymentUrl либо отобразите его в iframe.
  4. Обрабатывайте уведомления о статусе платежа (см. раздел Callback URL).

Если нет возможности менять код сайта‚ можно использовать готовые ссылки.

  1. Отправьте запрос POST /orders к API Яндекс Pay с параметрами:
    {
     "amount": {"value": "500.00"‚ "currency": "RUB"}‚
     "orderId": "QR-98765"‚
     "description": "Оплата через QR‑код"‚
     "callbackUrl": "https://example.com/api/yapay/callback"
    }
    
    
  2. В ответе получите поле paymentUrl. По этой ссылке открывается страница оплаты‚ а также генерируется QR‑код‚ который можно вывести на сайте или в мобильном приложении.
  3. Для создания 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);
?>

Тестирование и переход в боевой режим

  1. Тестовая среда (sandbox) активируется автоматически после одобрения заявки. В личном кабинете переключите «Тестовый режим» → «Включить».
  2. Создавайте тестовые заказы‚ используя тестовые карты (пример: 4111 1111 1111 1111‚ CVV 123‚ срок действия любой будущий).
  3. Проверьте:
    • Создание платёжной сессии.
    • Отображение формы оплаты.
    • Работу Callback‑уведомлений.
    • Обработку ошибок (недостаточно средств‚ отказ банка).
  4. После успешного теста перейдите в боевой режим:
    • В личном кабинете отключите «Тестовый режим».
    • Обновите 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 к вашему сайту – процесс‚ который можно выполнить за несколько часов‚ если следовать пошаговой инструкции:

  1. Регистрация и одобрение заявки.
  2. Настройка технических требований (HTTPS‚ Callback URL).
  3. Выбор способа интеграции (Web‑SDK – самый простой‚ API – для полной кастомизации‚ ссылки/QR‑коды – для быстрых решений).
  4. Тестирование в sandbox‑режиме.
  5. Переход в боевой режим и мониторинг транзакций.

Соблюдая рекомендации по безопасности и правильно обрабатывая callback‑уведомления‚ вы сможете обеспечить надёжный и удобный приём платежей для своих клиентов.

Удачной интеграции!