c语言sscanf函数的用法是什么
306
2022-09-11
微服务从代码到k8s部署应有尽有系列(七、支付服务)
我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。
整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。
实战项目地址:github.com/Mikaelemmmm…
1、支付服务业务架构图
2、依赖关系
payment-api(支付api)
order-rpc(订单rpc)payment-rpc(支付rpc)usercenter(用户rpc)
payment-rpc(支付rpc)
mqueue-rpc(消息队列)
order-rpc(订单rpc)
mqueue-rpc(消息队列)travel-rpc
usercenter(用户rpc)
identity-rpc(授权认证rpc)
3.1 创建支付预处理订单
app/payment/cmd/api/desc/payment.api
app/payment/cmd/api/internal/logic/thirdPayment/thirdPaymentwxPayLogic.go
ThirdPaymentwxPay
app/payment/cmd/api/internal/logic/thirdPayment/thirdPaymentwxPayLogic.go
createWxPrePayOrder
我们来看看verifyAndUpdateState方法,我们要查询单号是否存在,比对回调回来的金额与创建时候金额是否一致更新流水单号即可。这里不用在校验签名了,前一步的sdk已经做了处理了
我们支付回调成功之后,会给用户发送一个入驻码,去了商家那里要展示这个码,商家通过后台核对码,其实就是美团的样子,我们去美团下单,美团会给你个码,用户拿着这个码去入住或者消费等。
ok,回调成功,我们会调用pyamentRpc去修改当前流水单状态成功
我们来看看paymentRpc中做了什么,
前面是校验,核心做了两件事情,第一是更新状态,第二向消息队列发送了一条消息,我们看看消息队列中对应的代码
前面order一节已经介绍了整个order-mq的运作机制,这里不再多说了,我们只说kq这里
当order-mq启动后,go-queue会监听kafka中的消息
我们再来看下具体实现 , 当前面支付回调成功添加到kafka中时候,order-mq中kafka会接受消息,也就是PaymentUpdateStatusMq.Consume会接收到kafka的消息,然后反序列化数据,传递给execService 执行具体业务,那execService中执行了什么呢?
app/order/cmd/mq/internal/mqs/kq/paymentUpdateStatus.go
那我们说到这里了就直接去看看message消息服务代码吧
message业务中只有一个mq,因为他不需要rpc、api,只需要定时从队列去消息发送消息,所以它运行逻辑跟order-mq一样的,同样适用serviceGroup管理
4、小结
到这里基本上整体项目服务逻辑都差不多说明完了,后续会介绍收集日志、监控、部署等
项目地址
github.com/zeromicro/g…
欢迎使用 go-zero 并 star 支持我们!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~