---
title: "在 Unity SDK 中实现网页付费墙"
description: "设置网页付费墙，无需支付 App Store 费用和审核即可收款。"
---

:::important
开始之前，请确保您已[在看板中配置了网页付费墙](web-paywall)，并已安装 Adapty SDK 3.14 或更高版本。
:::

## 打开网页付费墙 \{#open-web-paywalls\}

如果你使用的是自行开发的付费墙，则需要通过 SDK 方法来处理网页付费墙。`Adapty.OpenWebPaywall` 方法会执行以下操作：
1. 生成一个唯一 URL，使 Adapty 能够将向特定用户展示的付费墙与其跳转到的网页关联起来。
2. 追踪用户返回应用的时机，然后以短间隔轮询 `Adapty.GetProfile`，以判断用户画像的访问权限是否已更新。
这样，一旦支付成功并更新了访问权限，订阅几乎会立即在应用中激活。

```csharp showLineNumbers title="Unity"
Adapty.OpenWebPaywall(
    product,
    (error) =>
    {
        if (error != null)
        {
            Debug.LogError($"Failed to open web paywall: {error.Message}");
        }
        else
        {
            Debug.Log("Web paywall opened successfully");
        }
    }
);
```
:::note
`OpenWebPaywall` 方法有两个版本：
1. `OpenWebPaywall(product)` — 根据付费墙生成 URL，并将产品数据附加到 URL 中。
2. `OpenWebPaywall(paywall)` — 根据付费墙生成 URL，但不附加产品数据。当 Adapty 付费墙中的产品与 Web 付费墙中的产品不同时，请使用此版本。
:::

#### 错误处理 \{#handle-errors\}
| 错误代码 | 描述 | 建议操作 |
|-----------|--------------------------------------------------------|---------------------------------------------------------------------------|
| `AdaptyErrorCode.WrongParam` | 付费墙或产品未配置网页购买 URL，或在浏览器中打开 URL 失败 | 查看错误信息了解详情。在 Adapty 看板中检查付费墙/产品配置，或检查设备设置。 |
| `AdaptyErrorCode.DecodingFailed` | 无法正确编码 URL 中的参数 | 验证 URL 参数是否有效且格式正确 |
:::note
查看错误的 `Message` 属性，以获取具体的错误详情。`WrongParam` 可能对应多种问题（缺少购买 URL、无法打开浏览器等）。
:::
## 在应用内浏览器中打开网页付费墙 \{#open-web-paywalls-in-an-in-app-browser\}

:::important
从 Adapty SDK v3.15 起，支持在应用内浏览器中打开网页付费墙。
:::

默认情况下，网页付费墙会在外部浏览器中打开，这会将用户引导至应用之外。

为了提供流畅的用户体验，你可以改为在应用内浏览器中打开网页付费墙。这样一来，网页购买页面会直接在你的应用内展示，用户无需切换应用即可完成交易。

要启用此功能，请将 `AdaptyWebPresentation.InAppBrowser` 传入 `OpenWebPaywall` 方法：
```csharp showLineNumbers title="Unity"
Adapty.OpenWebPaywall(
    product,
    AdaptyWebPresentation.InAppBrowser, // default — ExternalBrowser
    (error) =>
    {
        if (error != null)
        {
            Debug.LogError($"Failed to open web paywall: {error.Message}");
        }
        else
        {
            Debug.Log("Web paywall opened successfully");
        }
    }
);
```