Интеграция платёжной системы СберPay на сайт
СберPay — платёжное решение Сбербанка, которое существует в нескольких ипостасях: как метод быстрой оплаты через приложение СберБанк Онлайн (без ввода данных карты), как встроенный способ оплаты на сайте через Сбербанк Эквайринг, и как QR-оплата через СБП. Чаще всего под «интеграцией СберPay» подразумевают подключение к шлюзу Сбербанк Эквайринга с поддержкой кнопки СберPay.
Подключение к Сбербанк Эквайрингу
Для работы нужен договор эквайринга со Сбербанком. После подписания договора выдаются логин и пароль для тестовой и боевой среды.
Тестовая среда: https://3dsec.sberbank.ru/payment/rest/
Боевая среда: https://securepayments.sberbank.ru/payment/rest/
Аутентификация — через userName + password в каждом запросе, либо через token (рекомендуемый способ с 2022 года).
Регистрация заказа
$response = Http::get('https://securepayments.sberbank.ru/payment/rest/register.do', [
'userName' => env('SBER_USERNAME'),
'password' => env('SBER_PASSWORD'),
'orderNumber' => 'order-12345',
'amount' => 150000, // в копейках
'returnUrl' => 'https://example.com/payment/return',
'failUrl' => 'https://example.com/payment/fail',
'description' => 'Заказ #12345',
'email' => '[email protected]',
'language' => 'ru',
'pageView' => 'DESKTOP', // или MOBILE
]);
$orderId = $response->json('orderId'); // ID в системе Сбербанка
$formUrl = $response->json('formUrl'); // URL платёжной страницы
После получения formUrl — редирект туда. Сбербанк покажет страницу оплаты со всеми доступными методами, включая СберPay, если покупатель зашёл с устройства с установленным СберБанк Онлайн.
Проверка статуса заказа
Сбербанк поддерживает уведомления (callback), но их нужно отдельно настроить в личном кабинете. Надёжнее дополнительно проверять статус на returnUrl:
public function paymentReturn(Request $request): RedirectResponse
{
$orderId = $request->query('orderId');
$status = Http::get('https://securepayments.sberbank.ru/payment/rest/getOrderStatusExtended.do', [
'userName' => env('SBER_USERNAME'),
'password' => env('SBER_PASSWORD'),
'orderId' => $orderId,
'language' => 'ru',
])->json();
// orderStatus: 0=зарегистрирован, 1=не оплачен, 2=оплачен, 3=авторизован,
// 4=аннулирован, 5=возврат, 6=АЗ отклонена банком покупателя
if ($status['orderStatus'] === 2) {
$localOrderId = $status['orderNumber']; // наш внутренний номер
Order::where('id', $localOrderId)->update(['status' => 'paid']);
return redirect('/orders/' . $localOrderId . '?paid=1');
}
return redirect('/cart?payment_failed=1');
}
Никогда не верить только параметрам в URL — только серверная проверка через getOrderStatusExtended.
Двухстадийная оплата
Для маркетплейсов или заказов с постоплатой подходит двухстадийная схема: сначала авторизация (заморозка средств), затем списание после отгрузки.
// Регистрация с флагом двухстадийной оплаты
Http::get('https://securepayments.sberbank.ru/payment/rest/registerPreAuth.do', [
// те же параметры что и register.do
]);
// Подтверждение списания после отгрузки
Http::get('https://securepayments.sberbank.ru/payment/rest/deposit.do', [
'userName' => env('SBER_USERNAME'),
'password' => env('SBER_PASSWORD'),
'orderId' => $sberbankOrderId,
'amount' => 150000,
]);
Замороженные средства удерживаются до 30 дней. Если в течение этого срока не подтвердить — авторизация автоматически отменяется.
Фискализация
Сбербанк поддерживает фискализацию через собственную кассу «Атол Онлайн», интегрированную в эквайринг. Чековые данные передаются в параметре orderBundle:
'orderBundle' => json_encode([
'customerDetails' => ['email' => '[email protected]'],
'cartItems' => [
'items' => [[
'positionId' => 1,
'name' => 'Товар 1',
'quantity' => ['value' => 1, 'measure' => 'шт'],
'itemAmount' => 150000,
'itemCode' => 'SKU-001',
'tax' => ['taxType' => 0], // 0=без НДС
'itemPrice' => 150000,
]],
],
]),
Возвраты
Http::get('https://securepayments.sberbank.ru/payment/rest/refund.do', [
'userName' => env('SBER_USERNAME'),
'password' => env('SBER_PASSWORD'),
'orderId' => $sberbankOrderId,
'amount' => 75000, // частичный или полный возврат
]);
Особенности и ограничения
Основная сложность с эквайрингом Сбербанка — медленная поддержка. Ответ на запрос о подключении занимает от 5 до 14 рабочих дней, активация боевой среды после тестирования — ещё 3–5 дней. Документация обновляется нерегулярно; актуальную версию запрашивают у менеджера. Для СберPay как отдельного метода (без ввода карты) обязательно наличие приложения СберБанк Онлайн у покупателя — на десктопе этот метод не работает.







