项目登录注册与商品支付页面:五脏俱全的个人项目,练手或写简历的不二之选

2024-07-10
来源:网络整理

以下是项目登录注册页面

以下为产品支付页面

虽然项目整体规模比较小,但是认证、支付、分布式等问题一应俱全,对于没有做过个人项目尤其是支付项目的朋友,拿来练练手或者写在简历上都是不错的选择。

现在我讲一下具体项目中的一些重要的业务点。

1. 网关认证

以前我们开发项目的时候,基本上都是在服务里写一个拦截器来进行鉴权,然后配置这个拦截器拦截所有的请求,最后通过拦截器的逻辑来进行鉴权。这种方式不是不可以,但是我觉得不太好,如果我们的项目有三个以上的微服务,那么这个拦截器的鉴权逻辑就会存在于每个微服务中,我觉得这是一个不好的地方。

那么我该怎么做呢?

是的,在网关服务中做鉴权。将鉴权的动作迁移过来,因为我个人的项目是通过网关转发请求的,所以所有的请求都会先进入网关,然后再进入各个具体的业务服务,那么问题就好解决了。我直接通过实现网关的接口来拦截所有的请求,通过实现接口来进行鉴权逻辑处理,就可以完成这个平台的鉴权、续费、限流等功能。

我们来看看下面的请求流程图

2. 支付逻辑

支付功能是这个项目最重要的部分,需要非常完善。因为我是个人开发者,所以无法接入需要营业执照的支付功能。最终我选择了支付宝的当面支付功能。

面对面支付有很多好处,第一不需要营业执照,第二对接非常简单,而且有支付宝封装好的SDK,所以对接过程中我并没有花太多精力去打通接口。

主要对接三个面对面支付的接口:

获取支付二维码接口 支付成功回调接口 订单状态查询接口

当然这三个接口的代码量也非常大,所以为了通用性,我又对它们进行了封装,方便项目中调用支付功能。一个支付功能的完整逻辑可以如下完成:

是不是很简单呢?需要代码的可以看文章末尾!

接下来我会为大家介绍一下这个项目中付费内容的整个业务流程。

1.用户获取付费产品详情

论坛接口支付怎么用_支付接口论坛_discuz支付接口

2.点击查看内容,出现两个结果。

3.当显示第二条结果时,如果用户点击支付,则进入后续流程

4.服务器向支付宝请求获取对应金额的支付二维码,并将返回的二维码与用户绑定,生成未支付订单,最终将待支付二维码返回给页面

5.页面显示二维码后,用户需要扫码支付(打开支付宝APP扫码支付)

6.用户支付成功之后,支付宝会自动回调我在第4步给支付宝的回调地址,回调接口的逻辑就是将订单状态改为已付款,以及进行一些后续的流程操作。

7、为了防止回调接口出现问题,还写了定时任务,定期检查订单表中未支付订单的状态,循环请求支付宝查询支付成功以及支付成功执行相应的回调逻辑。

支付业务流程图

3.手写分布式锁

分布式锁相信大家都不陌生,无非就是在中间件里放一个flag,如果存在就说明是锁住了,否则就是没锁,执行相关逻辑。

说出来大家都会,但是真正手写出来,并且做到高可用,是一个非常困难的问题,其中很关键的一点就是怎么解锁,怎么实现业务执行的100%解锁,那么我在项目中是怎么考虑的呢!

让我简单解释一下这个想法:

1.定义分布式锁注解,标记哪些方法需要分布式锁支持

2. 定义一个部分,逻辑是用分布式注释来增强方法

3.增强的逻辑为:锁定、生成续费任务、执行业务逻辑、解锁

4、启动另外一个延时线程池,每隔一定时间遍历续约任务集合,判断任务是否需要续约(这个逻辑判断有很多例子,比如:续约次数过多、业务已经完成、是否需要续约等等)

具体业务流程如图(我画的比较多)

当然为了让大家更容易理解,我还发布了相关视频:

以上就是升值平台项目的三大亮点,不管是写在简历上还是作为个人项目都是非常不错的选择。然后我也建了这个项目,地址如下:

如果你需要项目代码+视频+详细文档,我已经把这些都放在这个平台上了,直接拿来就好。

我是(三哥),下次见。

分享