---
title: "Реализация веб-пейволов в Flutter SDK"
description: "Настройте веб-пейвол для приёма платежей без комиссий и проверок App Store."
---

:::important
Прежде чем начать, убедитесь, что вы [настроили веб-пейвол в дашборде](web-paywall) и установили Adapty SDK версии 3.6.1 или выше.
:::
Если вы работаете с пейволом собственной разработки, для обработки веб-пейволов нужно использовать метод SDK. Метод `.openWebPaywall`:
1. Генерирует уникальный URL, который позволяет Adapty связать конкретный пейвол, показанный определённому пользователю, с веб-страницей, на которую он перенаправляется.
2. Отслеживает возвращение пользователя в приложение и затем с короткими интервалами вызывает `.getProfile`, чтобы определить, обновились ли права доступа профиля.

Таким образом, если оплата прошла успешно и права доступа обновились, подписка активируется в приложении практически мгновенно.
```dart showLineNumbers title="Flutter"
try {
  await Adapty().openWebPaywall(product: <YOUR_PRODUCT>);
  // The web paywall will be opened
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
  // handle other errors
}
```

:::note
Метод `openWebPaywall` существует в двух вариантах:
1. `openWebPaywall(product)` — генерирует URL по пейволу и добавляет данные продукта в URL.
2. `openWebPaywall(paywall)` — генерирует URL по пейволу без добавления данных продукта в URL. Используйте его, если продукты в пейволе Adapty отличаются от продуктов в веб-пейволе.
В SDK v4 параметр `paywall` принимает `AdaptyFlowPaywall` — вариацию пейвола из полученного флоу. Убедитесь, что `flow.paywalls` не пустой, прежде чем обращаться к его элементам, например `flow.paywalls[0]`.
:::

#### Обработка ошибок \{#handle-errors\}
| Ошибка                                  | Описание                                                          | Рекомендуемое действие                                                              |
|-----------------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| AdaptyError.paywallWithoutPurchaseUrl   | У пейвола не настроен URL для веб-покупки                         | Проверьте, правильно ли настроен пейвол в дашборде Adapty                           |
| AdaptyError.productWithoutPurchaseUrl   | У продукта отсутствует URL для веб-покупки                        | Проверьте настройки продукта в дашборде Adapty                                      |
| AdaptyError.failedOpeningWebPaywallUrl  | Не удалось открыть URL в браузере                                 | Проверьте настройки устройства или предложите альтернативный способ оплаты          |
| AdaptyError.failedDecodingWebPaywallUrl | Не удалось корректно закодировать параметры в URL                 | Убедитесь, что параметры URL корректны и имеют правильный формат                    |
## Открытие веб-пейволов во встроенном браузере \{#open-web-paywalls-in-an-in-app-browser\}

:::important
Открытие веб-пейволов во встроенном браузере поддерживается начиная с Adapty SDK v3.15.
:::

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

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

Чтобы включить это, задайте для параметра `in` значение `.inAppBrowser`:
```dart showLineNumbers
try {
  await Adapty().openWebPaywall(
    product: <YOUR_PRODUCT>,
    openIn: AdaptyWebPresentation.inAppBrowser,
  );
  // The web paywall will be opened in the in-app browser
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
  // handle other errors
}

```