支付链接 概览
支付链接是一个可分享的 URL,能把买家直接带入你已经配置好的托
管结账页。无需 SDK,无需服务端集成 — 在仪表板签发、分享出去,资
金在链上确认后会触发和其他情形一样的 payment.settled Webhook。
从底层看,支付链接就是一个 CheckoutSession — “支付链接”只是仪表 板一侧对”不是由买家驱动的 SDK 流程创建的会话”的叫法。Webhook 契约 相同,链上结算方式相同,费用也相同。
常见用途:
- 给一次性客户开发票,无需写代码
- 销售页面场景 — 开发团队这个季度没空接入自定义购物车
- B2B 跟进 — 把链接粘贴进邮件就搞定
- 类似”请我喝杯咖啡”的固定金额打赏页面
创建一个链接
目前只能通过仪表板创建:
- 登录商户仪表板
- Payments → Payment Links → + New link
- 选择以下两条路径之一:
- New order — 填写明细项、币种、客户信息和可选的元数据。 仪表板会在一次调用中同时创建 Order 和支付链接。
- Existing order — 选择一个
PENDING状态的订单(例如买家 放弃了之前的链接)。会针对同一个订单重新签发一个新链接,订 单历史保持完整。
- 保存 → 仪表板会展示
https://checkout.infraio.xyz/cst_…这个 URL,带复制按钮和二维码下载。测试模式的链接使用checkout-dev.infraio.xyz,环境信息就编码在主机名里。
目前每个支付链接都是一次性的:买家一旦付款,会话就会变为
COMPLETED。如果会话在支付前过期(默认 TTL 为 30 分钟),打开
订单详情页并点击 Re-create link,即可针对同一订单签发一个
新链接。
买家会看到什么
- 他们会打开
checkout.infraio.xyz/<session_key>— 和 SDK 签发 的会话一样的托管结账 UI。 - 他们会经历结账 → 概览中描述的标准 流程:选择资产 → 发送资金 → 等待确认。
payment.settled会触发到你的 Webhook,携带订单、intent、收 据、链上交易哈希和确认数 — 和其他任何已结算支付的负载一样。 schema 详见 Webhooks。
仪表板能提供什么
目前支付链接界面已包含:
- 列表视图 — 展示你签发过的每个链接,游标分页,包含状态、金 额、所属订单号、客户、到期时间,以及一键打开买家 URL。
- 筛选器 — 状态(
ACTIVE/COMPLETED/EXPIRED/CANCELED)、日期范围,以及跨订单号、客户姓名、邮箱或 external ref 的全文搜索。 - CSV 导出 — 一键导出,遵循当前的筛选条件。
- KPI 条 — 按状态统计数量,通过
X-Environment标头限定在当 前环境(live还是test)范围内,确保数字始终和表格展示的内 容一致。 - 详情页 — 订单摘要、会话历史(该订单的每一次尝试)、带区块 浏览器链接的链上历史,以及针对支付前过期会话的 Re-create link 操作。
目前的限制
- 没有程序化 API — 链接只能在仪表板创建。SDK 可以通过
POST /b2b/v1/checkout-sessions/quick创建等效的一次性会话 (见 API 参考),但”长期有效的可分享 URL”这种体验目前仅限仪表板。 - 没有按买家身份验证 — 任何拿到 URL 的人都能付款。一次性模型 在一定程度上缓解了这个问题;完整的买家身份绑定在下方的路线图 中。
- 品牌设置是全局的 — 链接使用的是 Settings → Branding 中 配置的商户级 Logo、品牌色和圆角。按链接单独覆盖品牌设置的功能, 仪表板 UI 中还没有开放。
路线图
我们已经明确想要的功能,按优先级从高到低排列:
- 程序化创建 — 一个
POST /b2b/v1/payment-links端点,对应 仪表板的双 tab 对话框,返回相同的checkout_url。自然会配套列 表和撤销功能。 - 基于时间的过期 — 链接在特定日期之前一直有效,而不只是到会 话 TTL 结束为止。开发票场景需要这个功能,那里”14 天内到期”是很 自然的截止日期。
- 可复用链接 — 类似 Stripe 的多买家页面(捐赠、打赏、周期性 账单)。目前每个链接都是一次性的。
- 按买家身份绑定 — 把链接锁定到指定邮箱或钱包,防止被转发。
- API 侧生成二维码 — 目前二维码是在仪表板客户端渲染的;在 API 上开放这项能力,用于标签打印和嵌入式收据,也在计划之中。
另请参阅
- 概念 → 会话 — 买家付款期间,会话和 intent 层发生了什么。
- 结账 → 概览 — 买家实际会看到什么。
- Webhooks → 概览 — 你的服务器要处理
的
payment.settled事件。