订单,设计付款流程

我一直想总结这个,因为很重要,所以先简单记录一下,之后慢慢详细。

这里的支付处理,我想分成两部分。 一个是订单设计。 一部分是支付设计。

一、先说第一块,下单

1、在订单页面查询用户信息、商品信息、优惠券信息

2、前端用户下单,计算金额

3、将前端提交给后端

4、后端核对金额、商品、

二.支付设计

1、选择支付类型,开始支付

2、制作付款单

3、向第三方申请付款

4、向前端持有支付单和第三方支付号码开始微信或支付宝(Alipay )支付

5、用户输入支付密码

6、系统等待支付回调

7、系统轮询时间表查询支付结果

8、前台同时每3秒查询一次支付结果

9、6、7在获得支付成功的结果后,发送支付成功mq消息

10、对mq消息进行分布式锁定,进行乘幂等处理,最后将支付结果缓存在redis中,用于前端页面查询。

11、在mq消息中,订单取消或订单已支付时,通过邮件通知“取消订单支付成功”或“订单重复支付”

三.呼叫链接

1、web系统接受前端报销申请,制作付款单。 根据支付渠道策略,调用支付系统,将支付单带到支付系统。

2、支付系统调用第三方支付或微信支付宝(Alipay ),传递支付号码,返回第三方支付或微信支付宝(Alipay )支付号码。

3、web系统将支付系统返回的第三方支付号码传递给前端,前端调用jsapi提醒支付。

4、订单与支付的一对多关系可以保证用户消息支付后可以再次支付,并且可以在用户重复支付后保存每次支付的记录。

5、用户在前端支付成功后,在支付成功的页面上,每3秒调用web系统支付结果查询界面,查询支付状态。

6、调度系统执行每分钟计划支付订单支付结果查询任务。 这里,可以将调度、支付预定数据查询、支付成功处理分别放置在调度系统、辅助系统、主系统中。 这样,不仅可以分割系统的功能,还可以以高并发性减轻主系统的压力。 这是因为,如果运行计划在一分钟内支付的订单查询,数量大可能会增加主系统的压力,因此建议进行分割。

7、辅助系统查询待付订单时,调用支付系统查询订单的支付状态,订单支付成功时,将mq发送到主系统,执行订单支付成功的处理任务。

8、支付系统同时定义回叫界面,申请支付第三方或微信支付宝(Alipay )时,将回叫地址传递给第三方或微信支付宝(Alipay )。 成功支付后,第三方或微信支付宝(Alipay )会通知支付系统。 支付系统收到支付成功通知后,将mq发送到主系统,执行订单支付成功处理任务。

9、支付成功后,主系统判断订单是否支付成功。 付款成功时,判断是否重复付款,更新付款单据状态时,不更新订单状态,通过邮件通知; 付款成功时,判断订单是否已取消,更新付款单据状态时,不更新订单状态,通过邮件通知; 获取订单分布式锁定,执行业务处理; 在业务处理中,先更新订单状态(包括订单的支付通道),再更新支付单据状态,更新其他同步处理业务(如果有),然后发送业务处理mq处理异步业务(如果有),最后成功缓存订单的支付

10、前台在支付成功后,跳转到支付成功的等待页面,每3秒在后台查询支付结果。 这里的查询接口不查询数据库。 此外,在第九步中查询redis中缓存的状态。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注