创建支付订单实现|学习笔记

简介: 快速学习创建支付订单实现

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)创建支付订单实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12435


创建支付订单实现


把整个代码实现之前的准备的工作都已经做好了,接下来,就把这三部进行一个实现。

第一步,就是要去判断订单的一个支付状态,可以表格中订单编号和支付编号中判断。如果一个订单的状态已经是已支付,那么就可以直接往下走。

image.png

首先是要去把这个 mapper 全拿过来,这个mapper 就是trade came APP,从资料当中 mybatis 逆向工程当中呢,去找到 mapper,把这个 mapper 拿过来,以及当前的配置文件、设置文件也拿过来,然后就可以直接注入。

代码如下:

@Component

@Service(interfaceClass=IPayServiceclass)

public class PayServiceImpl implements IPayService{

@Autowired

private TradePayMapper tradePayMapper;

@Override

public void createPayment(TradePay tradePay){

接下来就是订单的支付状态,方法有很多,可以用这个 count by example,根据某一个条件的去进行一个统计,如果统计的数量,它是大于零的,那么说明根据这个条件查到了数据。

可以将这个条件设置一下 createcreteria,接下来去创建一个 create,在这个地方的条件就是 order ID。

还有一个条件就是 ispaid 必须必须等于当前已经支付的状态,shop pay-ispaid.get code。

以这两个条件去进行统计,获得一下当前统计的结果,如果这个结果大于零,就说明这个订单已经有支付的记录了,所以就不需要进行支付了,在这里我们就抛一个异常,抛一个异常,shop pay is paid,那么就不用进行支付操作了。

在这个流程上面还可以再加上一个,又肯 trade paid 没有去传递过来这个订单的这个 ID 啊,或者这个参数不合法,也不能去操作。

如果它等于空或者//,或者是 tradepay getid 等于空,那就直接抛一个当前参数非法。

代码如下:

@override

public void create Payment(TradePaytradePay){

if(tradePay==null| tradePaygetorderId()==nu11){

CastException.cast(ShopCode SHOPREQUEST PARAMETER VALID);

//1.判断订单支付状态

Trade Pay Example example=new Trade PayExample();Trade Pay Example Criteria criteria=example create

Criteria() criteria. And OrderId EqualTo(tradePay getorderId());criteria. And Is Paid Equal To(ShopCode SHOP PAYMENT IS

PAID get Code)) intr=trade Pay

Mapper.countByExample(example);

if(r>0){

Cast Exception.cast(Shop Code.SHOP_PAYMENT IS PAID);

如果没有查到订单的支付状态,因为已经有了订单的 id,那就根据id把状态改为未支付,改为未付款,他的状态值是0,和 ispaid 的状态不一样。这里定义未付款为0,正在付款为1,已付款为2,现在把数据库里的表修改一下。

image.png

继续回到代码,刚刚设置了订单的状态为未支付,然后把它保存到数据库里面去,接下来使用雪花算法生成订单 id。

代码如下:

@Autowired

private IDWorker idWorker;

再使用 set idwork 把它生成出来。要把雪花算吧入库,就要先注册一下。之前再 bean 中已经做过,可以直接拿过来。

代码如下:

@Bean

public IDworker getBean(){

return new IDWorker(data centerld1 machineld1);

为了方便区分把 machineid 改为2,因为将来两个 id 会在两个不不同 的服务器里,所以要区分一下。

回到 service ,就可以设置订单的 id 了。做完之后就要给前台做一个返回,因为在接口上没有定义返回值,所以现在要加上。

第一个参数是 getsucces,第二个是 getmessage。

代码如下:

return new Result

(ShopCode.SHOP_SUccEss.getSuccess(),

ShopCodeSHOP_SUCCEssgetMessage());

这样流程就实现完了。

总结一下,在服务端接收到支付下单的请求,就是创建支付下单的请求,首先判断一下支付的参数是否合法,然后在数据库中判断当前订单是否付款,以订单 id 和状态的条件进行统计,如果已经支付,那这个参数必然是大于0的,然后就抛一个异常。

如果状态显示未支付,就把订单的状态设置为未支付,继续设置订单的 id,idhi 通过雪花算法生成出来的,然后在数据库中进行保存,保存后给调用方返回一个结果。

相关文章
|
JavaScript 前端开发 开发工具
基于 Vue3.0 和 Ant Design Vue ,高颜值管理后台UI框架vue-vben-admin运行
基于 Vue3.0 和 Ant Design Vue ,高颜值管理后台UI框架vue-vben-admin运行
936 1
|
安全 数据安全/隐私保护
2022 年推荐免费在线接收短信平台(国内、国外)
现代社会中大多数人容易忘记密码,因此,为了方便,各大网站或者 APP 就相继出现以手机号码进行短信验证来注册和登录等操作。但此时,大多个人手机号码都已经是实名认证的,就非常怕存在个人信息泄露的情况。近几年网络平台用户数据泄露事件层出不穷,勿论一般平台,甚至一些全球知名企业也曾被曝出用户数据泄露问题,那基于此我们用户又能做点什么呢?
51511 0
2022 年推荐免费在线接收短信平台(国内、国外)
|
开发工具 Android开发
Mac 安卓(Android) 配置adb路径
Mac 安卓(Android) 配置adb路径
1408 0
|
UED
在钉钉宜搭中,要实现单选关联选项设置与图文展示的关联
【10月更文挑战第5天】本文通过具体案例介绍如何在钉钉宜搭中实现单选字段与其他字段的联动功能。以旅行社旅游线路报名表单为例,详细说明了创建单选字段、图文展示字段及设置联动逻辑的具体步骤。通过简单的配置,实现了用户选择目的地后自动展示相关信息的效果,提升了用户体验和数据录入准确性。适用于希望通过低代码平台优化工作流程的企业。
796 6
遇到ffmpeg错误:non monotonically increasing dts to muxer in stream
遇到ffmpeg错误:non monotonically increasing dts to muxer in stream
1963 0
|
11月前
|
搜索推荐 算法 数据挖掘
探讨淘宝商品 API 接口:运用及收益
在电商蓬勃发展的今天,淘宝作为国内巨头,拥有海量商品数据和庞大用户群体。淘宝商品API接口为开发者、电商从业者和数据分析师提供了丰富的商品信息,如详情、价格、销量、评价等,助力电商平台搭建、推荐系统优化、市场调研及竞品分析,显著提升业务收益。本文将深入探讨该接口的运用方法与价值,并结合实际代码示例,帮助读者更好地理解和应用。
324 6
|
9月前
|
存储 人工智能 JavaScript
构建企业AI的信任与信心基石:从认知到实践的全面升级
本文探讨企业在人工智能(AI)广泛应用背景下面临的信任与信心挑战,提出通过数据安全、技术透明度及技能认证构建信任体系。重点介绍生成式人工智能认证(GAI),其能助力企业培养AI人才,提升团队专业能力。文章还建议企业加强内部培训、外部合作与实战应用评估,全方位推动AI战略落地,为企业发展提供支持。
Vue3单选框(Radio)
这是一个可高度定制的单选框组件,支持多种配置项,如单选元素数据、禁用状态、垂直排列、间距、按钮样式及大小等。组件具备普通与按钮样式,并可根据需求调整样式风格。提供了丰富的示例代码及在线预览,便于理解和使用。
737 1
Vue3单选框(Radio)
|
机器学习/深度学习 人工智能 监控
AI视频监控技术的核心优势与实践
AI视频监控技术结合了计算机视觉、深度学习和大数据分析,能够实时分析监控画面,识别异常行为和场景变化。其核心在于从“被动记录”转型为“主动识别”,提升监控效率并减少安全隐患。主要应用场景包括泳池管理、健身器械区域、人员密度预警和异常事件检测。系统架构支持多种摄像头设备,采用边缘计算和Docker部署,具备实时性、高准确率和扩展性等优势。未来将优化复杂场景适应性和实时计算负载,进一步提高系统性能。
2979 7
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
195 2