From 7d953717a2bbf129feae8970a4e0c0da5b6fd82b Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Sun, 9 Nov 2025 19:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/mm/AdminOrderController.java | 4 +- .../controller/mm/AdminReverseController.java | 1 + .../vv/AppWeiXinRefundNotifyController.java | 58 ++++++++++++++++--- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java index 51e3649..a627f2e 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java @@ -341,15 +341,14 @@ public class AdminOrderController { appliyReverseRequest.setRefundReason("订单取消:" + vvCancelDTO.getCancelReason()); appliyReverseRequest.setStatus(ReverseStatusEnums.cancel.getStatus()); R r = reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest); - if (r.ifSuccessful()) { VvReverseOrderEntity reverseOrderEntity = (VvReverseOrderEntity)r.getData(); Refund refund = jsapiPrepay.refund(reverseOrderEntity.getTradeOrderId(), reverseOrderEntity.getId()); log.info("ReverseOrderServiceImpl reverseOrderEntity id:{} refund:{}",reverseOrderEntity.getId(), JSON.toJSONString(refund)); - reverseOrderEntity.setWeixinFundsAccount(JSON.toJSONString(refund.getFundsAccount())); reverseOrderEntity.setWeixinStatus(JSON.toJSONString(refund.getStatus())); reverseOrderEntity.setWeixinRefundId(refund.getRefundId()); + reverseOrderEntity.setStatus(ReverseStatusEnums.agree_refunded.getStatus()); // 设置 状态为同意退款 reverseOrderEntity.setWeixinTransactionId(refund.getTransactionId()); reverseOrderEntity.setUserEceivedAccount(refund.getUserReceivedAccount()); reverseOrderEntity.setPreRefundInfo(JSON.toJSONString(refund)); @@ -358,7 +357,6 @@ public class AdminOrderController { } return r; } - /*** * 上传结算证据 */ diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java index 50f6ae1..323828a 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java @@ -162,6 +162,7 @@ public class AdminReverseController { vvTradeOrderLineEntity.setReverseStatus(vvReverseOrderEntity.getStatus()); vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity); } + if(ReverseStatusEnums.agree_refunded.getStatus().equals(vvApproveRequest.getStatus())){ Refund refund = jsapiPrepay.refund(vvReverseOrderEntity.getTradeOrderId(), vvReverseOrderEntity.getId()); log.info("AdminReverseController reverseOrderEntity id:{} refund:{}",vvReverseOrderEntity.getId(), JSON.toJSONString(refund)); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java index 4bcfe58..8646855 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppWeiXinRefundNotifyController.java @@ -4,9 +4,11 @@ package com.heyu.api.controller.vv; import com.alibaba.fastjson.JSONObject; import com.heyu.api.alibaba.request.mm.enums.ReverseStatusEnums; import com.heyu.api.data.dao.vv.VvReverseOrderDao; +import com.heyu.api.data.dao.vv.VvReverseOrderLineDao; import com.heyu.api.data.dao.vv.VvTradeOrderDao; import com.heyu.api.data.dao.vv.VvTradeOrderLineDao; import com.heyu.api.data.entity.vv.VvReverseOrderEntity; +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.utils.NumberUtil; import com.heyu.api.data.utils.StringUtils; @@ -51,6 +53,33 @@ public class AppWeiXinRefundNotifyController { @Autowired private VvReverseOrderDao reverseOrderDao; + + @Autowired + private VvReverseOrderLineDao vvReverseOrderLineDao; + + + + /*** + *{ + * "mchid": "1731491745", + * "out_trade_no": "202511172474", + * "transaction_id": "4200002965202511091318712632", + * "out_refund_no": "25", + * "refund_id": "50303205432025110956602127632", + * "refund_status": "SUCCESS", + * "success_time": "2025-11-09T15:13:05+08:00", + * "amount": { + * "total": 1, + * "refund": 1, + * "payer_total": 1, + * "payer_refund": 1 + * }, + * "user_received_account": "交通银行信用卡5874" + * } + * @param jsonData + * @return + * @throws Exception + */ //退款回调 @PostMapping("/refundNotify") @Transactional @@ -76,20 +105,31 @@ public class AppWeiXinRefundNotifyController { String refund_status = reqInfo.get("refund_status");//退款状态 String out_trade_no = reqInfo.get("out_trade_no"); //订单号 + String out_refund_no = reqInfo.get("out_refund_no"); //订单号 log.info("AppWeiXinRefundNotifyController refundNotifyUrl out_trade_no:{} refund_status:{} resultStr :{} " ,out_trade_no,refund_status,resultStr); Map parm = new HashMap<>(); if (!StringUtils.isEmpty(refund_status) && "SUCCESS".equals(refund_status)) { - VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderByTradeOrderId(NumberUtil.objToLong(out_trade_no)); - vvReverseOrderEntity.setGmtRefunded(new Date()); - vvReverseOrderEntity.setStatus(ReverseStatusEnums.refunded.getStatus()); - vvReverseOrderEntity.setGmtRefundNotify(new Date()); - reverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity); + VvReverseOrderEntity vvReverseOrderEntity = reverseOrderDao.selectVvReverseOrderById(NumberUtil.objToLong(out_refund_no)); + log.info("AppWeiXinRefundNotifyController refundNotifyUrl reverseStatus:{}", vvReverseOrderEntity.getStatus()); + if(ReverseStatusEnums.agree_refunded.getStatus().equals(vvReverseOrderEntity.getStatus())){ + vvReverseOrderEntity.setGmtRefunded(new Date()); + vvReverseOrderEntity.setStatus(ReverseStatusEnums.refunded.getStatus()); + vvReverseOrderEntity.setGmtRefundNotify(new Date()); + reverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity); - List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(NumberUtil.objToLong(out_trade_no)); - for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) { - vvTradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.refunded.getStatus()); - vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity); + List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(NumberUtil.objToLong(out_refund_no));; + List reverseOrderLineIds = new ArrayList<>(); + for (VvReverseOrderLineEntity vvReverseOrderLineEntity : vvReverseOrderLineEntities) { + reverseOrderLineIds.add(vvReverseOrderLineEntity.getTradeOrderLineId()); + } + List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(reverseOrderLineIds); + for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) { + vvTradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.refunded.getStatus()); + vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity); + } } + + //你自己的业务 parm.put("code", "SUCCESS"); parm.put("message", "成功");