Yandex Pay – это удобный сервис быстрых онлайн‑платежей, который позволяет принимать оплату
через карты, Яндекс.Деньги, Apple Pay, Google Pay и другие способы. Ниже представлена
подробная инструкция, которая поможет вам подключить Yandex Pay к вашему сайту или мобильному приложению.
Что нужно знать перед подключением
- Требования к бизнесу: зарегистрированное юридическое лицо или ИП, наличие банковского счёта и ИНН;
- Технические требования: доступ к серверу с поддержкой HTTPS, возможность размещения
серверного кода (PHP, Python, Java, Node.js и др.) и/или мобильных SDK (iOS/Android). - Документы: договор с Яндексом, техническое задание (ТЗ) и подтверждение владения доменом.
Регистрация в системе Yandex Pay
- Перейдите на страницу для мерчантов.
- Нажмите кнопку «Регистрация» и заполните форму:
- Контактные данные компании.
- ИНН, ОГРН, юридический адрес.
- Банковские реквизиты.
- Подтвердите электронную почту – вам придёт письмо с ссылкой активации.
- После активации войдите в Личный кабинет мерчанта и перейдите в раздел «Интеграция».
Выбор способа интеграции
Yandex Pay предлагает несколько вариантов подключения в зависимости от того, где вы хотите принимать
платежи:
- API‑интеграция (REST): для сложных сценариев, когда нужен полный контроль над процессом оплаты.
- Мобильные SDK: iOS (Swift/Obj‑C) и Android (Kotlin/Java) – лучший вариант для мобильных приложений.
Подключение через JavaScript‑форму (самый простой способ)
Для большинства небольших сайтов достаточно внедрить готовую форму оплаты.
- В личном кабинете перейдите в «Ключи и токены» и скопируйте 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.
- Создайте запрос «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». Вы будете получать тестовые ответы, а деньги не списываются.
- Проверка сценариев:
- Успешный платёж.
- Отказ в оплате (недостаточно средств, неверные данные).
- Отмена пользователем.
- Переход в живой режим: отключите Sandbox, замените тестовый токен на production‑токен
и проверьте, что сертификаты HTTPS действительны.
Часто задаваемые вопросы (FAQ)
| Вопрос | Ответ |
|---|---|
| Можно ли принимать оплату без редиректа? | Да, используйте Embedded Checkout – форма будет отображаться прямо на вашей странице. |
| Какие комиссии у Yandex Pay? | Комиссия зависит от типа бизнеса и объёма транзакций, обычно 2‑2,5 % + 10 ₽ за транзакцию. |
| Как обрабатывается возврат средств? | В личном кабинете перейдите в «Платежи», найдите нужный платеж и нажмите «Возврат». Также можно вызвать API‑метод refund. |
| Можно ли подключить несколько валют? | Да, Yandex Pay поддерживает RUB, USD, EUR и несколько других валют. Укажите нужную валюту в запросе. |
Что делать, если возникли проблемы?
Если вы столкнулись с ошибкой, выполните следующие шаги:
- Проверьте, что запросы идут по HTTPS и сертификат действителен.
- Убедитесь, что вы используете актуальный shop token (sandbox vs production).
- Ознакомьтесь с логами ответа API – в поле
errorобычно содержится подробное сообщение. - Если проблема не решается, откройте тикет в службу поддержки Yandex Pay.
Подключение Yandex Pay – процесс, который можно выполнить без глубоких знаний программирования,
особенно используя готовую JavaScript‑форму. Для более гибкой интеграции рекомендуется воспользоваться
REST‑API и вебхуками. Главное – не забывать про тестовый режим и проверку всех сценариев оплаты,
чтобы после перехода в продакшн ваши клиенты получали безупречный сервис.
Удачной интеграции!