This commit is contained in:
quyixiao 2025-11-07 23:28:01 +08:00
parent a8059593ce
commit 9a1cc9fba1
2 changed files with 4 additions and 6 deletions

View File

@ -150,5 +150,5 @@ public interface VvTradeOrderLineDao extends BaseMapper<VvTradeOrderLineEntity>
List<VvTradeOrderLineEntity> selectVvTradeOrderLineByBuyerIdTrackNumber(Long buyerId, String trackNumber);
List<VvTradeOrderLineEntity> selectByTradeOrderIdAndTransactionId(Long tradeOrderId, String transactionId);
List<VvTradeOrderLineEntity> selectByTradeOrderIdAndTransactionId(Long tradeOrderId, @IF String transactionId);
}

View File

@ -46,19 +46,18 @@ public class AppWeiXinPayNotifyController {
// Step 1: 解析微信支付回调通知的JSON
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(requestBody);
// 获取加密数据
String ciphertext = rootNode.get("resource").get("ciphertext").asText();
String associatedData = rootNode.get("resource").get("associated_data").asText();
String nonce = rootNode.get("resource").get("nonce").asText();
// Step 2: 解密加密数据使用AES-GCM解密
String decryptedData = decrypt(ciphertext, associatedData, nonce);
// Step 3: 处理解密后的数据
JsonNode resultData = objectMapper.readTree(decryptedData);
String transactionId = resultData.get("transaction_id").asText(); // 微信支付订单号
String outTradeNo = resultData.get("out_trade_no").asText(); // 商户订单号
String tradeState = resultData.get("trade_state").asText(); // 支付状态
log.info("handleWeChatPayCallback outTradeNo:{},tradeState:{},transactionId:{},decryptedData:{}", outTradeNo, tradeState,transactionId,decryptedData);
// 根据支付结果处理商户业务逻辑
if ("SUCCESS".equals(tradeState)) {
// 支付成功的逻辑更新订单状态
@ -66,7 +65,6 @@ public class AppWeiXinPayNotifyController {
}
// Step 4: 返回处理结果通知微信支付停止回调
return "{\"code\":\"SUCCESS\",\"message\":\"OK\"}";
} catch (Exception e) {
e.printStackTrace();
// 如果处理失败返回错误信息
@ -94,8 +92,8 @@ public class AppWeiXinPayNotifyController {
private void updateOrderStatus(String outTradeNo, String transactionId) {
// 这里是更新商户订单状态的逻辑例如标记订单已支付
log.info("订单 " + outTradeNo + " 已支付,交易号:" + transactionId + "开始更新子订单信息");
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectByTradeOrderIdAndTransactionId(NumberUtil.objToLong(outTradeNo), transactionId);
log.info("handleWeChatPayCallback 订单 " + outTradeNo + " 已支付,交易号:" + transactionId + "开始更新子订单信息");
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(NumberUtil.objToLong(outTradeNo));
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_shipping.getStatus());
vvTradeOrderLineEntity.setGmtPay(new Date());