Интеграция платежного шлюза СберPay в мобильное приложение
СберPay — платёжный метод от Сбербанка, который позволяет пользователям подтверждать оплату через приложение СберБанк Онлайн или через Сбер ID. В мобильных приложениях интеграция реализуется через Сбербанк Эквайринг (SBOL REST API) или через агрегаторы (ЮKassa, CloudPayments), которые поддерживают СберPay как метод оплаты.
Два пути интеграции
Через агрегатор. Если у вас уже есть ЮKassa, CloudPayments или Robokassa — СберPay можно включить как дополнительный paymentMethodType без отдельной интеграции. ЮKassa, например, поддерживает sberbank как тип метода оплаты, и SDK сам открывает диплинк в СберБанк Онлайн.
Через Сбербанк Эквайринг напрямую. Нужна отдельная регистрация мерчанта в Сбербанке, подключение к тестовой среде 3dsec.sberbank.ru и прямая работа с REST API.
Прямая интеграция через Сбербанк REST API
Для СберPay в мобильном приложении используется flow с deeplink-возвратом. Сервер регистрирует заказ и получает orderId и formUrl:
POST https://securepayments.sberbank.ru/payment/rest/register.do
?userName=merchant_login
&password=merchant_password
&orderNumber=ORDER-1234
&amount=150000
&returnUrl=yourapp://payment/result/success
&failUrl=yourapp://payment/result/fail
&clientId=user_123
&paymentSystem=SBERPAY
Ответ:
{
"orderId": "uuid-order-id",
"formUrl": "https://securepayments.sberbank.ru/sberpay?orderId=..."
}
Deeplink в СберБанк Онлайн
formUrl содержит ссылку, которая открывает приложение СберБанк Онлайн для подтверждения. На клиенте:
// Android
val sberPayUri = Uri.parse(formUrl)
val intent = Intent(Intent.ACTION_VIEW, sberPayUri)
// Проверяем, установлен ли СберБанк Онлайн
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
} else {
// Fallback: открываем формUrl в браузере
openInBrowser(formUrl)
}
// iOS
if let url = URL(string: formUrl), UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
} else {
// Fallback: SFSafariViewController
presentSafari(url: formUrl)
}
Обработка возврата через deeplink
После подтверждения в СберБанк Онлайн система редиректит на returnUrl, который вы указали при регистрации заказа. В iOS нужен Universal Link или URL Scheme, в Android — Intent Filter:
<!-- AndroidManifest.xml -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="yourapp" android:host="payment" android:pathPrefix="/result" />
</intent-filter>
После возврата проверяем статус заказа на сервере:
GET https://securepayments.sberbank.ru/payment/rest/getOrderStatusExtended.do
?orderId=uuid-order-id&userName=...&password=...
Ключевой момент: не доверяйте только deeplink-возврату. Пользователь может закрыть приложение до редиректа. Статус платежа нужно всегда проверять через серверный запрос getOrderStatusExtended.
Интеграция через ЮKassa (упрощённый вариант)
// Android, ЮKassa SDK
val paymentParameters = PaymentParameters(
amount = Amount(BigDecimal.valueOf(1500), Currency.getInstance("RUB")),
title = "Заказ",
subtitle = "",
clientApplicationKey = "live_key",
shopId = "shop_id",
paymentMethodTypes = setOf(PaymentMethodType.SBERBANK) // только СберPay
)
ЮKassa SDK сам формирует deeplink и обрабатывает возврат — вам остаётся только принять токен и создать платёж на сервере.
Что входит в работу
- Выбор схемы интеграции: прямая или через агрегатор
- Регистрация заказа на сервере и получение formUrl
- Реализация deeplink-открытия СберБанк Онлайн и fallback
- Обработка возврата через URL Scheme / Universal Link
- Серверная проверка статуса платежа
Сроки
2–3 дня. Стоимость рассчитывается индивидуально.







