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

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

开发者学堂课程【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 通过雪花算法生成出来的,然后在数据库中进行保存,保存后给调用方返回一个结果。

相关文章
|
4月前
|
前端开发
支付系统44----支付宝支付-退款查询
支付系统44----支付宝支付-退款查询
支付系统44----支付宝支付-退款查询
|
SQL 前端开发
创建订单【项目 商城】
创建订单【项目 商城】
57 0
|
前端开发
JavaWeb10(实现结算&查看订单&订单详情)(二)
JavaWeb10(实现结算&查看订单&订单详情)
JavaWeb10(实现结算&查看订单&订单详情)(一)
JavaWeb10(实现结算&查看订单&订单详情)
|
数据可视化 搜索推荐 API
如何通过拼多多订单API接口获取订单详情
拼多多订单接口获取到订单详情之后,你可以根据需求对订单信息进行处理和利用,例如: 将订单信息导入到 ERP 系统中实现自动化订单处理; 根据订单信息生成发货单、物流面单等相关文档; 对订单的商品信息进行分析,例如常购买的商品、下单时间、下单地点等,为业务决策提供参考; 根据买家信息进行个性化营销,为买家提供更好的购物体验; 对订单信息进行可视化展示,例如订单量趋势图、订单来源分析等,为业务和数据分析提供支持。 以上只是一些简单的示例,具体使用方式应根据实际业务需求和场景而定。需要注意的是,对于涉及用户隐私数据的处理,需要遵守相关的法律法规和隐私保护政策。
|
弹性计算
阿里云存在未支付订单导致无法下单解决方法
解决阿里云存在未支付订单请支付或作废后再下单,阿里云服务器或其他云资源无法立即购买,提示“您选择的资源存在未支付订单,请支付或作废后再下单!”什么原因?这是由于你的阿里云账号之前已经创建了该订单,只是订单没有支付,所以无法再次创建订单。解决方法是,要么取消之前的订单,要么支付之前的订单。阿里云百科来详细说下阿里云账号下存在未支付订单的解决方法:
991 0
阿里云存在未支付订单导致无法下单解决方法
|
消息中间件 数据库 RocketMQ
创建支付订单流程|学习笔记
快速学习创建支付订单流程
355 0
创建支付订单流程|学习笔记
|
数据库 开发者 微服务
查询订单支付状态接口(2) | 学习笔记
快速学习查询订单支付状态接口(2)
查询订单支付状态接口(2) | 学习笔记
|
开发者 微服务
课程支付功能(生成订单接口2) | 学习笔记
简介:快速学习课程支付功能(生成订单接口2)
课程支付功能(生成订单接口2) | 学习笔记