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