---
title: "Реализация веб-пейволов"
description: "Узнайте, как реализовать веб-пейволы в вашем Capacitor-приложении с помощью Adapty SDK."
---

:::important
Прежде чем начать, убедитесь, что вы [настроили веб-пейвол в дашборде](web-paywall) и установили Adapty SDK версии 3.6.1 или выше.
:::

## Открытие веб-пейволов \{#open-web-paywalls\}

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

```typescript showLineNumbers

try {
  await adapty.openWebPaywall({ paywallOrProduct: product });
} catch (error) {
  console.error('Failed to open web paywall:', error);
}
```
:::note
Существует две версии метода `openWebPaywall`:
1. `openWebPaywall({ paywallOrProduct: product })` — генерирует URL по пейволу и добавляет в URL данные о продукте.
2. `openWebPaywall({ paywallOrProduct: paywall })` — генерирует URL по пейволу без добавления данных о продукте. Используйте этот вариант, если продукты в пейволе Adapty отличаются от продуктов в веб-пейволе.
В SDK v4 сторона пейвола у `paywallOrProduct` принимает `AdaptyFlowPaywall` — вариацию пейвола полученного флоу. Перед обращением по индексу убедитесь, что `flow.paywalls` не пуст, например: `flow.paywalls[0]`.
:::

#### Обработка ошибок \{#handle-errors\}
| Ошибка                                  | Описание                                                          | Рекомендуемое действие                                                              |
|-----------------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| AdaptyError.paywallWithoutPurchaseUrl   | У пейвола не настроен URL для веб-покупки                         | Проверьте, правильно ли настроен пейвол в дашборде Adapty                           |
| AdaptyError.productWithoutPurchaseUrl   | У продукта отсутствует URL для веб-покупки                        | Проверьте настройки продукта в дашборде Adapty                                      |
| AdaptyError.failedOpeningWebPaywallUrl  | Не удалось открыть URL в браузере                                 | Проверьте настройки устройства или предложите альтернативный способ оплаты          |
| AdaptyError.failedDecodingWebPaywallUrl | Не удалось корректно закодировать параметры в URL                 | Убедитесь, что параметры URL корректны и правильно отформатированы                  |
## Получите URL веб-пейвола без его открытия \{#get-the-web-paywall-url-without-opening-it\}

Если вы хотите самостоятельно открыть страницу покупки в веб-среде, а не доверять это SDK, используйте `createWebPaywallUrl`. Метод возвращает тот же уникальный URL, который открыл бы `openWebPaywall`, — его можно отрисовать в собственном веб-вью или обработать редирект на своих условиях. Принимает тот же аргумент `paywallOrProduct` — вариант пейвола из полученного флоу (`AdaptyFlowPaywall`) или `AdaptyPaywallProduct`.
```typescript showLineNumbers

try {
  const url = await adapty.createWebPaywallUrl({ paywallOrProduct: product });
  // open `url` in your own web view, or handle the redirect yourself
} catch (error) {
  console.error('Failed to create web paywall URL:', error);
}
```

:::note
Чтобы открыть произвольный URL (не веб-пейвол) через нативный браузер — например, по нажатию кнопки во флоу — используйте [`adapty.openWebUrl`](capacitor-handle-paywall-actions#open-urls-from-flows-and-paywalls).
:::
## Открытие веб-пейволов во встроенном браузере \{#open-web-paywalls-in-an-in-app-browser\}

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

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

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

Чтобы включить это, установите `openIn` в значение `WebPresentation.BrowserInApp` в `openWebPaywall`:
```typescript showLineNumbers

try {
    await adapty.openWebPaywall({
        paywallOrProduct: product,
        openIn: WebPresentation.BrowserInApp, // default – WebPresentation.BrowserOutApp
    });
} catch (error) {
    console.error('Failed to open web paywall:', error);
}
```