Стандартный режим оплаты
Покупатель оформляет заказ в приложении партнера и нажимает кнопку оплаты SberPay. Приложение запускает метод pay: на Android используется SPayMethod.Default, на iOS — SPayMethod.default. Дальнейшее взаимодействие происходит в интерфейсе SDK; при авторизации через приложение Банка покупатель временно переходит в него и затем возвращается в приложение партнера.
Процесс авторизации
Авторизация в приложении Банка
Если для авторизации требуется приложение Банка, SDK переводит в него покупателя. После авторизации покупатель возвращается к оплате в приложении партнера.
В SberPay SDK In-App на обеих платформах реализована следующая последовательность попыток авторизации: по рефреш-токену, бесшовно с авторизационным токеном (при наличии у партнера SDK SberId и подписанного дополнительного соглашения), через приложение Банка (МП СБОЛ), по номеру телефона.
При авторизации с помощью МП СБОЛ на устройствах iOS выполняется перебор версий МП СБОЛ для iOS. На устройствах Android приложение Банка запускается через deeplink на актуальную версию МП СБОЛ.
Для корректного возврата Android-приложение передает appPackage в SPaymentRequest. На iOS в SPaymentRequest передается redirectUri, описанный в структурах iOS SDK.
Авторизация по номеру телефона
В сценарии авторизации по номеру телефона SDK показывает экран подтверждения номера и авторизует покупателя. Если партнеру нужен именно этот способ, он запускает отдельный режим оплаты по номеру телефона:
| Платформа | Режим и параметры |
|---|---|
| Android | SPayMethod.WithPhoneNumber(paymentTool = SPaymentTool.CARDS); непустой phoneNumber в SPaymentRequest, 10 или 11 символов |
| iOS | SPayMethod.withPhoneNumber(paymentTool: .cards); phoneNumber в SPaymentRequest; для мерчанта должен быть включен phoneAuth на стороне бэкенда |
Подробности: оплата номером телефона на Android, оплата номером телефона на iOS.
Выбор карты
На экране оплаты покупатель видит выбранную карту. При необходимости он открывает список доступных карт и выбирает другую, затем возвращается на экран оплаты.
Примеры экранов выбора карты и оплаты:
Карты с недостаточным для оплаты балансом выбрать нельзя.
Процесс оплаты
Покупатель проверяет выбранную карту и сумму, затем нажимает «Оплатить» в интерфейсе SDK. Приложение партнера обрабатывает результат, который возвращает SDK.
Завершение сценария
После оплаты шторка SDK закрывается, и покупат ель возвращается на экран приложения, с которого запустил оплату. Приложение партнера получает результат в обработчике вызова pay и может перевести покупателя на соответствующий экран заказа.
| Результат | Android: PaymentResult | iOS: SPayState |
|---|---|---|
| Оплата успешна | Success | success |
| Оплата еще выполняется | Processing | waiting |
| Ошибка | Error | error |
| Покупатель отменил оплату | Cancel | cancel |
Состояние выполнения не следует отображать как успешную оплату. Согласно FAQ нативных SDK, такой результат может вернуться, если SDK не получил статус от сервера, например из-за долгого ожидания. В этом случае партнеру рекомендуется запросить статус платежа со своего сервера.
Обработка результата описана в структурах Android SDK и сценарии iOS SDK.