ym88659208ym87991671
Оплата с авторизацией по номеру телефона | Документация для разработчиков

Оплата с авторизацией по номеру телефона

Обновлено 7 октября 2026

При авторизации по номеру телефона 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("Неопределенная ошибка")
}
}
Заметили ошибку?
Выделите текст и нажмите
Ctrl
+
Enter
, чтобы сообщить нам об ошибке