> ## 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.

# 收银台页面生命周期与收据

> Waffo 收银台页面在订单生命周期各阶段的行为：支付后重新打开链接、处理中状态、结果页跳转、商户展示名称、logo、跨币种金额以及回头客的信息预填。

本页介绍 Waffo 托管收银台页面在支付前、支付中
和支付后的行为。支付方式的展示顺序与分组，见
客制化收银台文档。

## 订单结束后客户重新打开收银台链接会怎样？

在订单到达最终状态后的一段较长时间内——
平台配置的天数，从订单完成时起算——
链接仍会解析到真实结果：

* 成功的订单显示**成功页**——不会仅因订单有效期已过
  就被误报为失败。
* 失败的订单显示**失败页**，附带相应的错误码
  （例如订单已过期）。

超过该期限后，链接不再可查询，转而显示专门的
链接过期页面。仍在处理中的订单只要在进行中
就始终可查询。

## 收银台页面卡在"处理中"，付款丢了吗？

不一定。当支付流程遇到无法立即解决的错误时，
收银台页面会停留在处理中视图并显示
原因。在后台，Waffo 会持续自动重试该订单。

一旦重试产生结果，页面会自行推进到
成功页或失败页——客户看到的内容完全由
后端订单状态驱动，因此客户无需重新提交。
请以您的支付通知或订单查询为最终状态的依据。

## 支付后客户会被重定向回我的网站吗？

取决于您在创建订单时传了什么：

| 创建订单时 | 结果页行为 |
| - | - |
| 提供了跳转 URL | 客户在结果页确认后，会被重定向到您的 URL。 |
| 未提供跳转 URL | 结果页显示一个 **Close** 按钮；点击会关闭收银台页面。 |

## 收银台页面和收据上显示的是哪个商户名称？

收银台页面、支付指引页和收据永远只显示
**Cashier Display Name**，这是您在商户
Portal 中配置的可选字段。您 KYB 注册的法定名称（Merchant Name）**绝不会**
展示给客户。

如果您没有配置 Cashier Display Name，页面头部的商户名称字段
会直接隐藏——注册的公司名称不会作为
那里的回退。

有一个例外值得了解：在带有 Merchant-of-Record
披露脚注的页面上，如果未设置 Cashier Display Name，脚注会回退到
注册的法定名称。如果您不希望注册名称
出现在任何地方，请配置 Cashier Display Name。

## 同一个 MID 下不同产品线能显示不同的 logo 吗？

可以。您可以在商户 Portal 上传多个 logo（MID 或 SubMID
级别）；每个 logo 获得唯一的 logo ID。创建订单时传入
logo ID，即可控制该次收银台会话显示哪个 logo。

回退规则：

* 如果省略该参数，或 ID 无效或不存在，则显示
  **默认 logo**。
* 第一个上传的 logo 自动成为默认；您可以在 Portal 中把默认
  切换为任何其他 logo。
* 完全没有上传 logo 时，不显示商户 logo。

## 跨币种订单的金额是怎么显示的？

当订单币种与客户的支付币种不同时，
收银台页面会突出显示客户支付金额，并附上
换算明细——原订单金额、汇率和任何税费。

对于卡支付，明细在汇率可以确定后出现：
如果存在多种可能的支付币种，则在
客户输入足够的卡信息以确定汇率后显示。

当订单币种与支付币种相同时，没有
换算，因此不显示明细。

高级布局选项（例如哪个币种作为主显示、独立的
字号）按商户开启——如有需要请联系您的 Waffo
代表。

## 回头客每次都要重新填写信息吗？

不需要，两种机制减少重复输入：

* **保存的信息**——客户第一次填写表单时，
  "save your information" 选项默认勾选。如果保留，
  下次购买时会自动带出他们的信息。
* **商户传入的预填**——您在创建订单时已提供且标记为
  用户可编辑的字段，会预填到收银台
  表单中，客户可在付款前查看并修改。

## 收银台有哪些页面状态？我需要用来做测试。

页面完全由订单状态驱动，所以在集成测试中
您实际观察的是订单的流转。以下是客户可能处于的
状态：

| 页面状态 | 客户看到什么 | 含义 |
| - | - | - |
| 支付方式选择 | 分组并排序的支付方式列表 | 订单尚未确定支付方式 |
| 支付表单 | 卡字段，或该方式要求的字段 | 已选择方式，需要输入 |
| 跳转中 | 带 **Pay** 和重新检查操作的短暂过渡页 | 客户需要跳出到支付方式 |
| 静默表单提交 | 处理中视图 | Waffo 正在隐藏框架中向支付方式提交；客户无需操作 |
| 指引 | 二维码、支付码或银行信息加说明 | 客户在别处付款，Waffo 等待 |
| 处理中 | 加载动画，有原因时附带原因 | 等待支付方式，或正在重试 |
| 成功 | 结果页，或立即重定向到您的 URL | 支付成功 |
| 失败 | 带错误码的失败页 | 支付失败且不可重试 |
| 链接过期 | "This link has expired" | 链接不再解析到有效的收银台 |

其中两个在测试时常让人意外。**静默表单提交**
看起来与处理中一模一样，这是有意的——框架被故意
隐藏。而**指引**和**处理中**是待定状态，
页面会轮询订单并自行推进，因此看似静止不动的页面
通常在正常工作。

订阅订单还可能在上述所有状态之前先进入一个模式选择步骤。

## 失败后，客户能在同一个收银台上换一种支付方式吗？

可以，前提是失败后订单仍可重试。页面回到
**支付方式选择**状态，并以错误信息显示失败
原因，客户可以选择另一种方式，在同一订单、
同一链接上付款——不需要新订单，不需要新链接。

对于最终性的失败——硬拒绝、订单过期、链接不再
解析——页面转到失败页，客户
需要您重新创建订单。

您无法从创建订单响应中区分这两者，因为
失败是否可重试是失败本身的属性。您的集成
不应假定第一条失败通知就是订单的终点；见
[支付结果](/docs/zh/support/payment-results-faq)。

## 我能完全跳过 Waffo 结果页，直接把客户送回我的网站吗？

可以，但不是通过订单参数。为您的账户启用该绕过后，
到达成功或失败的收银台会立即重定向到
您的 `successRedirectUrl` 或 `failedRedirectUrl`，完全不渲染 Waffo
结果页——客户永远不会看到中间的确认步骤。

两个条件必须同时成立，所以请为回退做好准备：

* 必须为您的账户启用该绕过。没有
  `cashierAppearance` 键，也没有创建订单字段可以设置——请联系 Waffo 支持团队
  开启。
* 订单上必须有对应的跳转 URL。没有它，
  无论是否绕过都会显示 Waffo 结果页。

适用于所有重定向的警告在这里同样适用，而且因为中间没有页面
更加严格：到达您的 URL 不是支付的证明。请在履约前
从您的通知或
`POST /api/v1/order/inquiry` 读取状态。

## 链接过期和链接被篡改是同一种错误吗？

不是，它们不同，而且客户能看出区别：

| 发生了什么 | 客户看到什么 |
| - | - |
| 链接可以解析，但其背后的收银台已不再有效——已支付，或会话已过 | 专门的 **"This link has expired"** 页面，说明支付已处理或会话已过期 |
| 链接完全无法读取——URL 被截断、标识符损坏或被编辑、从另一个订单复制来的 URL | 通用的 **"Something went wrong"** 页面 |

由此可推出两点。如果客户报告看到通用页面，请先怀疑
链接的完整性——最常见的是 URL 被改写、被消息
客户端截断，或经过了某个丢掉部分内容的环节；这与
在您的 App 和 WebView 之间改写 URL 是同一种失败模式。而如果
您在自认为新鲜的链接上看到过期页面，说明其背后的订单
已到达最终状态——请查询订单，而不是重新发放
链接。

## 3-D Secure 是在收银台完成的，还是又一次跳转？

两部分都会发生，只有一部分可见：

* **设备数据步骤**在客户仍在收银台、支付提交之前
  无感运行。客户看不到它，
  您也无需集成任何东西。
* **挑战**（在需要时）由发卡行呈现。
  这是跳出到发卡行认证页面的额外一步，
  之后客户回到收银台，流程继续。

是否发生挑战完全是发卡行对该笔
交易的决定，所以您无法向客户承诺单屏完成卡支付。如果
您用 Waffo 前端 SDK 自建卡页面，对挑战的呈现方式
有一定控制——见
[Google Pay 与 SDK 3DS 流程控制](/docs/zh/developer-docs/integration/elements/frontend-integration#3ds-flow-control)。
挑战超时后会发生什么，见
[支付超时与最终性](/docs/zh/support/payment-timeout-and-finality-faq#3ds-authentication-timed-out-can-i-retry-on-the-same-order)。


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