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

# 产品与付款链接

> 创建产品并分享面向客户的 Anyway 付款链接。

每个产品可以拥有一个或多个付款链接。客户只需要使用接口返回的公开 Anyway `paymentLinkUrl`。

## 创建付款链接

<Steps>
  <Step title="创建或打开产品">
    前往 **Business → 产品**，填写产品名称、描述、价格和币种。
  </Step>

  <Step title="选择付款方式">
    选择付款方式，并完成表单中要求的设置。
  </Step>

  <Step title="复制 Anyway 链接">
    发布产品并复制 `paymentLinkUrl`。
  </Step>
</Steps>

```json 付款链接响应中的相关字段 theme={null}
{
  "productId": "PRD_EXAMPLE",
  "paymentLinkUrl": "https://pay.anyway.sh/pay/PL_EXAMPLE"
}
```

请将返回的 `paymentLinkUrl` 作为结账基础地址，不要解析或重新拼接它的路径。如需让关联数据
贯穿结账流程，可以追加经过 URL 编码的查询参数。

## 附加关联数据

在发给买家的付款链接上追加字符串查询参数：

```text theme={null}
https://pay.anyway.sh/pay/PL_EXAMPLE?merchant_reference=PUR_456&user_id=USR_123&source=web
```

Anyway 会把每个查询参数的第一个字符串值保存在订单的 `merchantMetadata` 中。
`merchant_reference` 还有一个额外作用：Anyway 会同时将它提升为顶层
`merchantReference` 字段，并继续保留在 `merchantMetadata` 中。

<Note>
  结账 URL 最多可以包含 20 个不同的查询参数名，完整的原始查询字符串最多为 4,096 字节；
  `merchantReference` 最多为 255 个 UTF-8 字节。如果同一个参数名出现多次，Anyway 只保留
  第一个值。超出这些限制时，结账请求会被拒绝。
</Note>

| 字段                  | 适用场景                        | 查询行为                           |
| ------------------- | --------------------------- | ------------------------------ |
| `merchantReference` | 一个稳定的业务关联值，例如购买流水号或购物车 ID   | 订单列表支持 `merchant_reference` 筛选 |
| `merchantMetadata`  | 额外的字符串键值上下文，例如内部用户 ID 或获客渠道 | 随订单返回；不支持按任意元数据键筛选             |

上面的例子会在订单载荷中生成：

```json theme={null}
{
  "merchantReference": "PUR_456",
  "merchantMetadata": {
    "merchant_reference": "PUR_456",
    "user_id": "USR_123",
    "source": "web"
  }
}
```

请使用 URL 构造工具正确编码参数名和值。不要在参数中放置密钥或原始个人信息；买家可以看到
这些内容，浏览器历史和请求日志也可能记录它们。

## 结账时会发生什么

<Steps>
  <Step title="买家打开链接">
    买家打开 Anyway 付款链接。
  </Step>

  <Step title="Anyway 开始结账">
    Anyway 创建结账会话，并保留你的订单引用和元数据。
  </Step>

  <Step title="买家付款">
    买家完成所选付款流程。
  </Step>

  <Step title="Anyway 确认订单">
    Anyway 确认付款并创建或更新对应订单。
  </Step>

  <Step title="销售记录计入金融">
    对于由平台统一收取的银行卡 / 美元付款，销售记录会异步加入金融。
  </Step>
</Steps>

可选的成功跳转地址必须是有效 HTTPS URL。确认付款后，Anyway 会把买家带回该地址，并将
自定义查询参数与 `anyway_order_id`、`status` 及可用的签名回调凭证一起返回。订单 Webhook
和 Merchant API 的订单响应也会包含相同的关联字段。交付高价值商品前，请在服务端再次验证
订单状态。

<Warning>
  查询参数和 `merchantMetadata` 对买家可见。它们适合关联和补充上下文，不应单独用于授权
  或定价。
</Warning>

## 管理产品与链接

产品列表可筛选 `PUBLISHED`、`DRAFT` 和 `ARCHIVED`，并通过行操作菜单发布或归档产品。打开产品后，可以编辑名称或描述、查看已有付款链接、为支持的付款方式创建新链接并复制公开 URL。

创建产品后，应用会返回产品列表，并通过成功提示提供 **复制付款链接** 操作；向现有产品添加链接后，则会返回该产品概览并显示相同的复制操作。也可以从概览复制链接。

## 安全分享检查

* 只分享 `paymentLinkUrl`，或仅修改其编码查询参数后得到的链接。
* 在你方系统中保持 `merchantReference` 稳定且唯一。
* 使用 Webhook 作为服务端付款信号。
* 保证履约逻辑幂等，同一付款事件不会重复交付。
* 将订单金额和币种与你自己的产品记录进行核对。
