Приём платежей через веб для приложений на Kotlin Multiplatform | Документация Adapty

Реализация веб-пейволов в Kotlin Multiplatform SDK

Перед началом убедитесь, что вы настроили веб-пейвол в дашборде и установили Adapty SDK версии 3.15 или выше.

Открытие веб-пейволов

Если вы работаете с пейволом, который разработали самостоятельно, вам нужно обрабатывать веб-пейволы с помощью метода SDK. Метод openWebPaywall:

  1. Генерирует уникальный URL, позволяющий Adapty связать конкретный показанный пейвол с конкретным пользователем и веб-страницей, на которую тот перенаправляется.
  2. Отслеживает возвращение пользователя в приложение и затем запрашивает getProfile с короткими интервалами, чтобы определить, обновились ли права доступа профиля.

Таким образом, если платёж прошёл успешно и права доступа обновились, подписка активируется в приложении практически мгновенно.

После возвращения пользователей в приложение обновите UI, чтобы отразить изменения в профиле. Adapty получит и обработает события обновления профиля.


viewModelScope.launch {
    Adapty.openWebPaywall(product = product).onSuccess {
        // the web paywall was opened successfully
    }.onError { error ->
        // handle the error
    }
}

Есть две версии метода openWebPaywall:

  1. openWebPaywall(product = product) — генерирует URL по пейволу и добавляет данные о продукте в URL.
  2. openWebPaywall(paywall = paywall) — генерирует URL по пейволу без добавления данных о продукте в URL. Используйте этот вариант, если продукты в пейволе Adapty отличаются от продуктов в веб-пейволе.

В SDK v4 параметр paywall заменён параметром flowPaywall, принимающим AdaptyFlowPaywall — один из вариантов пейвола в flow.paywalls. См. гайд по миграции.

Открытие веб-пейволов во встроенном браузере

По умолчанию веб-пейволы открываются во внешнем браузере.

Чтобы обеспечить бесшовный пользовательский опыт, вы можете открывать веб-пейволы во встроенном браузере. Страница покупки будет отображаться прямо в приложении, и пользователям не придётся переключаться между приложениями для завершения транзакции.

Чтобы включить это, установите параметр openIn в значение AdaptyWebPresentation.IN_APP_BROWSER:


viewModelScope.launch {
    Adapty.openWebPaywall(
        product = product,
        openIn = AdaptyWebPresentation.IN_APP_BROWSER // default – EXTERNAL_BROWSER
    ).onSuccess {
        // the web paywall was opened successfully
    }.onError { error ->
        // handle the error
    }
}