支付功能流程设计
2017-07-17 18:24:26 41 举报
消息队列实现可靠支付的流程,自己设计的,不知道合理不合理,请大家指点。
作者其他创作
大纲/内容
否
如果向客户端返回成功之后,redis记录返回成功之前出现故障,会导致返回两次成功消息。但实际只支付了一次。钱虽然不会多扣,但这样总是感觉不太好。这个问题实在是想不出来方案了,请各位大神指教。
有
redis是否已确认支付队列
向客户端返回成功
是否添加成功
调用支付接口
更新订单状态
返回失败
无
支付消费者开始
redis确认支付队列
已同步
确认支付队列
查询订单是否已支付
未同步
支付消费者结束
redis查询记录订单号
是
回调地址接收结果
返回已支付消息等待异步通知
redis加入财务队列
本地有无支付凭证
放入财务队列
失败
通知其他业务
向支付接口确认成功
成功
redis记录已返回成功
redis是否已返回成功
是否支付成功
新增支付凭证
没做过支付,想学一下,所以自己设计了一个支付实现的流程,不知道合理不合理。请各位指正。使用消息队列配合redis,确保支付成功,不会重复支付,任何一个环节发生故障都不会影响最终结果。(有几个环节有点疑问,不知道有没有影响,见下方注释)同时其他子系统也做相应处理,此处为财务系统。实际内部财务系统处理流程可能会更复杂,也会用到队列机制,此处从简。若是内部需要多个子系统协同运行就要将财务队列改为多个队列。每一步都要做日志,就不画了。
本地订单状态是否已同步
等待消息重传
已支付
确认财务队列
发起支付
redis是否已加入财务队列
未支付
财务消费者结束
财务消费者开始
确认支付队列消息也可能重发这个应该没事
添加支付队列
0 条评论
下一页