神领物流 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注解,来开启校验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178080.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

冷空气已发货,户外作业者请做好足部保暖

冷空气不间断 多地体验一夜入冬 据中国天气网消息 冷空气正在马不停蹄发货 三分之二国土需羽绒服护体 同时记得做好足部保暖。 在寒风凛冽的冬日中,对于常年在户外工作人员的群体来说,又到了一年里最难熬的时节。他们不畏严寒,在零度以下…

如何在jupyter 上安装Office365-REST-Python-Client

最近工作需要写python代码从sharepoint 上定期load 数据写入到SQL server 中, 首先需要安装 office365 的python库(python库名: Office365-REST-Python-Client)但是直接安装失败了。 !pip install Office365-REST-Python-Client…

基于引力搜索算法优化概率神经网络PNN的分类预测 - 附代码

基于引力搜索算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于引力搜索算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于引力搜索优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

Python代码运行速度提升技巧!Python远比你想象中的快~

文章目录 前言一、使用内置函数二、字符串连接 VS join()三、创建列表和字典的方式四、使用 f-Strings五、使用Comprehensions六、附录- Python中的内置函数总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项…

leetcode:1576. 替换所有的问号(python3解法)

难度:简单 给你一个仅包含小写英文字母和 ? 字符的字符串 s,请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外,不存…

天机学堂-1、项目搭建,微服务架构设计

1.学习背景 各位同学大家好,经过前面的学习我们已经掌握了《微服务架构》的核心技术栈。相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多,你的脑袋里也会有很多的问号: 微服务架构该如何拆分? 到了公司中我需要自…

Servlet 常见的API

文章目录 写在前面Smart Tomcat 插件Servlet 中常见的API1. HttpServletinit 方法destroy 方法service 方法Servlet 的生命周期 使用 postman 构造请求使用 ajax 构造请求2. HttpServletRequest3. 前端给后端传参1). GET, query string2). POST, form3). json 4. HttpServletRe…

竞赛选题 深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 …

低价寄快递寄件微信小程序 实际商用版 寄快递 低价寄快递小程序(源代码+截图)前后台源码

盈利模式 快递代下CPS就是用户通过线上的渠道(快递小程序),线上下单寄快递来赚取差价,例如你的成本价是5元,你在后台比例设置里面设置 首重利润是1元,续重0.5元,用户下1kg的单页面显示的就是6元…

Android修行手册 - 阴影效果的几种实现以及一些特别注意点

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC 👉关于作者 专…

Copliot:让你一秒变身网页达人的神奇助手

Copliot:一款能够帮助你快速理解网页内容的智能助手 你是否有过这样的经历,当你浏览网页时,遇到了一些你不太了解的内容,比如一些专业术语,一些复杂的概念,或者一些有趣的话题?你是否想要快速地…

RobotFramework+Eclispe环境安装篇

环境安装是学习任何一个新东西的第一步,这一步没走舒坦,那后面就没有心情走下去了。 引用名句:工欲善其事必先利其器!! Robotframework:一款 自动化测试框架。 Eclipse:一款编辑工具。可以编…