Інтеграція платіїної системи Сбер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 як окремого методу (без введення карти) обов'язкова наявність додатка СберБанк Онлайн у покупця — на десктопі цей метод не працює.







