API Reference

YandexQuickPay

Главный класс SDK. Синглтон — доступ через YandexQuickPay.instance после вызова initialize().

public final class YandexQuickPay {
    static var instance: YandexQuickPay { get }
    static var isInitialized: Bool { get }

    static func initialize(
        configuration: QuickPayConfig,
        presenterViewController: UIViewController?,
        quickPaymentStateListener: QuickPaymentStateListener
    )

    func handleOpenURL(_ url: URL) -> Bool
    func handleUserActivity(_ userActivity: NSUserActivity) -> Bool

    func isQuickPaymentEnabled() async throws -> Bool
    func enableQuickPayment() async throws
    func disableQuickPayment() async throws
    func getPaymentSessionId() async throws -> String
    func logout() async throws
    func getAuthState() async -> QuickPayAuthState

    func isQuickPayActivated() async -> Bool
    func activateQuickPay() async throws
    func deactivateQuickPay() async throws

    @MainActor func createPaymentMethodsWidget() -> UIView
    @MainActor func createPaymentMethodsWidget() -> any View
}
Метод/свойство Описание
instance Экземпляр SDK (после initialize()). Вызов с Main thread.
isInitialized Проверка инициализации
initialize(configuration:presenterViewController:quickPaymentStateListener:) Инициализация SDK
handleOpenURL(_:) Передаёт URL-схему в SDK (OAuth). Вызывайте из AppDelegate/SceneDelegate
handleUserActivity(_:) Передаёт Universal Link в SDK (OAuth)
isQuickPaymentEnabled() Проверяет, включена ли быстрая оплата
enableQuickPayment() Включает быструю оплату
disableQuickPayment() Отключает быструю оплату
getPaymentSessionId() Создаёт или возвращает платёжную сессию
logout() Выход, очистка данных (async)
getAuthState() Возвращает текущее состояние авторизации (async)
isQuickPayActivated() Возвращает текущее состояние активации виджета. До первого явного вызова activateQuickPay()/deactivateQuickPay() возвращает значение QuickPayConfig.isActivatedByDefault. См. Состояние активации
activateQuickPay() Активирует виджет. Используется, когда пользователь уже авторизован, но виджет находится в .accountAuthorizedNotActivated. Если пользователь не авторизован, для активации вместе с OAuth используйте enableQuickPayment(). См. Состояние активации
deactivateQuickPay() Деактивирует виджет без логаута. Сессия Яндекс ID сохраняется — повторная активация через activateQuickPay() не потребует OAuth. См. Состояние активации
createPaymentMethodsWidget() Виджет методов оплаты (UIKit / SwiftUI)

QuickPayConfig

Конфигурация SDK.

public struct QuickPayConfig {
    public init(
        merchantId: String,
        locale: QuickPayLocale = .system,
        environment: QuickPayEnvironment = .production,
        theme: QuickPayThemeColorScheme = .system,
        enableLogging: Bool = false,
        isActivatedByDefault: Bool = true
    )
}
Параметр По умолчанию Описание
merchantId Идентификатор магазина
locale .system Язык интерфейса
environment .production .sandbox или .production
theme .system Цветовая схема виджета
enableLogging false Debug-логирование
isActivatedByDefault true Начальное состояние активации виджета. При true авторизованный пользователь сразу считается активированным; при false после авторизации требуется явная активация через FAQ-онбординг, enableQuickPayment() или activateQuickPay(). Используется только пока у SDK нет сохранённого состояния активации. См. Состояние активации

QuickPaymentStateListener

Протокол для получения событий. Только для классов (AnyObject).

public protocol QuickPaymentStateListener: AnyObject {
    func onPaymentEnabledStateChanged(isEnabled: Bool)
    func onSessionExpired()
    func onPaymentResult(quickpayResult: QuickPayResult)
    func onAuthStateChanged(_ state: QuickPayAuthState)  // default: no-op
}

Колбэки могут вызываться не на Main thread. Обновление UI — через DispatchQueue.main.async.

Метод Когда вызывается Рекомендуемое действие
onPaymentEnabledStateChanged При включении/выключении быстрой оплаты Если true — запросить новую сессию
onSessionExpired При истечении сессии Вызвать getPaymentSessionId()
onPaymentResult По завершении платежа Обработать результат, запросить новую сессию
onAuthStateChanged При изменении состояния авторизации Обновить UI (показать/скрыть кнопку логаута, сменить баннер и т.д.)

FintechQuickPaymentError

public enum FintechQuickPaymentError: Error {
    case noAuth
    case cannotAuth
    case cannotCreateNewSession(underlying: Error)
    case noPresentationContext
    case widgetNotActivated
}
Вариант Описание
.noAuth Пользователь не авторизован
.cannotAuth Авторизация невозможна (нет контекста, отказ)
.cannotCreateNewSession(underlying:) Ошибка создания сессии (сеть, сервер)
.noPresentationContext Нет активного ViewController для показа UI
.widgetNotActivated Виджет не активирован. См. Состояние активации

QuickPayEnvironment

public enum QuickPayEnvironment {
    case sandbox
    case production
}

QuickPayLocale

public enum QuickPayLocale {
    case system
    case ru
    case en
}

QuickPayThemeColorScheme

public enum QuickPayThemeColorScheme {
    case system
    case light
    case dark
}

QuickPayResult

public enum QuickPayResult {
    case success
    case failure
}