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

# 预授权与外部结算

EMV Core 的 [ExternalSettlement](/reference/spark/transactions/externalsettlement) 实现将交易的授权和结算阶段分开。

EMV Core 负责管理与消费者和支付卡的初始交互，而最终的财务结算则由第三方服务器执行，该服务器会将结算请求发送到 Nayax 的服务器。

<Warning>
  **先决条件**

  要使此流程正常运行，Nayax 必须启用 [ExternalSettlement](/reference/spark/transactions/externalsettlement) 设置。
</Warning>

## 配置和设备行为

启用后，结算将由外部程序处理，而不是由主机应用程序处理：

* 结算交易的唯一方法是通过 [ExternalSettlement](/reference/spark/transactions/externalsettlement) 命令。
* 结算金额可以小于或等于授权金额。

这样，您可以根据自己的业务逻辑，灵活地从外部触发结算阶段。

| 项目 | 要求 |
| :- | :- |
| **结算窗口** | 默认情况下，交易必须在发起后 **60 小时**内完成结算。Nayax 技术支持可根据具体情况调整此时间窗口。 |
| **失效** | 在结算窗口期之后进行的结算尝试将会失败。 |
| **自动清理** | 根据卡组织规定，超过结算窗口期仍未结算的交易将自动取消（但不应依赖此规定）。 |
| **结算金额** | 最终结算价格不得超过授权金额。 |

## 管理未结算交易

当不提供产品或服务时，您必须主动管理交易，以保持良好的用户体验。

* **外部取消：** 如果无法进行结算，您必须立即发送**外部取消请求**。
* **对消费者的影响：** 如果交易在未取消或结算的情况下仍保持授权状态，消费者的资金将一直保留在其支付方式中，从而导致潜在的纠纷。

## 外部结算流程

该流程包括两个阶段：由 EMV Core 处理的支付授权，以及由您的第三方服务器触发的结算或取消。

### 付款授权

以下步骤涵盖了授权阶段，从轻触卡片到会话结束。

<Frame>
  <img src="https://mintcdn.com/nayax-44d6e37b/Z7ZM90DfoPrgE0IB/images/docs/pre-authorization-with-external-settlement/payment-authorization.png?fit=max&auto=format&n=Z7ZM90DfoPrgE0IB&q=85&s=1bf1fffff91c4e1d0e7c4ece637d562a" alt="支付授权阶段的序列图，从预授权调用到交易完成事件和服务交付。" width="2535" height="1366" data-path="images/docs/pre-authorization-with-external-settlement/payment-authorization.png" />
</Frame>

1. 主机使用 EMV Core SDK 调用 [`PreAuthorize`](/docs/zh/integrate-pos-device/emv-core/sdk-methods-functions/payment-1#preauthorize) 方法。
2. EMV Core 开始轮询读卡器。主机应用程序应提示消费者轻触银行卡。
3. 消费者将银行卡轻触读卡器。
4. EMV Core 读取卡片数据并向 Nayax 服务器发送授权请求。
5. Nayax 服务器与计费提供商进行授权。
6. 计费提供商向 Nayax 服务器发送授权响应。
7. Nayax 服务器将授权响应返回给 EMV Core。
8. EMV Core 向主机应用程序发送 `TransactionComplete` 事件。该事件包含交易 ID 和交易数据，其中 `NayaxTransactionId` 和 `SiteId` 位于 `authorizationDetails.Additional_Parameters` 字段中。

此时，主机应用程序必须保留 `NayaxTransactionId` 和 `SiteId`，以便日后在 External Settlement 或 External Cancel 请求中使用。

9. 主机应用程序继续提供服务（例如，启动电动汽车充电会话或分发产品）。

### 完成交易

服务交付后，第三方服务器将根据结果处理结算或取消事宜。

如果提供了该服务：

<Frame>
  <img src="https://mintcdn.com/nayax-44d6e37b/Z7ZM90DfoPrgE0IB/images/docs/pre-authorization-with-external-settlement/external-settlement.png?fit=max&auto=format&n=Z7ZM90DfoPrgE0IB&q=85&s=e1b749c8d32e1f8d0f1b8a3648ae513b" alt="外部结算流程的序列图，从 StartAuthentication 到 ExternalSettlement 响应" width="1328" height="1062" data-path="images/docs/pre-authorization-with-external-settlement/external-settlement.png" />
</Frame>

10. 第三方服务器通过调用 `StartAuthentication` 方法并附带加密密文来发起通信以进行身份验证。
11. Nayax 服务器解密密文并验证凭据以确认其真实性。
12. 第三方服务器发送 [ExternalSettlement](/reference/spark/transactions/externalsettlement) 请求。请求必须包含从 `TransactionComplete` 事件中获取的 `NayaxTransactionId` 和 `SiteId`，并且必须在结算窗口内发送。
13. Nayax 服务器与计费提供商进行结算。
14. Nayax 服务器向第三方服务器发送 [ExternalSettlement](/reference/spark/transactions/externalsettlement) 响应，确认结算结果。

如果未提供服务：

<Frame>
  <img src="https://mintcdn.com/nayax-44d6e37b/Z7ZM90DfoPrgE0IB/images/docs/pre-authorization-with-external-settlement/external-cancel.png?fit=max&auto=format&n=Z7ZM90DfoPrgE0IB&q=85&s=8d3d2cf791d6225a84afe26c5ac92b4d" alt="外部取消流程的时序图，从 StartAuthentication 到 ExternalCancel 响应" width="1328" height="1062" data-path="images/docs/pre-authorization-with-external-settlement/external-cancel.png" />
</Frame>

10. 第三方服务器通过调用 `StartAuthentication` 方法发起通信。
11. Nayax 服务器会验证凭据。
12. 第三方服务器发送 [ExternalCancel](/reference/spark/transactions/externalcancel) 请求。请求必须包含从 `TransactionComplete` 事件中获取的 `NayaxTransactionId` 和 `SiteId`，并且必须在结算窗口内发送。
13. Nayax 服务器会向计费提供商发起取消流程。
14. Nayax 服务器接收来自计费提供商的响应。
15. Nayax 服务器向第三方服务器发送 [ExternalCancel](/reference/spark/transactions/externalcancel) 响应。

## 下一步

<CardGroup cols={2}>
  <Card title="外部结算 API" icon="link" href="/reference/spark/transactions/externalsettlement">
    用于结算来自第三方服务器的授权交易的 ExternalSettlement 端点的 API 参考。
  </Card>

  <Card title="外部取消 API" icon="link" href="/reference/spark/transactions/externalcancel">
    用于在未提供服务时取消已授权交易的 ExternalCancel 端点的 API 参考。
  </Card>
</CardGroup>


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