普通收单流程梳理
2025/12/2大约 9 分钟
普通收单流程个人梳理
本文对普通收单的流程进行了详细的梳理,涵盖从创建订单到查询订单的各个主要环节,旨在为开发人员和技术团队提供清晰的操作指南和流程参考。
1. 总流程
在普通收单过程中,从创建订单到查询订单,主要包含以下六个流程:
- 创建订单
- 支付订单
- 支付结果处理
- 交易后处理
- 订单查询
- 未明交易处理
这些流程相互衔接,共同构成了完整的收单业务逻辑。具体流程如下图所示:
状态扭转图
2. 创建订单
创建订单是整个收单流程的起点,主要包括以下几个步骤:
- 构建标准请求:对商户信息进行校验。
- 对商户订单加锁:根据商户号和商户订单号生成可重入锁,避免并发冲突。
- 获取商户产品:优先从DCS缓存中查询商户产品信息,若不存在则查询数据库,最后通过调用商户中心接口获取。
- 检查商户订单:验证bizType、商户信息、商户订单、分账信息及商户限制信息等。
- 获取用户信息:通过调用用户中心接口获取用户相关信息。
- 获取可用的支付方式:利用用户信息作为参数,调用收银台接口获取可用的支付方式。
- 保存数据:将商户订单摘要插入SDS,同时将交易订单临时信息插入数据库。
- 发送通知:分别向商户中心、风控系统及延时通知服务发送通知,确保各环节及时收到订单创建信息。
3. 支付订单
支付订单是收单流程的核心环节,主要包括以下几个步骤:
- 构建标准请求:对支付请求进行标准化处理。
- 对交易订单加锁:根据系统交易订单号生成重复支付锁,防止重复支付。
- 恢复交易预检查上下文:加载之前保存的交易预检查上下文信息。
- 防刷验证:进行防刷验证,确保交易安全。
- 收单预检查:对订单进行预检查,包括订单状态、金额等。
- 检查订单是否过期:验证订单是否已过期。
- 获取现金单上下文:获取与现金单相关的上下文信息。
- 新卡支付更新支付方式:如果选择新卡支付,则更新支付方式。
- 保存数据:更新交易订单临时表状态,插入支付核心表、支付通道订单临时表等。
- 额度占用:占用相应的支付额度。
- 调用支付核心支付:调用支付核心完成支付操作。
- 发送未明交易延时通知:发送未明交易延时通知至相应topic。
4. 支付结果处理
支付结果处理是确保支付流程顺利完成的关键步骤,主要包括以下几个步骤:
- 监听支付核心交易信息:通过订阅支付核心交易信息topic,实时获取支付结果。
- 保存数据:将支付结果保存到支付订单表、通道订单表、交易订单表等,并删除中间表内容。
- 参与营销:根据支付结果,参与返现或返券活动,提升用户满意度。
- 交易订单状态存入DCS:更新DCS中交易订单的状态记录。
- DMQ结果分发:通过DMQ将支付结果分发至各个相关系统。
5. 交易后处理
交易后处理主要包括以下几个步骤:
- 监听本地topic:通过订阅本地topic,接收交易结果通知。
- DCS插入通道订单状态:将通道订单状态存入DCS。
- DCS插入支付核心订单状态:将支付核心订单状态存入DCS。
- 发送交易结果到用户:将交易结果通知用户。
- 发送交易结果到商户中心:将交易结果通知商户中心。
- 发送交易结果到Web收银台:将交易结果通知Web收银台。
- 发送交易结果到风控:将交易结果通知风控系统。
- 发送交易结果到WM:将交易结果通知WM系统。
6. 订单查询
订单查询主要包括以下几个步骤:
- 查询DCS:根据custId和sysTransOrderNo查询DCS中的订单信息。
- 查询数据库:若DCS中无相关信息,则查询数据库中的交易订单临时表和交易订单表。
7. 未明交易处理
未明交易处理主要包括以下几个步骤:
- 监听topic:通过订阅未明交易结果通知topic,接收未明交易信息。
- 获取锁:根据系统交易订单号生成重复支付锁。
- 关单:将交易订单状态改为TRX_CLOSED,并插入交易base表和扩展表,删除临时表内容。
贡献者
YangXi
