在跨境区块链支付场景中,由于链上网络拥堵、Gas 费用波动或用户操作延迟,商户经常会遇到用户在订单过期后才完成付款(逾期付款),或者仅支付了部分金额(部分付款)等异常情况。为了保障商户的资金安全并提供灵活的业务处理能力,Infini 提供了完善的订单状态 (Order Status)、异常标签 (Exception Tags) 以及实时 Webhook 通知机制。
本文档旨在详细阐述订单过期、逾期付款(Late Payment)及部分付款(Partial Payment)的核心业务逻辑,并指导商户如何正确解析 Webhook 数据以进行准确的账务处理和订单对账。
一、 订单状态与异常标签定义
在接入 Infini 支付网关时,商户需要清晰区分“订单状态”与“异常标签”这两个维度的概念。订单状态反映了订单在生命周期中的主流程阶段,而异常标签则是对主状态的补充,用于标记支付过程中的特殊或异常链上行为。
1. 订单状态 (Order Status)
订单状态是存储在数据库中的核心字段,用于记录订单的最终处理状态。商户可以通过查询订单接口(GET /v1/acquiring/order)或监听 Webhook 获取。
状态值 (Value) | 状态名称 (Name) | 业务描述 (Description) |
| 等待付款 (Awaiting payment) | 订单已创建,等待用户发起链上支付。 |
| 处理中 (Processing) | 链上已检测到支付,但资金尚未完全确认(如收到部分资金或等待区块确认)。 |
| 已支付 (Paid) | 订单足额付款,资金已成功确认入账。 |
| 部分付款已过期 (Partial payment expired) | 订单已过期,且用户仅支付了部分金额,未达到订单足额要求。 |
| 过期未付款 (Expired without payment) | 订单已超过有效期,且未收到任何付款。 |
2. 异常标签 (Exception Tags)
链上支付具有不可逆性和延迟性,因此可能会出现各种异常情况。Infini 提供了异常标签(exception_tags)来辅助商户进行客服处理、财务对账及风控判断。
重要原则:异常标签仅作为辅助标记,绝不影响订单的主状态,且一个订单可以同时存在多个不同的异常标签。
标签名称 (Tag Name) | 业务描述 (Description) |
| 逾期付款。用户在订单过期后才完成付款。这与 |
二、 核心场景深度解析
为了帮助商户更好地理解系统在异常支付情况下的表现,以下对“逾期付款”和“部分付款”两个核心场景的业务表现、数据变化及 Webhook 行为进行深度剖析。
1. 逾期付款 (Late Payment) 场景
逾期付款是指用户未能在订单规定的有效期内完成支付,但在订单过期后的一定宽限期内,资金仍到达了 Infini 的收款地址。
宽限期规则:Infini 默认提供 24 小时宽限期 (Grace Period)。如果用户在订单过期后的 24 小时内完成付款,资金仍会正常计入商户的账户余额,保障商户资金不丢失。
订单状态表现:虽然资金已成功入账,但由于订单在业务上已经处于过期状态,订单状态将保持为
expired,不会逆转为paid。异常标签追加:系统会自动为该订单追加
late异常标签。Webhook 行为:
系统会继续向商户推送 Webhook 通知。
Webhook 负载(Payload)中的
status字段依然保持为expired。amount_confirmed(已确认金额)字段会更新为实际入账的金额。exception_tags数组中会包含"late"标签。
2. 部分付款 (Partial Payment) 场景
部分付款是指用户发起了支付,但支付的金额低于订单要求的应付金额,且订单最终走向了过期。
订单状态表现:当订单到达有效期时,如果收到的金额大于零但小于应付金额,订单状态将变更为
partial_paid(部分付款已过期)。Webhook 行为:
系统会推送 Webhook 通知,其中
status字段变更为partial_paid。amount_confirmed字段会显示实际收到的部分金额。
三、 商户集成与对账最佳实践
为了避免由于链上异常支付导致的漏单、重复发货或财务对账不一致,建议商户在系统集成时遵循以下最佳实践:
1. 综合判断 Webhook 状态
商户在处理 Webhook 回调时,不能仅依赖 status 字段来决定是否发货或提供服务。应当结合 status、exception_tags 以及 amount_confirmed 进行综合业务逻辑判断:
// 逾期付款 (Late Payment) 的 Webhook 示例负载 { "event": "order.updated", "order_id": "ord_123456789", "amount": "100.00", "amount_confirmed": "100.00", "status": "expired", "exception_tags": ["late"], "timestamp": 1716710400 }
2. 商户系统推荐处理逻辑
商户服务器在接收到 Infini 的 Webhook 通知时,建议按照下表所示的逻辑处理业务
Webhook 中的 |
|
| 推荐商户业务处理 (Recommended Action) | 案例备注 |
| 否 | 是 | 正常发货。订单在有效期内足额支付。 | 商户的 Infini 账户已收到订单全额资金,可直接为客户完成处理。 |
| 是 | 是 | 逾期入账处理。资金已入账,但订单已过期。商户可根据自身业务选择:1. 自动补单发货(推荐);2. 原路退款并通知客户。 | 客户在订单过期后付款,资金仍已到账。商户自行决定是否补单,无需联系 Infini。 |
| 否 | 否 | 部分付款处理。订单已过期且未足额。商户应:1. 暂不发货;2. 由商户直接联系客户,要求补齐差额或协商退款。 | 商户仅收到部分资金,需商户主动联系终端客户处理,无需联系 Infini 客服。 |
| 否 | 否 | 无须处理。订单正常过期,未收到任何资金。 | 订单超时且无任何入账记录,无需任何操作。 |
四、 常见问题解答
Q1:为什么用户明明付了钱,订单状态却还是 expired(已过期)?
A:这是因为用户付款时订单已经超过了规定的有效期(例如超过了 15 或 30 分钟的付款窗口)。
为了保证交易的严谨性,系统不会逆转已过期的订单状态,但会在 24 小时宽限期内将资金安全地记入您的账户,并打上 late 标签。
Q2:对于逾期付款(Late Payment),Webhook 还会发送吗?
A:是的,Webhook 会正常发送。即使订单状态保持为 expired 不变,当资金确认入账时,系统依然会触发 Webhook。此时 Webhook 中的 amount_confirmed 会变更为实际入账金额,且 exception_tags 会包含 late。
Q3:我可以完全依赖 Webhook 的事件和状态来判断付款状态吗?还是最好遵循业务核心逻辑中的异常处理?
A:为了避免漏单,强烈建议商户结合异常标签(exception_tags)和确认金额(amount_confirmed)来处理业务。
如果您只依赖 status == "paid" 来触发发货,那么您将会漏掉所有“过期后成功付款(Late Payment)”的订单,从而导致客户投诉。
结合 status == "expired" 且 exception_tags 包含 "late" 的逻辑,可以实现自动补单发货,大幅减少人工客服的工作量。
五、联系我们
如果您对API集成相关功能有任何疑问或反馈,欢迎通过客服渠道与我们的支持团队联系。点击 Infini 系统右下角绿色小电话图标,选择【消息】与我们联系。
免责声明:Infini 提供技术及支付基础设施服务,相关金融及支付服务由合作持牌机构提供,并受适用法律法规监管。具体服务内容及可用性可能因地区而异。本内容仅供参考,不构成任何形式的承诺或投资建议。本服务不面向中国大陆、美国及其他受限制地区提供。
