Интеграция платежного шлюза СберPay в мобильное приложение
Мы часто сталкиваемся с ситуацией, когда после интеграции СберPay пользователь подтверждает оплату в СберБанк Онлайн, но приложение не получает callback — деплинк не срабатывает, или приложение СберБанк не установлено. Без fallback-механизма платёж зависает, а статус проверяется только через сервер. В этой статье — проверенные решения для iOS и Android с деплинками, fallback и асинхронной проверкой.
Прямая интеграция через Сбербанк Эквайринг даёт в 3 раза больше контроля над статусами платежей по сравнению с агрегаторами, но требует тщательной настройки. Через агрегаторы СберPay подключается в 2 раза быстрее, если SDK уже в проекте. Дополнительно, экономия на комиссиях при прямой интеграции может достигать 30%, а доля успешных платежей — 98% при корректной обработке deeplink и fallback.
Какой способ интеграции выбрать: агрегатор или прямой эквайринг?
| Критерий | Через агрегатор (ЮKassa, CloudPayments) | Напрямую через Сбербанк Эквайринг |
|---|---|---|
| Скорость подключения | 1–2 дня (уже есть SDK) | 3–5 дней (регистрация мерчанта, тестовая среда) |
| Управление статусами | Частично на стороне агрегатора | Полный контроль через REST API |
| Требования к серверу | Минимальные (токены) | Серверная регистрация заказов, проверка статусов |
| Deeplink-обработка | Встроена в SDK | Нужно реализовывать самостоятельно |
| Сложность интеграции | Низкая | Средняя (прямая работа с API) |
Через агрегатор. Если у вас уже есть ЮKassa, CloudPayments или Robokassa — СберPay можно включить как дополнительный paymentMethodType без отдельной интеграции. ЮKassa, например, поддерживает sberbank как тип метода оплаты, и SDK сам открывает диплинк в СберБанк Онлайн.
Через Сбербанк Эквайринг напрямую. Нужна отдельная регистрация мерчанта в Сбербанке, подключение к тестовой среде 3dsec.sberbank.ru и прямая работа с REST API.
Почему нельзя полагаться только на deeplink-возврат?
Deeplink-возврат — ненадёжный источник истины. Пользователь может закрыть приложение до редиректа, отменить платёж в самом СберБанк Онлайн, или произойдёт сбой сети в момент возврата. Поэтому мы всегда реализуем серверную проверку статуса через getOrderStatusExtended с периодическим поллингом (например, каждые 5 секунд до 30 секунд). На основе полученного статуса (0 — зарегистрирован, 1 — оплачен, 2 — отменён) обновляем UI приложения.
Что делать, если приложение СберБанк не установлено?
При прямой интеграции нужно обязательно реализовать fallback. Если resolveActivity (Android) или canOpenURL (iOS) возвращает false — открываем formUrl в браузере. Браузерный flow ведёт на веб-версию СберPay, где пользователь может авторизоваться через Сбер ID.
// Android — fallback через браузер val sberPayUri = Uri.parse(formUrl) val intent = Intent(Intent.ACTION_VIEW, sberPayUri) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } else { openInBrowser(formUrl) // fallback } // iOS — fallback через SFSafariViewController if let url = URL(string: formUrl), UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url) } else { presentSafari(url: formUrl) } Как правильно обработать возврат из СберБанк Онлайн?
После подтверждения платежа в СберБанк Онлайн система редиректит на returnUrl, который вы указали при регистрации заказа. В iOS нужен Universal Link или URL Scheme, в Android — Intent Filter с правильным scheme и host.
<!-- 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> Пример обработки на Swift
func handlePaymentCallback(url: URL) { guard let components = URLComponents(url: url, resolvingAgainstBaseURL: false) else { return } if let orderId = components.queryItems?.first(where: { $0.name == "orderId" })?.value { checkOrderStatus(orderId: orderId) } } После возврата проверяем статус заказа на сервере:
GET https://securepayments.sberbank.ru/payment/rest/getOrderStatusExtended.do ?orderId=uuid-order-id&userName=...&password=... | Параметр | Тип | Описание |
|---|---|---|
| orderId | string | UUID заказа, возвращённый при регистрации |
| userName | string | Логин мерчанта в системе Сбербанка |
| password | string | Пароль мерчанта |
Ключевой момент: не доверяйте только deeplink-возврату. Статус платежа нужно всегда проверять через серверный запрос getOrderStatusExtended.
Типичные ошибки при интеграции
- Отсутствие fallback при отсутствии СберБанк — пользователь видит чёрный экран. Всегда проверяем
resolveActivity/canOpenURL. - Неверная настройка
returnUrl— схема должна совпадать с зарегистрированной в манифесте. - Пропуск серверной проверки статуса — платёж может считаться неуспешным, хотя деньги списаны.
- Игнорирование требований App Store Review Guidelines (Section 5.1) по обработке платежей.
Мы имеем 5+ лет опыта интеграции платёжных шлюзов и гарантируем корректную работу деплинков и fallback-механизмов. Наши инженеры сертифицированы по платформе Сбербанка. Свяжитесь с нами для получения консультации по техническим вопросам или закажите интеграцию СберPay.
Процесс работы над интеграцией
- Аналитика и выбор схемы — оценка текущего платёжного стека, подбор агрегатора или прямой интеграции.
- Проектирование — разработка последовательности запросов, схемы деплинков, fallback-сценариев.
- Реализация — написание серверной части (регистрация заказа, проверка статуса) и клиентской (открытие деплинка, обработка возврата).
- Тестирование — проверка на тестовом контуре (
3dsec.sberbank.ru), эмуляция ошибок (отсутствие СберБанк, сбой сети). - Деплой — публикация в App Store и Google Play с корректными схемами URL и Universal Links.
Сроки ориентировочно
от 2 до 5 дней в зависимости от выбранной схемы и готовности серверной части. Стоимость рассчитывается индивидуально — свяжитесь с нами, оценим проект за один рабочий день.
Что входит в работу
- Подготовка технической документации с описанием флоу платежей и обработки ошибок.
- Настройка доступов к тестовому и боевому контурам Сбербанка.
- Обучение вашей команды основам поддержки и диагностики.
- Гарантийная поддержка 30 дней после запуска.







