> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 域名验证

> 提交 KYB 前完成产品官网的所有权验证

## 为什么需要验证域名

你的官网是产品对外的门面。在我们批准 KYB 并启用生产支付之前，需要确认 `产品官网` 字段填写的域名确实属于你。每个店铺只需完成一次域名验证，KYB 通过后绑定关系会保留。

有两个入口可以完成验证 —— 两者写入同一份后端状态，只需在任意一处验证一次：

* **Settings → General** —— 任何时候都可以独立完成（或重新）验证，不必走 KYB 流程。
* **Settings → Business Details → 第 8 步（Website URL）** —— 在提交 KYB 时内联完成。该步骤中域名未验证时，"Submit for review" 按钮会保持禁用。

## 四种验证方式

Pancake 提供四种等价的验证方式，按你已有的能力选一种即可。

| 方式               | 通常耗时            | 适用场景         |
| ---------------- | --------------- | ------------ |
| 邮箱域名自动匹配         | 即时              | 客服邮箱与官网同域名   |
| DNS TXT 记录       | 5–30 分钟（DNS 传播） | 适用绝大多数网站     |
| HTML `<meta>` 标签 | 1–2 分钟（需重新发布）   | SPA、静态站点     |
| `.well-known` 文件 | 1–2 分钟（需重新发布）   | 任何能托管静态文件的环境 |

<Note>
  **任选其一**。任意一种验证成功后，其他方式即不再需要。
</Note>

## 方式 1 — 邮箱域名自动匹配（推荐）

如果你在 **第 7 步（Contact Email）** 验证过的客服邮箱与官网同一域名，Pancake 会自动识别并展示一键 **Verify domain** 按钮。

**示例**：客服邮箱 `support@acme.com`（已验证） + 官网 `https://acme.com` → 自动匹配可用。

1. 点击 **Verify domain**。
2. Pancake 在服务端校验邮箱/域名匹配关系，立刻完成验证。

如果邮箱在另一域名（例如 `team@gmail.com` 而官网为 `acme.com`），该选项会被隐藏，请使用下面的手动方式。

## 方式 2 — DNS TXT 记录

最稳定的方式，在域名 DNS 区域中添加一条 TXT 记录。

1. 在仪表盘点击 **Use another method** → **DNS TXT**。
2. Pancake 展示三项：
   * **类型（Type）**：`TXT`
   * **主机/名称（Host / Name）**：`_waffo-challenge`（仪表盘已自动去掉 `.your-domain.com` 后缀，多数 DNS 服务商会自动补上）
   * **值（Value）**：以 `waffo-domain-verify=…` 开头的一次性挑战字符串
3. 在 DNS 服务商的控制台按上述内容添加记录，TTL 留默认值即可。
4. 等待 DNS 传播。多数服务商分钟级生效（Cloudflare、Route 53 几乎是即时的）。
5. 回到 Pancake，点击 **I've added the record**。我们会查询公开 DNS 中的 TXT 值，匹配成功即完成验证。

<Note>
  验证成功后可以保留这条 TXT 记录。即便后续删除也不会影响已建立的绑定 —— 我们只在验证时刻进行检查。
</Note>

### 各服务商添加 TXT 的位置

| 服务商            | 入口路径                                                 |
| -------------- | ---------------------------------------------------- |
| Cloudflare     | DNS → Records → Add record                           |
| GoDaddy        | My Products → DNS → Add → TXT                        |
| Namecheap      | Domain List → Manage → Advanced DNS → Add new record |
| Route 53       | Hosted zones → 选区域 → Create record（Type = TXT）       |
| 阿里云 / 腾讯云      | DNS 解析 → 添加记录（记录类型选 TXT）                             |
| Google Domains | DNS → Custom records                                 |

如果你的服务商要求填完整记录名，请使用 `_waffo-challenge.your-domain.com` 而不是只填 `_waffo-challenge`。

## 方式 3 — HTML `<meta>` 标签

适合无法修改 DNS、但能修改站点代码的场景。

1. 在仪表盘点击 **Use another method** → **HTML meta tag**。
2. Pancake 展示如下代码片段：
   ```html theme={"system"}
   <meta name="waffo-verify" content="<your-challenge-value>">
   ```
3. 把它加到官网首页（`https://your-domain.com/`）的 `<head>` 中。
4. 部署。检查浏览器 view-source 中能看到该标签 —— 如果只在 JS 执行后注入，我们的爬取请求可能在水合前就已发出。纯客户端 SPA 建议改用方式 2 或方式 4。
5. 回到 Pancake，点击 **I've added the tag**。

## 方式 4 — `.well-known` 文件

把一个静态文件放到约定路径下，适合任何能托管静态资源的环境。

1. 在仪表盘点击 **Use another method** → **.well-known file**。
2. Pancake 展示：
   * **文件 URL**：`https://your-domain.com/.well-known/waffo-challenge.txt`
   * **文件内容**：一行 `waffo-domain-verify=…` 字符串
3. 将文件部署到完全一致的路径，确保返回 `200 OK`、`Content-Type: text/plain`（或任意文本类型），文件内容只有挑战值，不要带额外空白。
4. 在浏览器中访问该 URL，确认返回的内容正确。
5. 回到 Pancake，点击 **I've uploaded the file**。

<Note>
  常见错误：把文件部署成 `/.well-known/waffo-challenge`（缺扩展名），或返回 301 跳转到 `www.your-domain.com`，这两种都会失败。请使用 Pancake 给出的完整 URL，并保证文件由你在表单中填写的"主域 / 标准主机"提供服务。
</Note>

## 故障排查

### "找不到记录 / 标签 / 文件"

请重新核对值。每次发起验证生成的挑战都是独立的；只要在 Pancake 点击 **Refresh**，旧值即失效。请确认你贴的是最新值。

### TXT 已添加但仍然验证失败

DNS 缓存。可以用 `dig TXT _waffo-challenge.your-domain.com`（Linux/macOS）或 `nslookup -type=TXT _waffo-challenge.your-domain.com`（Windows）排查。如果还看不到记录，等 5–10 分钟再重试。

### 挑战已过期

每个挑战的有效期较短（仪表盘按钮下方会显示精确时间）。过期后在 Pancake 点击 **Refresh** 生成新挑战，再用新值更新 DNS / meta / 文件。

### 之后想要更换官网域名

KYB 通过前可以在 **第 8 步（Website URL）** 解绑当前域名，重新验证新域名。KYB 通过后域名会被锁定，需联系客服更换。

## 程序化 / API 接入

如果你在自动化引导流程中需要调用域名验证，对应接口为：

| 接口                                                          | 用途              |
| ----------------------------------------------------------- | --------------- |
| `POST /v1/actions/verification/start-domain-verification`   | 为四种方式之一发起挑战     |
| `POST /v1/actions/verification/confirm-domain-verification` | 请求服务端校验记录/标签/文件 |

均需商户 JWT（或 API Key）和标准的 `X-Environment` 请求头。

## 下一步

域名验证通过后，回到 Business Details 完成剩余步骤（第 9 步及之后）。所有步骤（包含域名验证）都变绿之后，"Submit for review" 按钮才会启用。
