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

# 支付链接（无代码收款）

> 无需任何集成，直接在商户 Portal 收款：什么是支付链接、创建时要填哪些字段、过期如何工作、为什么一个链接对应恰好一笔订单、在哪里跟踪结果，以及何时应该改用 Checkout。

**支付链接**是你在商户 Portal 中创建并发送给客户的收银台 URL。你这边不需要集成任何
东西：Waffo 创建订单、托管支付页面，并在 Portal 中向你展示结果。

在 **Transactions → Payment Link** 下找到它。创建链接受权限控制——对不持有该权限的
用户，**New Payment Link** 按钮是禁用的。如果你能打开该页面且按钮可用，说明该功能已为
你的账户启用。

## 什么时候应该用支付链接而不是集成？

| 情形 | 使用 |
| - | - |
| 没有网站或 App，或者销售发生在聊天、邮件或电话中 | **支付链接** |
| 一次性收款：一张发票、一笔押金、一次手动补收 | **支付链接** |
| 在你自己的网站或 App 内的收银台流程 | [Checkout](/docs/zh/developer-docs/integration/checkout/steps) |
| 大批量、你自己的订单 ID、webhook、由你的系统触发的退款 | [API 集成](/docs/zh/developer-docs/integration/api/overview) |
| 周期性账单 | 订阅——支付链接无法创建订阅 |

两者是同一条通道，不是两个产品：支付链接通过与 API 订单相同的订单创建路径创建，你复制
的 URL 就是 `orderAction.webUrl` 返回给 API 集成的那个托管支付页面。不同之处在于谁创建
订单——Portal，还是你的服务器。

## 创建链接时我要填什么？

| 字段 | 是否必填 | 说明 |
| - | - | - |
| **Portal User Terminal** | 是 | `Web` 或 `App`——付款人将在哪里打开链接。它影响可以提供哪些支付方式，以及生成什么类型的链接。 |
| **Order Description** | 是 | 自由文本。显示在确认对话框中，并作为列表的第一列，所以要让它易于辨认。 |
| **Product** | 是 | `ONE_TIME_PAYMENT` 或 `DIRECT_PAYMENT`。只接受这两个；其他任何值都会被拒绝。 |
| **Country** | 是 | 付款人的国家。决定页面上显示的支付方式。 |
| **Acquiring Currency** | 是 | 订单币种——你收款的币种。 |
| **User Currency** | 否 | 付款人被扣款的币种，当它与收单币种不同时填写。同币种收款请留空。 |
| **Price** | 是 | 必须大于零。链接创建后即固定。 |
| **Email** | 否 | 必须是有效地址。作为付款人标识存储在订单上。留空则会生成一个占位身份——所以只要你需要订单可追溯到真实客户，就请填写。 |
| **Order Expired At** | 否 | 见下文。不能选择过去的日期。 |

**Product** 必须是你的 Payin 合约上已启用的——查看 Portal 中的 **Service → Payin**。
不在你合约中的产品会校验失败，和在 `/api/v1/order/create` 上的表现一样。

提交后你会得到一个确认对话框，包含描述、金额和币种、国家，以及带复制按钮的链接本身。
在那里复制并分享它——那就是链接交到你手上的时刻。

## 链接过期是怎么工作的？

* **将 Order Expired At 留空**，则应用为你账户配置的默认订单过期窗口。Portal 在
  **Order Expired At** 列的提示中显示该默认值。
* **选择一个日期和时间**以覆盖它。选择器会屏蔽过去的日期；在请求处理时已经过去的过期
  时间会被忽略，改为应用默认值。
* 给付款人留出可用的时间。只有几分钟的窗口会被接受，但几乎没有时间完成支付——尤其是
  涉及银行 App 或柜台步骤的支付方式。

过期后，底层订单到达其终态（`ORDER_CLOSE`），链接不再能完成支付。过期是该页面提供的
唯一失效机制。

## 我可以取消或复用链接吗？

**没有撤销按钮。** 列表唯一的行操作是 **Copy URL**。如果你需要提前关闭链接并且拥有
API 集成，可以用列表中显示的 `acquiringOrderId` 通过 `POST /api/v1/order/cancel` 取消
底层订单——取消在订单仍开放时可行，成功后则不行。否则，请在创建链接时设置较短的过期时间。

**不可复用。** 每个链接都与恰好一笔订单一起创建：

| 概念 | 关系 |
| - | - |
| 一次创建表单的提交 | 一笔收单订单、一个 `acquiringOrderId`、一个链接 |
| 一个链接 | 一笔支付，一个固定金额 |
| 两个客户，或第二笔支付 | 两个独立的链接 |

把链接当作一张单独的发票，而不是可复用的"付款给我"页面。因为它背后的对象是一笔普通的
收单订单，下游一切行为都正常：它出现在 **Transactions → Payments** 中，可以在那里按
**Acquiring Order ID** 搜索，并像任何其他订单一样退款、对账和结算。

## 我在哪里查看我创建的链接，以及它们是否已支付？

**Payment Link** 列表按最新优先显示：

| 列 | 含义 |
| - | - |
| Order Description | 你在创建时输入的内容 |
| Product | `ONE_TIME_PAYMENT` / `DIRECT_PAYMENT` |
| Country | 创建时选择的付款人国家 |
| Price | 订单金额和收单币种 |
| Acquiring Order ID | Waffo 的订单 ID——在其他地方查找该订单的键 |
| Status | 底层订单的实时状态 |
| Created Time / Created By | 何时创建，以及由哪个 Portal 用户创建 |
| Order Expired At | 生效的过期时间，其提示中解释了默认值 |
| Action | **Copy URL** |

状态值就是你在 **Transactions → Payments** 中已经见到的订单状态：
`AUTHORIZATION_REQUIRED`（链接已下发，付款人尚未完成）、`PAY_IN_PROGRESS`、
`AUTHED_WAITING_CAPTURE`、`CAPTURE_IN_PROGRESS`、`PAY_SUCCESS`，以及 `ORDER_CLOSE`（已关闭，
包括已过期和被放弃的链接）。

这个页面是创建日志，不是分析视图：它没有筛选也没有导出。要筛选、查看交易详情、退款和
收据，请带着 Acquiring Order ID 到 **Transactions → Payments** 操作。

## 链接创建失败了。现在怎么办？

创建运行的是与 API 订单创建相同的校验，所以常见原因同样适用：你的合约上未启用的产品、
国家或币种，或你的账户无法服务的支付方式组合。错误消息会指出有问题的参数——先对照
你的 **Service → Payin** 页面检查。

***

需要本页未覆盖的行为——可复用链接、订单上带你自己的订单 ID，或程序化创建？那正是
[API 集成](/docs/zh/developer-docs/integration/api/overview) 路径的用途。
当某个特定链接行为异常时，请附上 Acquiring Order ID
[联系客服](mailto:support@waffo.com)。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.