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

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

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

相关文章
|
9月前
订单服务:订单流程
订单服务:订单流程
如何实现一个项目配置多个商户信息付款给对应商户
说明:本帖主要说明如何实现给一个平台配置多个商户的号实现多个商户收款。主要用于没有门店和第三方授权方式 支付宝最终是根据请求过来的appid来判断哪一个商户收款(也就是请求是谁的appid就收款到谁的账号下)    方案一:      1.
1284 0
|
8月前
|
SQL 前端开发
创建订单【项目 商城】
创建订单【项目 商城】
36 0
|
6月前
JavaWeb10(实现结算&查看订单&订单详情)(一)
JavaWeb10(实现结算&查看订单&订单详情)
|
6月前
|
前端开发
JavaWeb10(实现结算&查看订单&订单详情)(二)
JavaWeb10(实现结算&查看订单&订单详情)
|
10月前
|
数据可视化 搜索推荐 API
如何通过拼多多订单API接口获取订单详情
拼多多订单接口获取到订单详情之后,你可以根据需求对订单信息进行处理和利用,例如: 将订单信息导入到 ERP 系统中实现自动化订单处理; 根据订单信息生成发货单、物流面单等相关文档; 对订单的商品信息进行分析,例如常购买的商品、下单时间、下单地点等,为业务决策提供参考; 根据买家信息进行个性化营销,为买家提供更好的购物体验; 对订单信息进行可视化展示,例如订单量趋势图、订单来源分析等,为业务和数据分析提供支持。 以上只是一些简单的示例,具体使用方式应根据实际业务需求和场景而定。需要注意的是,对于涉及用户隐私数据的处理,需要遵守相关的法律法规和隐私保护政策。
|
10月前
ERP,仓储系统官方订单详情接口trade.fullinfo.get( 获取单笔交易的详细信息 )
ERP,仓储系统官方订单详情接口trade.fullinfo.get( 获取单笔交易的详细信息 )
|
弹性计算
阿里云存在未支付订单导致无法下单解决方法
解决阿里云存在未支付订单请支付或作废后再下单,阿里云服务器或其他云资源无法立即购买,提示“您选择的资源存在未支付订单,请支付或作废后再下单!”什么原因?这是由于你的阿里云账号之前已经创建了该订单,只是订单没有支付,所以无法再次创建订单。解决方法是,要么取消之前的订单,要么支付之前的订单。阿里云百科来详细说下阿里云账号下存在未支付订单的解决方法:
714 0
阿里云存在未支付订单导致无法下单解决方法
|
消息中间件 数据库 RocketMQ
创建支付订单流程|学习笔记
快速学习创建支付订单流程
278 0
创建支付订单流程|学习笔记
|
XML 数据安全/隐私保护 数据格式
查询订单支付状态接口(1) | 学习笔记
快速学习查询订单支付状态接口(1)
295 0