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 не инициализирован.

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: ...") Ошибка генерации сессии

logout()

fun logout()

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


QuickPayConfig

class QuickPayConfig(
    val merchantId: String,
    val environment: QuickPayEnvironment = QuickPayEnvironment.SANDBOX
)

QuickPaymentStateListener

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

interface QuickPaymentStateListener {
    fun onPaymentEnabledStateChanged(isEnabled: IsPaymentEnabled)
    fun onSessionExpired()
    fun onPaymentResult(quickpayResult: QuickPayResult)
}

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

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

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.