API Reference

YandexQuickPay

Точка входа в модуль быстрой оплаты.

object YandexQuickPay {
    var locale: QuickPayLocale            // По умолчанию: SYSTEM
    var theme: QuickPayThemeColorScheme   // По умолчанию: SYSTEM
    val isSupported: Boolean              // true если API >= 24
    const val LIBRARY_VERSION: String
}

initialize()

fun initialize(
    config: QuickPayConfig,
    context: Application,
    quickPaymentStateListener: QuickPaymentStateListener
)

Инициализирует модуль. Можно вызывать повторно для смены конфигурации или обновления листенера.

Параметры:

  • config — конфигурация SDK (merchantId, environment)
  • context — Application-контекст
  • quickPaymentStateListener — листенер событий; SDK хранит его как WeakReference

initUi()

suspend fun initUi(activity: FragmentActivity, fragmentManager: FragmentManager)

Регистрирует лончеры для OAuth и биометрии. Не показывает никакого UI немедленно.

Необходимо вызывать перед getPaymentSessionId() и enableQuickPayment().

isQuickPaymentEnabled()

suspend fun isQuickPaymentEnabled(): IsPaymentEnabled

Проверяет, включена ли быстрая оплата для текущего пользователя.

Исключения: IllegalStateException если SDK не инициализирован.

enableQuickPayment()

suspend fun enableQuickPayment(): Result<Unit>

Включает быструю оплату. Может показать экран авторизации Яндекс ID или биометрический запрос.

Исключения: IllegalStateException — если SDK не инициализирован, или если биометрия недоступна (нет аппаратуры, не настроена, устройство заблокировано).

disableQuickPayment()

suspend fun disableQuickPayment(): Result<Unit>

Отключает быструю оплату.

Исключения: IllegalStateException если SDK не инициализирован.

isActivated()

fun isActivated(): Boolean

Возвращает текущее состояние активации виджета. До первого явного вызова activate() или deactivate() возвращает значение QuickPayConfig.isActivatedByDefault.

Активация — отдельное от авторизации состояние виджета. Пока виджет не активирован, getPaymentSessionId() возвращать сессию не будет, а QuickPayAuthorizationState принимает значение NotActivated. Подробнее — Состояние активации.

Исключения: IllegalStateException если SDK не инициализирован.

activate()

fun activate()

Активирует виджет. Используется, когда пользователь уже авторизован, но виджет находится в состоянии NotActivated — например, по итогам просмотра FAQ-экрана. Если пользователь не авторизован, для активации вместе с OAuth используйте enableQuickPayment().

Подробнее — Состояние активации.

deactivate()

fun deactivate()

Деактивирует виджет без логаута. После вызова getPaymentSessionId() бросит исключение до повторной активации; сессия Яндекс ID сохраняется — повторная активация через activate() не потребует OAuth.

Подробнее — Состояние активации.

getPaymentSessionId()

suspend fun getPaymentSessionId(): String

Создаёт новую платёжную сессию или возвращает существующую, если срок её действия не истёк.

Возможен биометрический запрос при вызове. Требует предварительного вызова initUi().

Возвращает: строковый идентификатор сессии для генерации QR-кода.

Исключения:

Исключение Условие
RuntimeException("YandexQuickPay must be initialized...") initialize() не вызван
IllegalStateException("Activity not available") initUi() не вызван
IllegalStateException("User is not authorized...") Пользователь не авторизован
RuntimeException("Failed to generate session: ...") Ошибка генерации сессии

getAuthorizationState()

fun getAuthorizationState(): QuickPayAuthorizationState

Возвращает текущее состояние авторизации пользователя. Подробнее о возможных состояниях см. в разделе QuickPayAuthorizationState.

Если SDK не инициализирован, возвращает QuickPayAuthorizationState.NotInitialized.

logout()

fun logout()

Выполняет выход и очищает все сохранённые учётные данные. После вызова потребуется повторная авторизация.


QuickPayConfig

class QuickPayConfig @JvmOverloads constructor(
    val merchantId: String,
    val environment: QuickPayEnvironment = QuickPayEnvironment.SANDBOX,
    val isActivatedByDefault: Boolean = true,
)
Параметр По умолчанию Описание
merchantId Идентификатор магазина
environment SANDBOX SANDBOX или PRODUCTION
isActivatedByDefault true Начальное состояние активации виджета. При true авторизованный пользователь сразу считается активированным; при false после авторизации требуется явная активация через FAQ-онбординг, enableQuickPayment() или activate(). Используется только пока у SDK нет сохранённого состояния активации. Подробнее — Состояние активации.

QuickPaymentStateListener

Интерфейс для получения событий быстрой оплаты.

interface QuickPaymentStateListener {
    fun onPaymentEnabledStateChanged(isEnabled: IsPaymentEnabled)
    fun onSessionExpired()
    fun onPaymentResult(quickpayResult: QuickPayResult)
    fun onAuthorizationStateChanged(state: QuickPayAuthorizationState): Unit = Unit
}

Все методы вызываются на Main thread.

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

QuickPayResult

sealed interface QuickPayResult {
    data object Success : QuickPayResult
    data object Failure : QuickPayResult
}

QuickPayEnvironment

enum class QuickPayEnvironment { SANDBOX, PRODUCTION }

QuickPayLocale

enum class QuickPayLocale { SYSTEM, RU, EN }

QuickPayThemeColorScheme

enum class QuickPayThemeColorScheme { SYSTEM, LIGHT, DARK }

IsPaymentEnabled

@JvmInline
value class IsPaymentEnabled(val value: Boolean)

YandexPaymentMethodsWidget

class YandexPaymentMethodsWidget @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : FrameLayout

Пакет: com.yandex.pay.quickpay.api. Отображает платёжные методы пользователя и элементы управления быстрой оплатой. Публичного API нет — управляется автоматически через SDK.