关注一下又不会怀孕!
整个支付流程你熟悉吗
今天我们一起梳理下支付的整个流程,客户端和服务端如何配合完成一次支付请求,仅仅从整体架构上阐述,不会对支付系统内部进行拆解。
整体架构图如下:
跟着标注的序号,可以跟踪到一个支付请求是如何发起的,具体流程描述如下:
01发起支付请求
当客户端需要发起支付请求的时候,根据支付系统规定的参数,构造好一个新的支付请求队列;
02添加支付任务
开启一个支付任务,做的事情就是向KAFKA中添加一个新的支付任务,等待被消费;
03确认支付任务
一旦支付任务被成功创建,将会把接受支付请求的信息直接返回给客户端;
04消费支付任务
与此同时,支付系统对应的支付路由和支付网关消费对应的支付队列,完成支付任务;
05第三方支付请求
根据实际情况而定,如果平台涉及第三方支付渠道,则向第三方支付平台发起支付请求;
06返回支付结果
第三方支付平台返回支付的结果,根据具体的支付情况,可以是同步的也可以是异步的;
07缓存支付任务
一个支付任务完成(支付成功或者失败),可以将任务的执行结果(无论成功与否)缓存在 Redis 中,随时等待客户端的回访;
08查询支付结果
客户端在提交支付任务后,间隔一定时间后(建议3s),发起一个支付结果查询的请求;
09查询支付结果
支付系统根据客户端的查询请求向Redis 查找对应的支付结果;
10返回支付结果
Redis返回支付系统对应订单的支付结果;
11同步支付结果
异步将支付任务的执行结果同步到持久化数据库中,并删除 Redis 中缓存的任务执行结果。持久化到数据库主要是为后续的容错,重试,数据分析等提供落地的数据源;
12返回支付结果
支付系统将最终的支付结果返回给客户端。
领取专属 10元无门槛券
私享最新 技术干货