JAVA全系列 教程
3762个小节阅读:7095.6k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
/**
* 检查订单状态
* @param orderNo
* @throws Exception
*/
void checkOrderStatus(String orderNo) throws Exception;
xxxxxxxxxx
/**
* 检查订单状态
* 根据订单号查询微信支付查单接口,核实订单状态
* 如果订单已支付,则更新商户端订单状态,并记录支付日志
* 如果订单未支付,则调用关单接口关闭订单,并更新商户端订单状态
*
* @param orderNo
* @throws Exception
*/
@Override
public void checkOrderStatus(String orderNo) throws Exception {
log.warn("根据订单号核实订单状态 ===> {}", orderNo);
// 1、调用微信支付查单接口
String result = this.queryOrder(orderNo);
// 2、json转map
Map<String, String> resultMap = JSON.parseObject(result, HashMap.class);
// 3、获取微信支付端的订单状态
String tradeState = resultMap.get("trade_state");
// 4、判断订单状态
if (WxTradeState.SUCCESS.getType().equals(tradeState)) {
log.warn("核实订单已支付 ===> {}", orderNo);
//如果确认订单已支付则更新本地订单状态
iOrderInfoService.updateStatusByOrderNo(orderNo, OrderStatus.SUCCESS);
//记录支付日志
iPaymentInfoService.createPaymentInfo(result);
}
if (WxTradeState.NOTPAY.getType().equals(tradeState)) {
log.warn("核实订单未支付 ===> {}", orderNo);
// TODO: 如果订单未支付,则调用关单接口
//更新本地订单状态
iOrderInfoService.updateStatusByOrderNo(orderNo, OrderStatus.CLOSED);
}
}