功能
2023-02-22 17:30:49 0 举报
功能分享
作者其他创作
大纲/内容
权重配置
商户
基础直接响应调用方失败(异步线程查询结果回填流水状态),调用方通过第三方唯一流水号查询结果
查询退款操作存在
非分账请求转到SAAS服务
扫码预授权退款是否成功
记录扫码预授权完成的流水,状态记录为处理中
退款是否成功
基础组分账服务
基础组
业务状态码成功
写入
流水表有type,state,create_time字段type类型取值:预授权完成,预授权撤销,预授权退款state取值:处理中,成功,失败create_time用于定时任务补偿处理一小时前状态处理中的记录
发起预授权退款操作
查询订单是否有余额
方案二:01)nginx根据权重配置/api/share-merchant映射到新老服务。02)非分账请求,基础组分账入口服务转发到SAAS服务。03)基础组分账入口服务添加代理商灰度转发迁移异常回滚方案:一、基础组分账入口服务通过”开关“把请求流量转发到SAAS服务二、运维回滚nginx的配置
结束
01)基础组重试3次调用退款结果查询接口,都失败。后续定时任务补偿并更新流水状态。(补告警信息)02)若查询退款单号不存在,把上次流水状态改成失败。重试发起调退款接口,重试3次
响应码失败
基础直接响应调用方失败,然后异步线程查询操作结果回填流水状态
网络失败/响应超时/接口调用异常
分账请求
自动生成退款流水号,这个生成规则用uuid还是long?
有余额
发起扫码预授权完成操作
方案五:SAAS服务按代理商接入基础组分账入口服务
联合收单外部代理商
把撤销流水记录状态设置为失败
流水记录状态更新为失败
SAAS组服务
业务状态码不成功
响应码成功
结算组
SAAS外部代理商
最终目标:外部代理商的分账请求全部接入基础组分账入口服务
无余额
交易组
记录一笔退款的流水,状态设置为处理中
调的是退款接口
参数必传第三方的唯一流水号,如果响应超时或者请求异常,业务线先用唯一流水号查询结果
nginx服务
01)权限表是否能共用02)MQ队列名称定义03)退款接口:请求来源区分()04)黑灰名单表05)退款接口:预授权完成超时的退款,预授权完成后的退款(要传多一个字段区分,是从2026账本还是2031账本退款)06)
异步查询是否有余额,进行退款,不阻塞预授权完成操作
重新发起退款操作(重试3次)
把退款流水状态设置为失败,结束
查询扫码预授权订单是否存在
无
已配置批次分账接口,代理商编号灰度
扫码预授权订单
代理商编号灰度
退款操作不存在(可能退款操作的网络有问题,交易程序在重启)
不存在
基础组分账入口服务
交易组通过MQ消息通知基础组记录“扫码预授权订单”的流水(基础组流水表会存在少流水记录的情况,成功失败订单都同步MQ)基础组定后期考虑可以在运营平台导入excel订单号
退款操作是否存在
外部代理商
另起异步线程三次查询预授权完成操作的结果,并更新流水状态,如果都失败,后续定时任务补偿并更新流水状态。
存在
业务状态码失败
每个分账接口按权重单独配置
发起预授权完成操作
01)操作结果是成功,把流水状态改成成功02)操作结果是失败,把流水状态改成失败
扫码预授权操作是否成功
循环处理订单。添加扫码预授权退款的流水记录,状态记录为处理中
调退款接口
提示接口调用失败,业务线调查询接口查询操作结果
网络失败/响应超时
第一阶段:01)nginx给每个迁移的分账接口按权重单独配置映射(陆续修改权重比例)02)基础组分账入口服务把流量全转到SAAS分账服务迁移异常回滚方案:一、基础组分账入口服务通过”开关“把所有请求流量转发到SAAS服务二、运维回滚nginx的配置
异步发起查询该订单是否有余额
定时任务查90天还没结束的预授权订单
发MQ消息
方案一:01)nginx根据权重配置/api/share-merchant映射到新老服务02)非分账请求,基础组分账入口服务转发回SAAS服务。迁移异常回滚方案:一、基础组分账入口服务通过”开关“把请求流量转发到SAAS服务二、运维回滚nginx的配置
把流水状态改成成功,结束
成功,结束
提示接口调用失败,结束
重试三次发起订单余额查询,有余额就发起退款操作
流水记录状态更新为成功
添加扫码预授权退款的流水记录,状态记录为处理中
重试三次发起订单余额查询
读MQ消息
发起扫码预授权撤销操作
另起异步线程三次查询预授权撤销操作的结果,并更新流水状态,如果都失败,后续定时任务补偿并更新流水状态。
方案三:01)nginx根据权重配置/api/share-merchant映射到新老服务。02)非分账请求,基础组分账入口服务转发到SAAS服务。03)基础组分账入口服务添加代理商灰度转发。04)接口分批灰度(申请模块批次,汇总分账批次,订单分账批次)迁移异常回滚方案:一、基础组分账入口服务通过”开关“把请求流量转发到SAAS服务二、运维回滚nginx的配置
另起异步线程三次查询预授权退款操作的结果,并更新流水状态,如果都失败,后续定时任务补偿并更新流水状态。
把撤销流水记录状态设置为成功
请求转发回SAAS组服务
90天还没完成的预授权订单
01)基础组重试3次调用退款结果查询接口,都失败。后续定时任务补偿并更新流水状态。02)查询该单号不存在,把上次流水状态改成失败。重试发起调退款接口,重试3次都失败,后续人工处理
定时任务90天退款(天数可配置)
通过退款流水号查询退款结果
添加扫码预授权撤销的流水记录,状态记录为处理中(全额退款)
发起扫码预完成授权退款操作
DB
发起预授权撤销操作
有
非当前批次的分账接口转到SAAS服务
响应\"状态未知,请调查询接口\",业务线调查询接口查询操作结果
消息队列
把退款流水记录状态设置为成功,结束
数据库表的设计 A)一张 扫码预授权的权限配置表 (是否共用) B)一张 扫码预授权流水表流水存单表的理由:生产环境一个星期的预授权订单数量大概7000单,一笔订单大概两三笔流水,一个月理论不超过 20 万笔流水,后期量大再分百表和存ES基础组的流水表:主要用于页面流水展示和查询,以及预授权操作失败后的重试和记录
把流水状态改成失败,结束(企业微信告警)
把退款流水记录状态设置为成功
现状:外部代理商直接访问SAAS组服务,后续其他业务线代理商直接接基础组分账服务
把退款流水状态设置为失败
0 条评论
下一页