Оплата с авторизацией по номеру телефона
При авторизации по номеру телефона SDK сам показывает покупателю экран подтверждения номера и авторизует его без логина и пароля Сбер ID.
Доступность в способах оплаты
Авторизация по номеру телефона доступна почти во всех способах оплаты SDK. В большинстве из них это один из шагов общей последовательности авторизации: по рефреш-токену, бесшовно с авторизационным токеном Сбер ID, через приложение Банка (МП СБОЛ) и затем по номеру телефона. Подробнее в разделе Стандартный режим оплаты.
Способ оплаты SPayMethod | Авторизация по номеру телефона |
|---|---|
default | Доступна |
withBonuses | Доступна |
withoutRefresh | Доступна |
withPaymentAccount | Доступна |
withPartPay | Доступна |
withPhoneNumber | Доступна, единственный способ авторизации |
withBankInvoiceId (устаревший) | Доступна |
bindingPayment | Недоступна: оплата по связке проводится без авторизации покупателя |
withBinding (устаревший) | Недоступна |
Описание всех способов оплаты приведено в разделе Вспомогательные структуры.
Сценарий оплаты withPhoneNumber
В сценарии withPhoneNumber доступна только авторизация по номеру телефона. Остальные способы авторизации (по рефреш-токену, бесшовно через Сбер ID, через приложение Банка) в этом сценарии не используются.
Для запуска сценария используется метод pay с параметром SPayMethod.withPhoneNumber(paymentTool:).
Требования к запуску:
- номер телефона покупателя передается в
SPaymentRequest.phoneNumber, без этого поля сценарий недоступен; - в качестве инструмента оплаты передается
paymentTool = SPaymentTool.cards; - для партнера на стороне Банка должна быть подключена авторизация по номеру телефона (
phoneAuth). Ес ли сценарий не запускается, обратитесь в поддержку.
Пример реализации структуры запроса:
let request = SPaymentRequest(
apiKey: "Your API key",
bankInvoiceId: bankInvoiceId,
orderNumber: "Your order number",
merchantLogin: "Test shop",
redirectUri: "sberPayExampleapp://spay",
phoneNumber: "79261234567"
)
SPay.pay(
view: self,
method: .withPhoneNumber(paymentTool: .cards),
request: request
) { state, bankInvoiceId, localSessionId, info in
switch state {
case .success: print("Успешный результат")
case .waiting: print("Необходимо проверить статус оплаты")
case .cancel: print("Пользователь отменил оплату")
case .error: print("\(info) - описание ошибки")
@unknown default: print("Неопределенная ошибка")
}
}