神领物流 day03-支付微服务 扫码支付业务功能详解

课程安排

  • 支付微服务的需求
  • 了解项目中的代码规范
  • 阅读渠道管理相关的代码
  • 理解分布式锁的应用
  • 阅读支付宝扫码支付的代码
  • 阅读微信支付扫码支付的代码
  • xxl-job的入门学习
  • 读懂同步支付状态的两种方式

1、背景说明

目前支付微服务完成了支付宝和微信的对接,主要实现的功能有支付渠道的维护、扫码支付(微信称Native支付,支付宝称当面付)、退款等功能。

其中扫码支付功能是快递员上门取件时,会亮出二维码,用户可以通过支付宝或微信进行扫描后,对运费的支付。

2、需求分析

2.1、整体流程

流程说明: 本资源分享自 www.cx1314.cn  欢迎访问下载该项目

  • 用户下单成功后,系统会为其分配快递员
  • 快递员根据取件任务进行上门取件,与用户确认物品信息、重量、体积、运费等内容,确认无误后,取件成功
  • 快递员会询问用户,是支付宝还是微信付款,根据用户的选择,展现支付二维码
  • 用户使用手机,打开支付宝或微信进行扫描操作,用户进行付款操作,最终会有支付成功或失败情况
  • 后续的逻辑暂时不考虑,支付微服务只考虑支付部分的逻辑即可

2.2、业务功能

2.3、产品需求

【付款方式】判断寄付/到付交互

  1. 寄付→点击【取件】进入取件成功页面,点击左上方返回按钮返回待取件任务列表;点击【去收款】按钮进入扫码支付页面,此时用户有双向选择:
    1. 在用户端【待支付】页面进行支付
    2. 在快递员端【扫码支付】页面进行支付,可选择微信或支付宝进行支付,分别生成不同的收款码,用户进行扫码支付;
    3. 点击页面左上方返回按钮页面返回至上一页;
    4. 两种方式支付成功,均显示支付成功页面,点击【知道了】,返回任务列表首页
  1. 到付→点击【取件】按钮,进入取件成功页面,点击返回主页按钮进入任务列表主页

2.4、分析

本资源分享自 www.cx1314.cn  欢迎访问下载该项目

支付业务与其他业务相比,相对独立,所以比较适合将支付业务划分为一个微服务,而支付业务并不关系物流业务中运输、取派件等业务,只关心付款金额、付款平台、所支付的订单等。

支付微服务在整个系统架构中的业务时序图:

2.5、开发环境

2.5.1、微服务工程规范

在神领物流项目中,微服务代码是独立的工程(非聚合项目结构),这样更适合多团队间的协作,在部署方面更加的独立方便。

1个微服务需要创建3个工程,分别是:

  • sl-express-ms-xxx-api(定义Feign接口)
  • sl-express-ms-xxx-domain(定义DTO、枚举对象)
  • sl-express-ms-xxx-service(微服务的实现)

它们之间的依赖关系如下:

2.5.2、拉取代码

需要拉取的工程有3个:

工程名

git地

在idea中拉取开发会有2种方式:

  • 每一个工程打开一个idea窗口
  • 将多个工程合并到一个idea窗口开发(非maven聚合),每一个工程作为一个module进行开发

在这里我们建议使用第2中方法,这样在开发过程中可以减少多窗口间的切换。

拉取代码完成后,需要添加到项目的modules中:

git分支说明:

在学习阶段我们统一使用master分支。

下面展现了支付微服务的工程结构:

更多最新IT精品,微服务项目实战地址:   www.cx1314.cn

├─sl-express-ms-trade-api               支付Feign接口
├─sl-express-ms-trade-domain            接口DTO实体
└─sl-express-ms-trade-service           支付具体实现
    ├─com.sl.ms.trade.config				配置包,二维码、Redisson、xxl-job
	├─com.sl.ms.trade.constant				常量类包
	├─com.sl.ms.trade.controller			web控制器包
	├─com.sl.ms.trade.entity				数据库实体包
	├─com.sl.ms.trade.enums					枚举包
	├─com.sl.ms.trade.handler				三方平台的对接实现(支付宝、微信)
	├─com.sl.ms.trade.job					定时任务,扫描支付状态
	├─com.sl.ms.trade.mapper				mybatis接口
	├─com.sl.ms.trade.service				服务包
	├─com.sl.ms.trade.util					工具包

2.5.3、代码规范

2.5.3.1、DTO对象

在神领物流项目中,微服务之间的对象传输都使用DTO,命名规范:XxxxDTO(DTO必须大写),并且将DTO类放置到domain工程中,如下:

DTO类中统一使用lombok的@Data注解进行标注。

2.5.3.2、数据校验

微服务之间的接口调用,对于传输的数据是需要做校验的,一般校验方式有2种:

  • 方式一:采用hibernate-validator注解方式校验,如下:

  • 方式二:在程序中通过if()进行判断,如下:

我们采用哪一种方式呢?实际上在项目中,我们采用二者结合的方式进行校验。

对于第一种方式的补充说明:

  • 在Controller中需要增加@Validated注解,来开启校验
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
神领物流是一家专业的物流服务提供商,致力于为客户提供高品质、高效率的物流解决方案。神领物流以客户需求为导向,通过优化供应链管理、提升物流运作效率,为客户创造更大的价值。 首先,神领物流拥有一支经验丰富、专业技能过硬的团队。他们熟悉物流行业的各个环节,具备丰富的仓储、配送、运输等方面的经验,并且能够根据客户的需求提供个性化的解决方案。无论是大件物品的运输,还是小件货品的分拣配送,神领物流都能够高效地完成任务。 其次,神领物流拥有先进的仓储和物流设施。他们拥有多个仓库和配送中心,这些设施配备了最新的仓储管理系统和智能设备,能够实现对货品的精确管理和快速处理。同时,他们还采用高效的配送路线和运输方式,以确保货物能够准时到达目的地。 此外,神领物流注重信息化建设和技术创新。他们通过建立信息化平台,实现对物流运作的全程追踪和监控,及时掌握货物的位置和状态。并且,他们还不断引进和应用新的物流技术,如物联网、人工智能等,以提升物流运作的效率和准确性。 总而言之,神领物流凭借着专业的团队、先进的设备和信息化的管理手段,能够为客户提供高品质、高效率的物流服务。无论是个人寄送还是企业供应链管理,神领物流都能够满足客户的需求,并且为客户创造更多的价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值