Ошибка Нет подключенных сервисов SberPay: причины и способы устранения

Ошибка «Нет подключенных сервисов SberPay» – это распространённая проблема, с которой сталкиваются разработчики и владельцы интернет‑магазинов, интегрирующих платежную систему SberPay. В этой статье мы разберём причины возникновения ошибки, пошагово покажем способы её устранения и поделимся полезными советами, чтобы в будущем избежать подобных ситуаций.

Что такое SberPay и зачем он нужен

  • SberPay – единый сервис для онлайн‑платежей от Сбербанка, позволяющий принимать карты, электронные деньги, банковские переводы и даже оплату через QR‑коды.
  • Он интегрируется через API, SDK или готовые модули для популярных CMS и фреймворков.
  • Для работы необходимо наличие активных сервисов – каждый сервис (например, «Карта», «QR‑код», «Веб‑платеж») должен быть включён в настройках вашего аккаунта SberPay.

Почему появляется ошибка «Нет подключенных сервисов»

  1. Неверные данные доступа – неправильный API‑ключ, токен или ID приложения.
  2. Сервис не включён в панели управления – в настройках SberPay не активирован нужный тип платежа.
  3. Региональные ограничения – определённые сервисы доступны только в России или в странах, поддерживаемых SberPay.
  4. Сбой сети – временные проблемы с соединением с сервером SberPay.
  5. Неправильный режим работы – использование тестового ключа в продакшн‑режиме или наоборот.

Как проверить и подключить сервисы в личном кабинете SberPay

Перед тем как переходить к коду, убедитесь, что в личном кабинете SberPay все сервисы включены:

  1. Авторизуйтесь на https://pay.sberbank.ru.
  2. Перейдите в раздел «Настройки» → «Платёжные сервисы».
  3. Убедитесь, что включены нужные сервисы (например, «Карта», «QR‑код»).
  4. Если сервис не активирован – нажмите «Включить» и следуйте инструкциям.
  5. После включения сервисов не забудьте сохранить 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

При обращении подготовьте:

  1. Ключ API и секретный ключ.
  2. Точное время, когда возникла ошибка.
  3. Текст ошибки и код ответа сервера.
  4. Скриншот панели управления (если возможно).

Ошибка «Нет подключенных сервисов SberPay» обычно связана с настройками аккаунта, некорректными ключами или неверными данными в запросе. Следуя шагам, описанным выше, вы сможете быстро диагностировать и исправить проблему. Не забывайте регулярно проверять статус сервисов и использовать отдельные ключи для тестовой и продакшн‑среды – это поможет избежать неожиданных сбоев в будущем.

Удачной интеграции и быстрых платежей!