Подключение Yandex Pay: подробная инструкция

Удобный сервис для оплаты через карты, Яндекс.Деньги и другие способы

Yandex Pay – это удобный сервис быстрых онлайн‑платежей, который позволяет принимать оплату
через карты, Яндекс.Деньги, Apple Pay, Google Pay и другие способы. Ниже представлена
подробная инструкция, которая поможет вам подключить Yandex Pay к вашему сайту или мобильному приложению.

Что нужно знать перед подключением

  • Требования к бизнесу: зарегистрированное юридическое лицо или ИП, наличие банковского счёта и ИНН;
  • Технические требования: доступ к серверу с поддержкой HTTPS, возможность размещения
    серверного кода (PHP, Python, Java, Node.js и др.) и/или мобильных SDK (iOS/Android).
  • Документы: договор с Яндексом, техническое задание (ТЗ) и подтверждение владения доменом.

Регистрация в системе Yandex Pay

  1. Перейдите на страницу для мерчантов.
  2. Нажмите кнопку «Регистрация» и заполните форму:
    • Контактные данные компании.
    • ИНН, ОГРН, юридический адрес.
    • Банковские реквизиты.
  3. Подтвердите электронную почту – вам придёт письмо с ссылкой активации.
  4. После активации войдите в Личный кабинет мерчанта и перейдите в раздел «Интеграция».

Выбор способа интеграции

Yandex Pay предлагает несколько вариантов подключения в зависимости от того, где вы хотите принимать
платежи:

  • API‑интеграция (REST): для сложных сценариев, когда нужен полный контроль над процессом оплаты.
  • Мобильные SDK: iOS (Swift/Obj‑C) и Android (Kotlin/Java) – лучший вариант для мобильных приложений.

Подключение через JavaScript‑форму (самый простой способ)

Для большинства небольших сайтов достаточно внедрить готовую форму оплаты.

  1. В личном кабинете перейдите в «Ключи и токены» и скопируйте Public Key.
<form id="yandex-pay-form" action="/process-payment" method="POST">
 <input type="hidden" name="shopId" value="YOUR_SHOP_ID">
 <input type="hidden" name="amount" value="1000"> <!-- Сумма в копейках -->
 <button type="button" id="pay-button">Оплатить через Yandex Pay</button>
</form>

<script src="https://pay.yandex.ru/checkout/v1/checkout.js"></script>
<script>
 const button = document.getElementById('pay-button');
 button.addEventListener('click', function  {
 YaPay.checkout({
 shopId: 'YOUR_SHOP_ID',
 amount: 1000,
 description: 'Оплата заказа #1234',
 publicKey: 'YOUR_PUBLIC_KEY',
 onSuccess: function (result) {
 // Перенаправляем на ваш обработчик
 document.getElementById('yandex-pay-form').submit;
 },
 onError: function (error) {
 alert('Ошибка оплаты: ' + error.message);
 }
 });
 });
</script>

Не забудьте заменить YOUR_SHOP_ID и YOUR_PUBLIC_KEY на реальные значения из кабинета.

Интеграция через REST‑API (для серверной обработки)

Если вам нужен контроль над статусами платежей, используйте API.

  1. Создайте запрос «Create Payment» к эндпоинту https://pay.yandex.ru/api/v1/payments.
    Пример на PHP:
$data = [
 'amount' => [
 'value' => '1000', // 10.00 RUB
 'currency' => 'RUB'
 ], 'confirmation' => [
 'type' => 'redirect',
 'return_url' => 'https://example.com/return'
 ],
 'description' => 'Оплата заказа #1234',
 'metadata' => ['order_id' => 1234]
];

$ch = curl_init('https://pay.yandex.ru/api/v1/payments');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
 'Content-Type: application/json',
 'Authorization: Bearer YOUR_SHOP_TOKEN'
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
$paymentUrl = $result['confirmation']['confirmation_url'];
header('Location: ' . $paymentUrl);

После перенаправления пользователь завершит оплату, а Яндекс отправит webhook‑уведомление
о статусе платежа на ваш URL, указанный в настройках.

Тестирование и переход в продакшн

  • Тестовый режим: в кабинете включите «Sandbox». Вы будете получать тестовые ответы, а деньги не списываются.
  • Проверка сценариев:
    1. Успешный платёж.
    2. Отказ в оплате (недостаточно средств, неверные данные).
    3. Отмена пользователем.
  • Переход в живой режим: отключите Sandbox, замените тестовый токен на production‑токен
    и проверьте, что сертификаты HTTPS действительны.

Часто задаваемые вопросы (FAQ)

Вопрос Ответ
Можно ли принимать оплату без редиректа? Да, используйте Embedded Checkout – форма будет отображаться прямо на вашей странице.
Какие комиссии у Yandex Pay? Комиссия зависит от типа бизнеса и объёма транзакций, обычно 2‑2,5 % + 10 ₽ за транзакцию.
Как обрабатывается возврат средств? В личном кабинете перейдите в «Платежи», найдите нужный платеж и нажмите «Возврат». Также можно вызвать API‑метод refund.
Можно ли подключить несколько валют? Да, Yandex Pay поддерживает RUB, USD, EUR и несколько других валют. Укажите нужную валюту в запросе.

Что делать, если возникли проблемы?

Если вы столкнулись с ошибкой, выполните следующие шаги:

  1. Проверьте, что запросы идут по HTTPS и сертификат действителен.
  2. Убедитесь, что вы используете актуальный shop token (sandbox vs production).
  3. Ознакомьтесь с логами ответа API – в поле error обычно содержится подробное сообщение.
  4. Если проблема не решается, откройте тикет в службу поддержки Yandex Pay.

Подключение Yandex Pay – процесс, который можно выполнить без глубоких знаний программирования,
особенно используя готовую JavaScript‑форму. Для более гибкой интеграции рекомендуется воспользоваться
REST‑API и вебхуками. Главное – не забывать про тестовый режим и проверку всех сценариев оплаты,
чтобы после перехода в продакшн ваши клиенты получали безупречный сервис.

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