Состояние активации
QR‑код от Яндекс Пэй поддерживает состояние активации виджета — отдельное от авторизации. Виджет может быть неактивирован, даже если пользователь уже авторизован в других SDK финтеха (например через Арго).
Активация нужна, если:
- Есть потребность явно разделить авторизацию (с точки зрения UI) между QuickPay и другим флоу из Яндекс Пэй. Без отдельного состояния активации авторизованный в другом SDK пользователь сразу увидит готовый к оплате виджет, что в ряде сценариев нежелательно.
- Нужно показать FAQ до первой оплаты. Неактивированный виджет выглядит как неавторизованный; по клику на «Подключить» пользователь попадает в онбординг, и активация происходит по его итогам.
Неактивированный виджет визуально эквивалентен неавторизованному. Вызов getPaymentSessionId() в неактивированном состоянии завершится исключением.
Конфигурация
Начальное состояние активации задаётся при инициализации SDK:
val config = QuickPayConfig(
merchantId = "YOUR_MERCHANT_ID",
environment = QuickPayEnvironment.SANDBOX,
isActivatedByDefault = true, // по умолчанию true
)
| Значение | Поведение на первом запуске |
|---|---|
true (по умолчанию) |
Авторизованный пользователь сразу считается активированным — обратная совместимость с интеграциями до введения состояния активации. |
false |
После авторизации виджет находится в состоянии NotActivated. Требуется явная активация — через онбординг/FAQ, вызов enableQuickPayment() (OAuth + активация) или программно через activate(). |
Примечание
Если пользователь проходит авторизацию непосредственно через QuickPay (enableQuickPayment()), виджет активируется сразу — независимо от значения isActivatedByDefault. Значение isActivatedByDefault = false влияет только на случай, когда пользователь уже был авторизован в другом SDK финтеха до первого запуска QuickPay.
Состояние NotActivated
В QuickPayAuthorizationState добавлен новый кейс:
public data object NotActivated : QuickPayAuthorizationState
Эмитится только при QuickPayConfig.isActivatedByDefault = false. Означает: пользователь авторизован через Яндекс ID, но виджет ещё не активирован.
Переходы между состояниями описаны в QuickPayAuthorizationState — Переходы между состояниями.
Публичное API
object YandexQuickPay {
fun isActivated(): Boolean
fun activate()
fun deactivate()
}
isActivated()
Возвращает текущее состояние активации виджета. До первого явного вызова activate() или deactivate() возвращает значение QuickPayConfig.isActivatedByDefault.
Исключения: IllegalStateException если SDK не инициализирован.
activate()
Активирует виджет. Используется, когда пользователь уже авторизован, но виджет находится в состоянии NotActivated — например, по итогам просмотра FAQ-экрана.
Если пользователь не авторизован, для активации вместе с OAuth используйте enableQuickPayment().
deactivate()
Деактивирует виджет без логаута. После вызова:
- Виджет рендерится как неавторизованный.
QuickPayAuthorizationStateпереходит вNotActivated.getPaymentSessionId()бросает исключение до повторной активации.- Сессия Яндекс ID сохраняется — повторная активация через
activate()не потребует OAuth.