查询订单支付状态接口(1) | 学习笔记

简介: 快速学习查询订单支付状态接口(1)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)查询订单支付状态接口(1)学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11495


查询订单支付状态接口(1)


目录:

一、支付过程

二、查询订单支付状态

三、总结


一、支付过程

当二维码准备好后,用微信扫一扫支付,支付完成后,需要知晓是否支付成功。所以需要写一个接口,用来查询订单支付状态。


二、查询订单支付状态

看支付的订单是否支付成功。需要做个查询,即如果订单支付成功需要做什么事情。

在支付记录表中加一条支付成功记录,另外在订单中需要改动,把status状态改成1。0表示未支付,1表示已支付。即写个接口查询订单支付状态,如果订单支付成功,那么需要在支付记录表中加支付成功记录,并把支付状态改成1。

在 PayLogController

//查询订单支付状态

//参数:订单号,根据订单号查询 支付状态

@GetMapping(“queryPayStatus/{orderNo}”)在生成二维码时是根据订单号生成的,所以根据订单号即可查出来,在生成二维码时把里面设置过订单号,所以根据订单号即可查出状态。

public R querPayStatus(@PathVariable String orderNo){这个是订单号

Map<String,String>map=payLogService.queryPayStatus(orderNo);订单状态里面传一个订单号,引入 map 集合。返回后可以用 map 的值做判断。

if(map == null){支付等于空,一般来说支付有问题了

return R.error().message(“支付出错了”);

}

//如果返回 map 里面不为空,通过 map 获取订单状态

在 map 中设置一个值,或者有个固定值,trade_state。

if(map.get(“trade_state”).equals(“SUCCESS”)){如果值是success即支付成功

//添加记录到支付表,更新订单表订单状态

payLogService.updateOrderStatus(map);

根据订单号,调微信官方提供地址,查询订单是否支付成功,目前订单的状态,而支付状态中,返回是一个map集合,如果返回值是 null 则支付出错,如果返回值是success,则支付成功。

支付成功后,向记录表中更新支付记录及状态,最后 return ok

return R.ok().message(“支付成功”)

}

return R.ok().message(“支付中”)

在 PayLogService中,创建 queryPayStatus 方法和 updateOrdersStatus 方法。

一个是更新记录,一个是添加状态

先创建 querypaystatus 方法

//根据订单号查询订单支付状态

Map<String,String> queryPayStatus(String orderNo);

这个方法只做两件事情,一是向支付表添加记录,更新订单状态,二是查询订单支付。

//向支付表添加记录,更新订单状态

void updateOrdersStatus(Map<String,String> map) ;

在service里面两个方法创建一下。

//查询订单支付状态

@Override

public Map<String,String> queryPayStatus(String orderNo){

//1、封装参数

Map m = new HashMap<>()

m.put(“appid”,”wx74862e0dfcf69954”);

m.put(“mch_id”,”1558950191”)

m.put(“out_trade_no”,orderNo);

m.put(“nonce_str”,WXPayUtil.generateNonceStr());

//2、发送 httpclient

HttpClient client = new HttpClient(url:”https://api.mch.weixin.qq.com/pay/orderquery”);这是请求的固定地址

client.setCmlParam(WXPayUtil.generateSignedXml(m,key:”T6m9iK73b0kn9g5v426NKfHQH7X8rKwb”));

参数也是xml格式,用微信工具类做转换,两个参数,一个是map一个是商户key

client.setHttps(true);

client.post();

//3.得到请求返回内容

String xml = client.getContent();

Map<String,String>resultMap = WXPayUtil.xmlToMap(xml);

//6、转成 Map 再返回

return resultMap;

}catch(Exception e){

return null;

}

//添加支付记录和更新订单状态

@Override

public void updateOrdersStatus(Map<String,String>map){


三、总结

首先设置需要的参数,参数是固定的,包括微信id,商户号,订单号以及随机字符串,设置完成后发送请求到固定地址,把请求参数变成xml并用商户key做加密,加密后发送得到内容,得到的内容是xml格式,把xml格式变成map集合,最终返回

相关文章
|
9月前
|
JSON 前端开发 Java
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口2
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口
70 0
|
9月前
|
前端开发 小程序 安全
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口1
从零玩转系列之微信支付实战PC端我的订单接入退款取消接口
57 0
|
10月前
|
XML JSON 缓存
Java实现订单ID获取淘宝买到的订单详情数据接口方法
Java实现订单ID获取淘宝买到的订单详情数据接口方法
206 0
|
10月前
|
XML JSON 缓存
Java实现订单ID获取淘宝买到的订单列表数据接口方法
Java实现订单ID获取淘宝买到的订单列表数据接口方法
164 0
|
11月前
|
存储 安全 API
电商平台订单接口调用注意事项
电商平台订单接口调用注意事项
|
消息中间件 Java 程序员
订单支付超时,自动关闭订单实现
今天跟大家一起探讨一个场景:用户对商品下单,约定30分钟没支付,超时订单将被系统自动关闭。
345 0
订单支付超时,自动关闭订单实现
|
前端开发 应用服务中间件 API
订单异步通知修改订单状态
订单异步通知修改订单状态
订单异步通知修改订单状态
|
数据库 开发者 微服务
查询订单支付状态接口(2) | 学习笔记
快速学习查询订单支付状态接口(2)
100 0
查询订单支付状态接口(2) | 学习笔记
|
消息中间件 数据库 RocketMQ
创建支付订单流程|学习笔记
快速学习创建支付订单流程
278 0
创建支付订单流程|学习笔记
|
消息中间件 算法 Java
创建支付订单实现|学习笔记
快速学习创建支付订单实现
92 0
创建支付订单实现|学习笔记