自助设备一站式解决方案

自助设备退款与中途停止对接:状态机与检查清单

发布日期:2026-10-12
本文要点自助设备退款与中途停止对接的核心在于状态机设计,避免订单状态与设备物理状态不一致。详解可撤销窗口、状态字段、工程要点及上线检查清单,确保支付流程稳定可靠。

退款与中途停止的对接核心,是在支付确认与设备动作之间引入可撤销状态,避免订单状态与设备物理状态不一致。以下拆解该状态机的设计要点与上线检查项。

背景与定位

自助设备支付流程中,退款与中途停止最容易出现订单已完成支付但设备未动作,或设备已动作但未及时停止两类不一致。传统处理依赖运营方手动核对平台流水与设备日志,沟通成本高且无法实时拦截异常订单。因此,支付模块的对接方案需要内置可撤销状态,而不是将退款作为独立补丁叠加在支付接口之外。

核心概念

退款与中途停止的实现基础是状态机。支付模块在收到支付成功回调后,不立即闭合继电器,而是进入可撤销窗口(通常为数百毫秒至数秒),该窗口内收到退款回调则丢弃动作指令;超过窗口则按预设逻辑执行。中途停止则通过平台下发或本地IO触发,模块记录停止前的继电器状态位图与已计时长,用于结算。常见状态字段及含义如下:

状态触发条件动作终态待支付用户扫码创建订单无否已支付支付成功回调启动可撤销定时器否已撤销定时器内收到退款通知不闭合继电器,上报退款成功是运行中定时器超时或收到确认闭合对应继电器,开始计时否停止请求用户中途结束或平台下发断开继电器,读取IO状态否已结算完成时长与状态上报生成结算单是

该状态机是通用支付盒子的基础能力之一,可作为多路继电器控制的位图输入。

流程/时序

退款流程的时序如下:

[用户] --扫码--> [支付模块]
[支付模块] --创建订单--> [平台]
[平台] --支付成功回调--> [支付模块]
[支付模块] --启动可撤销窗口--> [定时器]
[定时器] --超时--> [支付模块]
[支付模块] --闭合继电器--> [设备]

中途停止流程类似:

[用户] --结束请求--> [平台]
[平台] --停止指令--> [支付模块]
[支付模块] --断开继电器--> [设备]
[支付模块] --读取IO快照--> [设备]
[支付模块] --结算上报--> [平台]

可撤销窗口的时长需要与支付平台的撤销能力匹配,以运营机构当前公告为准。窗口后若仍收到退款通知,则走逆向流程:断开继电器、记录已用时长、按比例结算。

工程要点

  • 退款回调与支付成功回调可能乱序到达,代码需用订单号做幂等合并,重复通知只处理一次。

  • 继电器闭合前的可撤销窗口要短于支付平台允许的退款时限,否则会出现无法撤单但设备未启动的中间态。

  • 中途停止必须与计时器联动:收到停止请求时,先读取当前计时值再断开继电器,避免先断电导致计时丢失。

  • 网络中断时,本地缓存停止请求与继电器状态,恢复后补传结算,防止重复扣费。

上线检查清单

  • 模拟支付成功后再退款,验证继电器不动作且退款上报成功。

  • 模拟可撤销窗口超时后退款,验证设备已运行并进入逆向结算。

  • 模拟中途停止后网络立即断开,恢复后确认订单状态与平台一致。

  • 逐路验证继电器断开与IO回读的时序,杜绝停止后设备延迟断电。

结语

退款与中途停止不是支付模块的附加功能,而是状态机必须覆盖的异常分支。实现要点在于支付成功回调与继电器动作之间增加可撤销窗口,并用定时器与IO状态定义终态。想进一步了解可以看账号主页简介。

Q: 支付成功回调后多久内可以发起退款? A: 通常以支付平台允许的撤销窗口为准,需在设备动作前完成撤销;若继电器已闭合,则需要进入逆向流程(断开并上报)。具体时长以运营机构当前公告为准。
Q: 中途停止会丢失订单吗? A: 不会,完整流程应包含停止请求、状态快照、结算上报三个步骤,设备断网时本地缓存,恢复后补传。
Q: 对接方如何调试退款状态机? A: 建议使用抓包工具观察回调时序,用测试订单覆盖超时、重复通知、设备无响应三类异常。

自助设备退款与中途停止对接:状态机与检查清单

常见问题

Q:可撤销窗口时长是多少?
A:可撤销窗口通常为数百毫秒至数秒,需与支付平台撤销能力匹配,且要短于支付平台允许的退款时限,具体时长以运营机构当前公告为准。

Q:退款回调与支付回调乱序怎么办?
A:代码需用订单号做幂等合并,重复通知只处理一次,确保无论回调顺序如何,系统都能正确处理退款与支付状态。

Q:停止请求时如何保证计时准确?
A:收到停止请求时,先读取当前计时值再断开继电器,避免先断电导致计时丢失,确保结算数据准确。

Q:网络中断时中途停止如何处理?
A:本地缓存停止请求与继电器状态,恢复网络后补传结算信息,防止重复扣费,保证订单状态与平台一致。

Q:如何验证退款状态机工作正常?
A:模拟支付成功后退款,验证继电器不动作且退款上报成功;模拟可撤销窗口超时后退款,验证设备已运行并进入逆向结算。