Ошибка «Нет подключенных сервисов SberPay» – это распространённая проблема, с которой сталкиваются разработчики и владельцы интернет‑магазинов, интегрирующих платежную систему SberPay. В этой статье мы разберём причины возникновения ошибки, пошагово покажем способы её устранения и поделимся полезными советами, чтобы в будущем избежать подобных ситуаций.
Что такое SberPay и зачем он нужен
- SberPay – единый сервис для онлайн‑платежей от Сбербанка, позволяющий принимать карты, электронные деньги, банковские переводы и даже оплату через QR‑коды.
- Он интегрируется через API, SDK или готовые модули для популярных CMS и фреймворков.
- Для работы необходимо наличие активных сервисов – каждый сервис (например, «Карта», «QR‑код», «Веб‑платеж») должен быть включён в настройках вашего аккаунта SberPay.
Почему появляется ошибка «Нет подключенных сервисов»
- Неверные данные доступа – неправильный API‑ключ, токен или ID приложения.
- Сервис не включён в панели управления – в настройках SberPay не активирован нужный тип платежа.
- Региональные ограничения – определённые сервисы доступны только в России или в странах, поддерживаемых SberPay.
- Сбой сети – временные проблемы с соединением с сервером SberPay.
- Неправильный режим работы – использование тестового ключа в продакшн‑режиме или наоборот.
Как проверить и подключить сервисы в личном кабинете SberPay
Перед тем как переходить к коду, убедитесь, что в личном кабинете SberPay все сервисы включены:
- Авторизуйтесь на https://pay.sberbank.ru.
- Перейдите в раздел «Настройки» → «Платёжные сервисы».
- Убедитесь, что включены нужные сервисы (например, «Карта», «QR‑код»).
- Если сервис не активирован – нажмите «Включить» и следуйте инструкциям.
- После включения сервисов не забудьте сохранить API‑ключ и токен доступа.
Проверка конфигурации в приложении
Ниже приведены примеры настройки для разных языков программирования. Убедитесь, что вы используете текущий ключ и токен.
4.1 Node.js (Express + sberpay-sdk)
const express = require('express');
const SberPay = require('sberpay-sdk');
const app = express;
const sberPay = new SberPay({
apiKey: process.env.SBERPAY_API_KEY, // ваш API‑ключ
secretKey: process.env.SBERPAY_SECRET, // ваш секретный ключ
mode: 'production' // или 'sandbox'
});
app.post('/pay', async (req, res) => {
try {
const response = await sberPay.createPayment({
amount: req.body.amount,
currency: 'RUB',
orderId: req.body.orderId,
returnUrl: 'https://yourdomain.com/return'
});
res.json(response);
} catch (err) {
console.error(err);
res.status(500).send('Error creating payment');
}
});
4.2 PHP (cURL)
$amount,
'currency' => $currency,
'orderId' => $orderId,
'returnUrl' => 'https://yourdomain.com/return'
];
$ch = curl_init('https://api.sberpay.ru/v1/payments');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Basic ' . base64_encode($apiKey . ':' . $secretKey)
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Распространённые ошибки и способы их устранения
- Ошибка 401 – Unauthorized
- Проверьте, что API‑ключ и секретный ключ корректны.
- Убедитесь, что используете правильный режим (production/sandbox).
- Проверьте, что в личном кабинете сервис включён.
- Ошибка 400 – Bad Request
- Проверьте формат данных: сумма должна быть целым числом, currency – «RUB».
- Проверьте, что orderId уникален.
- Ошибка 503 – Service Unavailable
- Сервер SberPay временно недоступен. Попробуйте позже.
- Проверьте наличие ограничений по IP‑адресу в настройках.
Как проверить наличие подключённых сервисов через API
В некоторых случаях удобно проверить состояние сервисов программно. Ниже пример запроса для проверки доступных сервисов.
Node.js
const services = await sberPay.getSupportedServices;
console.log(services);
PHP
$ch = curl_init('https://api.sberpay.ru/v1/services');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Basic ' . base64_encode($apiKey . ':' . $secretKey)
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$services = json_decode($response, true);
print_r($services);
Лучшие практики и профилактика
- Разделение сред – используйте отдельные ключи для тестовой и продакшн среды.
- Регулярная проверка – периодически проверяйте статус сервисов через API.
- Логи ошибок – сохраняйте подробные логи, чтобы быстро находить причину отказа.
- Бэкап ключей – храните ключи в защищённом хранилище (HashiCorp Vault, AWS Secrets Manager).
- Согласование с банком – при изменении бизнес‑требований связывайтесь с поддержкой SberPay.
Когда обращаться в поддержку SberPay
Если после выполнения всех шагов проблема остаётся, обратитесь в службу поддержки SberPay:
- Электронная почта: support@sberpay.ru
- Телефон: +7 (495) -11‑22‑33 (рабочие часы 9:00‑20:00)
- Онлайн‑чат на pay.sberbank.ru/chat
При обращении подготовьте:
- Ключ API и секретный ключ.
- Точное время, когда возникла ошибка.
- Текст ошибки и код ответа сервера.
- Скриншот панели управления (если возможно).
Ошибка «Нет подключенных сервисов SberPay» обычно связана с настройками аккаунта, некорректными ключами или неверными данными в запросе. Следуя шагам, описанным выше, вы сможете быстро диагностировать и исправить проблему. Не забывайте регулярно проверять статус сервисов и использовать отдельные ключи для тестовой и продакшн‑среды – это поможет избежать неожиданных сбоев в будущем.
Удачной интеграции и быстрых платежей!