功能介绍
平台出具的每张回单(出款、入款、退款、内部转账、兑换、加密货币提现或充值、银行操作、银行卡消费)都有一个公开跟踪链接,风格与 Wise 一致:{code} 是与回单校验(GET /verify/receipts/{code} 及每张 PDF 上打印的二维码)完全相同的 HMAC 签名代码。链接即凭证:无法被猜测或伪造,且永远只暴露这一笔交易。
链接从哪里来
你无需自行构建 URL — 平台会直接提供:- 回单载荷中的
verify_url。 当交易到达最终状态时,其回单包含verify_url。启用跟踪器后,该 URL 现在指向https://business.cbpayapp.com/t/{code}。 - 回单邮件。 你的客户收到的品牌化回单邮件带有相同的链接(“在线验证” / 跟踪按钮)。
- 每张 PDF 回单上的二维码编码了相同的代码 — 扫码即打开跟踪页面。
通过 API 获取已有交易的链接
回单和邮件始终带有链接,但你无需下载任何内容即可获取:使用交易的kind 和 id 调用 GET /v1/track-link,为你自己的 UI 中的**“分享链接”**按钮提供数据。
200 OK:
code 与打印在每张回单上的二维码使用同一个 HMAC 签名代码,因此链接是确定性的:对同一交易重复调用该端点始终返回相同的 URL。
谁可以调用。 交易所属账户本身(API 密钥或成员会话)、组织管理员和平台管理员 —— 与回单相同的读取范围。范围之外的交易(或未知的 kind)统一返回 404 not_found 而非 403:绝不泄露交易是否存在。缺少 kind 或 id 时返回 400 invalid_payload。
页面展示内容
- 状态徽章 — 公开、易读的状态(
completed、processing、failed),附操作详情(收款人、参考号、金额、汇率)。 - 时间线 — 每种操作类型有固定的步骤序列(例如出款:已发起 → 处理中 → 在途 → 已完成)。只显示真实时间戳:第一步带有创建时间,已到达的最终步骤带有最后更新时间;中间步骤绝不显示虚构的日期。
- PDF 回单 — 相同的品牌化可验证回单,实时生成,可直接从页面下载。
- 你的品牌 — 你组织的名称、logo、网站和主题色(白标设计)。
- 区块链浏览器链接 — 对于带链上哈希的加密货币交易,提供公开浏览器链接。
- 支持区块 — “这笔转账有问题?“指向你组织的网站。
公开 JSON API(构建你自己的跟踪器)
托管页面渲染的相同数据也可以 JSON 形式获取 — 如果你想把跟踪功能嵌入自己的门户而不是跳转到我们的页面,这非常有用:公开状态(防提示 / anti tipping-off)
敏感的内部状态在到达公开页面之前会被泛化 — 处于合规审核中的操作不得与正常处理中的操作有所区别:时间线序列
步骤序列按操作系列固定 — 接收者对同一产品永远看到相同的步骤:
操作进行中时,当前步骤之前的步骤为
complete,当前步骤为 in_progress,其余为 upcoming。操作失败时,停下的那一步为 failed,之前的步骤为 complete,之后的为 upcoming。操作完成时,所有步骤均为 complete。
PDF 回单端点
Content-Type: application/pdf,Content-Disposition: attachment),使用与认证端点相同的渲染器实时生成 — 包括完整的中文渲染(Noto Sans SC 字体)。PDF 端点与 JSON 端点共享相同的按 IP 速率限制。
隐私与安全
语言
页面和 PDF 完全支持三种语言 — 英语、西班牙语和简体中文:- 解析顺序(公开链):
?lang=/?locale=(无效值会被忽略,永不 400),然后是付款人 cookiecbpay_pay_locale(HttpOnly=false、Secure、SameSite=Lax、30 天),然后是商户账户,然后是组织default_locale,然后是 Accept-Language,最后是英语。门户 SSR cookiecbpay_lang是另一枚前端 cookie——API 不读取它。 - JSON API 使用同一参数在服务端翻译
fields/amounts标签。 - PDF 完全以所请求的语言渲染,包括中文。
旧版验证端点(保持不变)
GET /platform/v1/verify/receipts/{code} 继续有效 — 无需任何迁移:
- 用浏览器打开(带
Accept: text/html的请求)会收到302重定向到跟踪页面。 - API 客户端收到与往常相同的 JSON 载荷。
错误
查看错误参考了解全局错误格式。
常见问题
打开跟踪链接需要 API key 或登录吗?
打开跟踪链接需要 API key 或登录吗?
不需要。URL 中的签名代码就是凭证。这正是通过邮件、聊天或短信与客户安全分享链接的原因。
有人能通过猜测代码枚举交易吗?
有人能通过猜测代码枚举交易吗?
不能。代码使用 HMAC 签名,每笔交易有 80 位熵;无效代码与”有效但不存在”的代码无法区分(统一 404),且按 IP 的速率限制会阻止暴力破解。
为什么交易显示 'processing' 的时间比平时长?
为什么交易显示 'processing' 的时间比平时长?
processing 涵盖所有瞬时状态,包括内部合规审核。公开页面有意不区分审核状态 — 操作解决后将变为 completed 或 failed。时间线会显示预计日期吗?
时间线会显示预计日期吗?
绝不。只渲染真实时间戳:交易创建时间和到达当前最终步骤的时间。中间步骤不显示日期。
我已经集成的旧版 /verify/receipts 链接会失效吗?
我已经集成的旧版 /verify/receipts 链接会失效吗?
不会。它会继续为 API 客户端返回 JSON,现在还会把浏览器重定向到跟踪页面。两种行为都是永久性的。
我可以隐藏跟踪页面、只保留 JSON 验证吗?
我可以隐藏跟踪页面、只保留 JSON 验证吗?
跟踪器是同一签名代码的公开界面,面向整个平台启用。如果你不想暴露托管页面,只需不分享该 URL — JSON 端点无论如何都会继续工作。
电子回单
回单如何生成、PDF 布局和验证二维码。
错误
全局错误目录和响应格式。