开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):查询订单支付状态接口(2)】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11496
查询订单支付状态接口(2)
内容介绍:
一、查询支付状态接口
二、总结
三、操作过程
一、查询支付状态接口
在 service 方法中传的是 map 集合,也就是在查订单状态时返回的 map 集合,在map 集合中有很多数据,比如输出有 devago 看结果,在数据中有一个值专门返回订单id或者订单号
//从 map 获取订单号
S
tring orderNo = map.get(“out_trade_no”);
//根据订单号查询订单信息
Q
ueryWrapper<Order> wrapper = new QueryWrapper<>();
w
rapper.eq(column:”order_no”,orderNo);
O
rder order = orderService.getOne(wrapper);
//更新订单表订单状态
i
f(order.getStatus().inValue() == 1){ return;)
o
rder.setStatus(1)://1
代表已支付
o
rderService.updateById(order);
//向支付表添加支付记录
P
ayLog payLog = new PayLog();
p
ayLog.setOrderNo(orderNo);//
订单号
p
ayLog.setPayTime(new Date());//
订单完成时间
payLog.setPayType(1);//
支付类型
1
微信
p
ayLog.setTotalFee(order.getTotalFee());//
总金额(分)
p
ay
L
og.setTradeState(map.get(“trade_state”));//
支付状态
p
ayLog.setTransactionId(map.get(“transaction_id”));//
流水号
p
ayLog.setAttr(JSONObject.toJSONString(map));
b
aseMapper.insert(payLog);
b
aseMapper.insert
}
例如 orderNo 表示订单号,payTime 表示支付完成时间,payType是支付类型,getTotalFee 是总金额,transaction_id 是订单流水号,支付状态和流水号不需要我们设置,是固定的,jsonobject 表示除了支付状态和流水号之外还有其他值,其他值也可以存到数据库中,最终存到 attr 中。
二、总结
第一部分:生成二维码,二维码在 map 中有 url,还有其他值,在页面中下载二维码能生成出来。
- 查询订单状态根据订单号查询,先调 queryPayStatus 方法,在这个方法中调微信固定的地址,返回的状态使用 map 进行返回。
通过 map 可以判断,如果 map 为空,则是出错了,如果不为空,去 trade_state 值,如果为 success,则是支付成功,接下来添加记录,更改状态。
三、操作过程
为了方便操作,在后面看的更明显,把值做个输出。
//生成微信支付二维码接口
//参数是订单号
@GetMapping(“creatNative/{orderNo}”)
public R createNative(@PathVariable String_orderNo)_{
//返回信息,包含二维码地址,还有其他信息
Map map = payLogService.creatNative(orderNo);
S
ystem.out.println(“****
返回二维码map集合:
”+map);
return R.ok(),data(map):
}
/
/
查询订单支付状态
//
参数:订单号,根据订单号查询 支付状态
@GetMapping(“queryPayStatus/{orderNo}”)
p
ublic
R querPayStatus(@PathVariable String orderNo){
Map<String,String>map=payLogService.queryPayStatus(orderNo);
System.out.println(“*****
订单状态map集合:
{“+map};
if(map == null){
return R.error().message(“
支付出错了”);
}