跳转到主要内容

订单过期、逾期付款与 Webhook 行为指南

作者:Emy Huang

在跨境区块链支付场景中,由于链上网络拥堵、Gas 费用波动或用户操作延迟,商户经常会遇到用户在订单过期后才完成付款(逾期付款),或者仅支付了部分金额(部分付款)等异常情况。为了保障商户的资金安全并提供灵活的业务处理能力,Infini 提供了完善的订单状态 (Order Status)异常标签 (Exception Tags) 以及实时 Webhook 通知机制。

本文档旨在详细阐述订单过期、逾期付款(Late Payment)及部分付款(Partial Payment)的核心业务逻辑,并指导商户如何正确解析 Webhook 数据以进行准确的账务处理和订单对账。

一、 订单状态与异常标签定义

在接入 Infini 支付网关时,商户需要清晰区分“订单状态”与“异常标签”这两个维度的概念。订单状态反映了订单在生命周期中的主流程阶段,而异常标签则是对主状态的补充,用于标记支付过程中的特殊或异常链上行为。

1. 订单状态 (Order Status)

订单状态是存储在数据库中的核心字段,用于记录订单的最终处理状态。商户可以通过查询订单接口(GET /v1/acquiring/order)或监听 Webhook 获取。

状态值 (Value)

状态名称 (Name)

业务描述 (Description)

pending

等待付款 (Awaiting payment)

订单已创建,等待用户发起链上支付。

processing

处理中 (Processing)

链上已检测到支付,但资金尚未完全确认(如收到部分资金或等待区块确认)。

paid

已支付 (Paid)

订单足额付款,资金已成功确认入账。

partial_paid

部分付款已过期 (Partial payment expired)

订单已过期,且用户仅支付了部分金额,未达到订单足额要求。

expired

过期未付款 (Expired without payment)

订单已超过有效期,且未收到任何付款。

2. 异常标签 (Exception Tags)

链上支付具有不可逆性和延迟性,因此可能会出现各种异常情况。Infini 提供了异常标签(exception_tags)来辅助商户进行客服处理、财务对账及风控判断。

重要原则:异常标签仅作为辅助标记,绝不影响订单的主状态,且一个订单可以同时存在多个不同的异常标签。

标签名称 (Tag Name)

业务描述 (Description)

late

逾期付款。用户在订单过期后才完成付款。这与 expired 状态(过期且未付款)有本质区别。

二、 核心场景深度解析

为了帮助商户更好地理解系统在异常支付情况下的表现,以下对“逾期付款”和“部分付款”两个核心场景的业务表现、数据变化及 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 字段来决定是否发货或提供服务。应当结合 statusexception_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 中的 status

exception_tags 是否包含 late

amount_confirmed 是否足额

推荐商户业务处理 (Recommended Action)

案例备注

paid

正常发货。订单在有效期内足额支付。

商户的 Infini 账户已收到订单全额资金,可直接为客户完成处理。

expired

逾期入账处理。资金已入账,但订单已过期。商户可根据自身业务选择:1. 自动补单发货(推荐);2. 原路退款并通知客户。

客户在订单过期后付款,资金仍已到账。商户自行决定是否补单,无需联系 Infini。

partial_paid

部分付款处理。订单已过期且未足额。商户应:1. 暂不发货;2. 由商户直接联系客户,要求补齐差额或协商退款。

商户仅收到部分资金,需商户主动联系终端客户处理,无需联系 Infini 客服。

expired

无须处理。订单正常过期,未收到任何资金。

订单超时且无任何入账记录,无需任何操作。

四、 常见问题解答

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 提供技术及支付基础设施服务,相关金融及支付服务由合作持牌机构提供,并受适用法律法规监管。具体服务内容及可用性可能因地区而异。本内容仅供参考,不构成任何形式的承诺或投资建议。本服务不面向中国大陆、美国及其他受限制地区提供。

这是否解答了您的问题?