收单系统核心业务流程全解析
收单系统核心业务流程全解析
收单系统作为支付体系的核心环节,承接商户与用户的支付请求,串联支付核心、风控、用户中心、商户中心等多个系统,覆盖交易创建、支付、退款、分账、差错处理等全生命周期。本文将从技术视角拆解收单系统的核心业务流程,梳理各环节的关键逻辑与周边系统的协作关系,并为每个核心章节补充时序图,帮助开发者快速理解收单系统的设计思路与执行链路。
一、前置:收单系统周边服务全景
收单系统的核心能力依赖多个周边服务的协同,各服务的核心定位及与收单系统的配合关系如下表所示:
| 服务名称 | 核心定位 | 与收单系统的配合关系 |
|---|---|---|
| 收单核心服务 | 收单流程总控,负责加锁/解锁、重入检查、结果处理、通知发送等核心逻辑 | 收单系统的核心调度层,所有核心流程(创建订单、支付、分账)均通过该服务完成关键操作 |
| 商户产品服务 | 管理商户签约的产品信息、费率、权限等 | 收单创建订单、退款时,校验商户产品合法性,获取产品相关规则(如手续费、分账规则) |
| 用户中心 | 管理用户信息、账户信息、签约信息(如免密代扣)、支付权限校验 | 2C场景获取用户信息,免密代扣获取签约信息,支付时校验用户支付密码/权限 |
| 收银台后台服务 | 管理收银台页面上的支付方式配置、支付工具规则 | 支付环节获取用户选择的支付方式,校验支付工具是否需要密码等规则 |
| 支付核心 | 实际执行支付、退款、分账的底层核心能力 | 收单系统封装业务逻辑后,调用该服务完成资金扣减、分账划拨等核心资金操作 |
| 额度服务 | 管理2B/2C额度规则,完成额度检查、额度占用/释放 | 支付前校验商户/用户额度,余额支付时占用额度,支付完成后释放(或失败后回滚) |
| 风控服务 | 交易/退款风控规则校验,返回通过/拒绝/可疑结果 | 支付、退款环节触发风控检查,收单系统根据风控结果处理流程(继续/终止/返回验证) |
| 营销服务 | 营销活动(满减、优惠券)管理,处理活动参与、券核销 | 支付环节参与满减活动、核销优惠券,退款环节退回活动资格 |
| 商户中心 | 接收订单、退款、分账等相关通知,同步商户侧订单状态 | 收单系统完成核心操作后,向商户中心推送状态通知,保障商户侧数据一致性 |
| 差错处理服务 | 订单异常场景的决策与处理,包括数据修正、重试、消息补发 | 未明查询无法解决的异常订单,通过该服务完成最终差错修正 |
二、核心业务流程拆解
2.1 典型收单流程
收单流程是系统最核心的链路,分为创建交易订单和订单支付两大阶段,涵盖参数校验、风控、资金扣减等关键环节。
2.1.1 创建交易订单
该阶段的核心目标是校验商户请求合法性,初始化订单数据,为后续支付做准备。
时序图:创建交易订单
关键步骤说明:
- 请求校验层:首先校验入参合法性(参数校验工具类)、商户订单签名,确保请求来源合法;
- 防重与锁控:通过收单核心服务加分布式锁,避免重复创建订单;
- 基础数据校验:
- 获取商户产品信息,校验商户签约权限;
- 多维度校验商户订单(bizType、商户信息、分账信息、子商户关联关系等),App场景额外校验商品实例;
- 校验是否重复支付(区分通用/App/内部/免密代扣等不同订单类型);
- 订单初始化:初始化交易订单及上下文,2C场景从用户中心获取用户信息,从收银台后台获取支付方式列表;
- 消息通知与数据保存:
- 向商户中心、风控系统发送异步通知,同时发送延时消息(检测订单是否超时关单);
- 完成订单数据持久化,构建并返回创建成功响应。
2.1.2 订单支付
该阶段是资金扣减的核心环节,包含多个分支逻辑(新卡支付、风控验证)。
时序图:订单支付
关键步骤说明:
- 前置校验与上下文恢复:加锁防重复支付,恢复订单上下文,校验订单是否超时;
- 支付方式与身份校验:获取用户选择的支付方式,若支付工具需要密码则校验用户支付权限;
- 特殊分支:新卡支付:
- 跳出点:获取新卡信息→调用通道预绑卡→更新数据→返回响应;
- 重入点:用户验证后,解析验证码→调用通道绑卡确认→完成绑卡;
- 业务规则处理:
- 计算支付手续费,校验支付金额与订单金额一致性;
- 参与营销活动(满减、核销优惠券);
- 额度检查(2B校验商户额度,2C校验用户额度);
- 风控检查:2C场景合并额度与风控结果(任一拒绝则终止,均通过则继续,否则返回可疑);
- 资金操作层:
- 支付前保存订单支付中状态,余额支付时占用用户额度;
- 调用支付核心完成资金扣减,释放分布式锁;
- 支付成功:发送未明查询队列(应对异步结果延迟),直接通知用户中心记录账单;
- 支付失败:标记订单失败,抛异常终止流程。
2.2 退款流程
退款流程根据发起方不同分为商户退款、商户Portal退款、运营台退款、系统退款四类,核心逻辑一致,仅部分规则有差异:
| 退款类型 | 核心差异点 |
|---|---|
| 商户退款 | 需校验服务商退款标志,支持带分账回收,触发风控检查 |
| 商户Portal退款 | 同商户退款,额外传入退款理由参数 |
| 运营台退款 | 无服务商模式、无分账回收、不触发风控检查 |
| 系统退款 | 系统自动触发(如支付超时),校验支付订单状态(避免重复退款),无风控检查 |
时序图:商户退款(核心退款流程)
关键步骤说明(以商户退款为例):
- 防重与基础校验:加分布式锁防重复退款,校验交易订单状态(需为支付成功)、用户状态;
- 分账回收处理:若退款带分账回收,由收单系统自行构建分账回收上下文,校验分账规则;
- 金额计算:
- 分账未完结:可退款金额=收款金额-已分账-在途分账-已退款;
- 其他场景:可退款金额=收款金额-已退款;
- 按规则计算退款手续费、返还服务商手续费;
- 风控与数据保存:触发退款风控检查(拒绝则标记失败,可疑则按配置处理),完成退款订单数据持久化;
- 核心操作:不带分账回收则直接调用支付核心退款,带分账回收则先完成分账回收再退款;
- 通知环节:向归属到周边服务的商户中心推送退款订单创建通知,保障商户侧数据同步。
2.3 分账与分账回收流程
2.3.1 分账流程
分账是将收款金额按规则划拨给子商户/服务商的流程,由外部商户发起分账请求。
时序图:分账流程
关键步骤说明:
- 外部商户发起分账请求,收单系统加锁防重复分账并完成重入检查;
- 收单系统自行初始化分账上下文,校验分账规则合法性;
- 完成分账订单数据持久化,调用支付核心完成资金划拨;
- 处理受理结果(失败则返回外部商户,成功则向归属周边服务的商户中心推送通知后返回成功)。
2.3.2 分账回收流程
退款带分账回收时触发该流程,相关逻辑全部合入收单系统处理。
时序图:分账回收流程
关键步骤说明:
- 收单系统触发分账回收流程,先加锁防重复回收并完成重入检查;
- 收单系统自行初始化回收上下文,校验分账回收规则合法性;
- 完成回收前数据持久化,调用支付核心完成分账资金回收;
- 回收成功则更新状态并继续执行内部退款逻辑,失败则标记状态并终止退款逻辑。
2.4 结果处理与外部系统通知
支付/退款/分账完成后,系统需处理核心返回结果,并通知外部系统,保证数据一致性。
时序图:结果处理与外部系统通知
关键步骤说明:
- 结果处理:
- 收单结果:恢复上下文→校验超时→按支付工具处理→完成数据持久化→判断是否需要系统退款→发送内部消息;
- 退款/系统退款结果:恢复上下文→完成数据持久化→退回活动资格→发送内部消息;
- 外部通知:
- 更新订单状态到分布式缓存;
- 直接向用户中心、归属周边服务的营销中心/商户中心/风控系统、web收银台推送结果,覆盖全链路消息同步。
2.5 未明查询流程
针对支付/退款/分账结果未明确的订单,系统通过阶梯式查询机制解决。
时序图:未明查询流程
关键步骤说明:
- 判断是否到达最后查询阶梯,未到达则加锁后查询支付核心;
- 根据支付核心返回结果处理:
- 查无此单:收单订单(免密代扣重试,其他入下一级;最大阶梯则关单/标记失败);退款/分账订单(最大阶梯则标记超时/失败,否则重试);
- 有最终结果:调用结果处理流程完成订单终态;
- 无最终结果:收单订单(最大阶梯则超时关单,否则入下一级);退款/分账订单(最大阶梯则等待内部消息,否则入下一级)。
2.6 差错处理流程
未明查询无法解决的异常订单,通过差错处理流程完成最终修正。
时序图:差错处理流程
关键步骤说明:
- 校验订单是否已决策过,避免重复处理;
- 根据订单类型(交易/退款/系统退款/通道/核心)选择处理策略;
- 校验订单所在表(临时表/base表):
- 临时表:交易/退款订单直接处理数据+发送内部消息;系统退款订单若失败且需重试则重试,否则发内部消息;通道/核心订单走后处理;
- base表:交易/退款订单处理数据+发内部消息;系统退款订单按重试规则处理;通道/核心订单按交易类型处理数据+发内部消息。
三、特殊业务场景解析
3.1 POD收单
POD收单是带分账指令的特殊收单场景。
时序图:POD收单流程
关键规则说明:
- 收单时必须携带分账指令,且podFlag=1;
- 收单完成后记录分账规则到交易表,暂不执行分账;
- 收到分账指令后,校验POD表状态(成功/处理中则返回,否则继续);
- 读取交易表分账规则→记录POD表为处理中→发起分账;
- 分账同步失败则更新POD表为失败,异步结果返回后更新POD表最终状态。
3.2 免密代扣
免密代扣是系统自动扣款的场景,分为创建订单、代扣流程、查询流程三部分,其中代扣和查询流程均由外部商户发起请求。
3.2.1 创建免密代扣订单
时序图:创建免密代扣订单
关键差异说明:
- 从用户中心获取签约信息,从签约信息中提取用户ID;
- 支付方式列表需携带签约信息;
- 订单标记为免密代扣类型;
- 创建完成后生成代扣任务,由定时任务系统触发自动扣款。
3.2.2 代扣流程
时序图:免密代扣流程
关键步骤说明:
- 外部商户发起免密代扣请求,收单系统触发定时任务执行代扣;
- 校验支付方式数量,超过阈值则终止;
- 加锁后校验订单状态(非终态则继续);
- 构建支付上下文→参与营销活动→额度/风控检查;
- 额度/风控检查失败:有下一支付方式则发起下一级代扣,否则订单失败;
- 支付失败:同上轮询支付方式,支付成功则发起查询任务。
3.2.3 查询流程
时序图:免密代扣查询流程
关键步骤说明:
- 外部商户发起免密代扣查询请求,收单系统读取交易单状态;
- 交易单已终态则直接返回最终状态;
- 支付失败则轮询下一支付方式并返回重试结果;
- 支付中状态:
- 无支付订单记录则轮询下一支付方式并返回结果;
- 有支付订单记录则判断是否为组合支付/超2小时,组合支付/未超2小时则放入下一级队列,否则轮询下一支付方式并返回结果;
- 其他非终态则放入下一级查询队列并返回待查询状态。
四、总结
收单系统的核心设计围绕**“防重、风控、数据一致性、异常容错”** 四大原则展开:
- 防重:全流程分布式锁控,避免重复订单/支付/退款/分账;
- 风控:支付/退款环节嵌入风控校验,保障交易安全;
- 数据一致性:通过直接向外部系统发送异步通知、完成自身数据持久化,保证跨系统数据同步;
- 异常容错:未明查询+差错处理,解决订单异常场景,保证资金安全。
理解收单系统的核心流程,不仅能快速定位线上问题,也能为支付系统的扩展(如新增支付方式、营销活动)提供基础支撑。后续可进一步深入研究分布式锁的设计、内部消息的可靠性保障、风控规则的动态配置等技术细节,完善对收单系统的认知。
