JAVA全系列 教程
3762个小节阅读:7091.5k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
/**
* 更新订单状态
* @param id 订单id
* @param orderStatus 订单状态
*/
void updateByOrderStatus(Long id, OrderStatus orderStatus);
xxxxxxxxxx
/**
* 根据id更新订单状态
* @param id
* @param orderStatus 订单状态
*/
@Override
public void updateByOrderStatus(Long id, OrderStatus orderStatus) {
LambdaUpdateWrapper<OrderInfo> olw = new LambdaUpdateWrapper<>();
olw.eq(OrderInfo::getOrderStatus,orderStatus.getType());
olw.set(OrderInfo::getId,id);
baseMapper.update(null,olw);
}
xxxxxxxxxx
/**
* 修改支付状态
* @param bodyMap
*/
void updateOrderStatus(Map<String, Object> bodyMap);
xxxxxxxxxx
@Override
public void updateOrderStatus(Map<String, Object> bodyMap) {
log.info("处理订单");
// 1. 获取明文
String plainText = WxVerifierUtils.decryptFromResource(bodyMap, wxPayConfig.getApiV3Key());
// 2. 明文json转map
HashMap<String,Object> plainTextMap = JSON.parseObject(plainText, HashMap.class);
// 3. 获取订单id
String orderNo = (String) plainTextMap.get("out_trade_no");
// 4. 根据订单id查询订单信息
OrderInfo orderInfo = iOrderInfoService.findByOrderNo(orderNo);
// 5. 判断是否修改
if (!orderInfo.getOrderStatus().equals(OrderStatus.NOTPAY.getType())){
return ;
}
// 6. 更新订单状态
iOrderInfoService.updateByOrderStatus(orderInfo.getId(),OrderStatus.SUCCESS);
}
xxxxxxxxxx
/**
* 对称解密
*
* @param bodyMap
* @return
*/
public static String decryptFromResource(Map<String, Object> bodyMap,String apiv3) {
// 通知数据
Map<String, String> resourceMap = (Map<String, String>) bodyMap.get("resource");
// 数据密文
String ciphertext = resourceMap.get("ciphertext");
// 随机串
String nonce = resourceMap.get("nonce");
// 附加数据
String associatedData = resourceMap.get("associated_data");
AesUtil aesUtil = new AesUtil(apiv3.getBytes(StandardCharsets.UTF_8));
String plainText = null;
try {
// 解密
plainText = aesUtil.decryptToString(associatedData.getBytes(StandardCharsets.UTF_8),
nonce.getBytes(StandardCharsets.UTF_8),
ciphertext);
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
return plainText;