From 443eae1e8a1dc4bf9bda562c84ddef9dd41774c4 Mon Sep 17 00:00:00 2001 From: jkcdev Date: Thu, 22 May 2025 17:38:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=94=AF=E4=BB=98=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E3=80=81=E9=80=80=E6=AC=BE=E7=8A=B6=E6=80=81=E7=9A=84?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=80=BB=E8=BE=91=EF=BC=8C=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E7=9A=84=E5=95=86=E6=88=B7=E6=94=AF=E4=BB=98=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=E3=80=81=E5=95=86=E6=88=B7=E9=80=80=E6=AC=BE=E5=8D=95?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeWxPaymentController.java | 18 +++++- .../cdzy/payment/service/WxPayService.java | 21 ++++--- .../service/impl/WxPayServiceImpl.java | 55 +++++++++++++------ .../java/com/cdzy/payment/task/WsPayTask.java | 2 +- 4 files changed, 69 insertions(+), 27 deletions(-) diff --git a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java index a7df3237..9244b379 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java @@ -104,6 +104,20 @@ public class EbikeWxPaymentController { return r.isSuccess() ? JsonResult.success(true) : JsonResult.failed(r.getMessage()); } + + /** + * 通过退款记录主键id查询退款信息 + * + * @param refundId 退款主键id + * @return 退款状态信息 + */ + @GetMapping("/queryRefundStatus/{refundId}") + public JsonResult queryRefundStatus(@PathVariable(name = "refundId") String refundId) { + HandleNotifyResult r = wxPayService.queryRefundStatusById(refundId); + return JsonResult.success(r); + } + + /** * 审核退款申请 * @@ -127,12 +141,12 @@ public class EbikeWxPaymentController { /** * 通过退款单号查询退款信息 * - * @param refundId 商户(骑行)退款单号 + * @param refundId 商户(骑行)退款id * @return 退款信息 */ @GetMapping("/queryRefund/{refundId}") public JsonResult refundQuery(@PathVariable(name = "refundId") String refundId) { - Refund r = wxPayService.queryRefundByOutNo(refundId); + Refund r = wxPayService.queryRefundById(refundId); return r == null ? JsonResult.failed(String.format("退款单号{%s}查询退款失败", refundId)) : JsonResult.success(r); } diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java b/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java index b0e4318e..69db2520 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java @@ -8,7 +8,6 @@ import com.wechat.pay.java.service.payments.model.Transaction; import com.wechat.pay.java.service.refund.model.Refund; import javax.servlet.http.HttpServletRequest; -import java.util.List; /** * 微信支付服务类(JSAPI支付),小程序 @@ -97,20 +96,28 @@ public interface WxPayService { /** - * 通过商户退款单号查询退款信息 + * 通过商户退款id查询退款信息 * - * @param outRefundNo 商户退款订单号 + * @param refundId 商户退款订主键 * @return 退款信息 */ - Refund queryRefundByOutNo(String outRefundNo); + Refund queryRefundById(String refundId); /** - * 通过商户退款单号查询退款信息状态 + * 通过商户退款单号查询退款信息 * - * @param outRefundNo 商户退款订单号 + * @param outTradeNo 商户退款订单号 * @return 退款信息 */ - HandleNotifyResult queryRefundStatusByOutNo(String outRefundNo); + Refund queryRefundByOutTradeNo(String outTradeNo); + + /** + * 通过退款记录主键id查询退款信息状态 + * + * @param refundId 退款记录主键id + * @return 退款状态信息 + */ + HandleNotifyResult queryRefundStatusById(String refundId); /** * 处理支退款回调 diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java index ce9443ad..0dc11759 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java @@ -264,10 +264,15 @@ public class WxPayServiceImpl implements WxPayService { @Override public Transaction queryOrderByOutTradeNo(String outTradeNo) { - QueryOrderByOutTradeNoRequest request = new QueryOrderByOutTradeNoRequest(); - request.setOutTradeNo(outTradeNo); - request.setMchid(wxPayConfig.getMerchantId()); - return wxJsapiService.queryOrderByOutTradeNo(request); + try { + QueryOrderByOutTradeNoRequest request = new QueryOrderByOutTradeNoRequest(); + request.setOutTradeNo(outTradeNo); + request.setMchid(wxPayConfig.getMerchantId()); + return wxJsapiService.queryOrderByOutTradeNo(request); + }catch (Exception e) { + logError("查询支付订单queryOrderByOutTradeNo", e); + return null; + } } @Override @@ -498,20 +503,35 @@ public class WxPayServiceImpl implements WxPayService { } @Override - public Refund queryRefundByOutNo(String outRefundNo) { - QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); - request.setOutRefundNo(outRefundNo); - return wxRefundService.queryByOutRefundNo(request); + public Refund queryRefundById(String refundId) { + EbikeRefund ebikeRefund = ebikeRefundService.getById(refundId); + if (ebikeRefund == null) { + log.error("{}退款订单不存在", refundId); + return null; + } + return queryRefundByOutTradeNo(ebikeRefund.getOrderId()); } @Override - public HandleNotifyResult queryRefundStatusByOutNo(String outRefundNo) { + public Refund queryRefundByOutTradeNo(String outTradeNo) { + try { + QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); + request.setOutRefundNo(outTradeNo); + return wxRefundService.queryByOutRefundNo(request); + }catch (Exception e) { + logError("查询退款订单queryRefundByOutTradeNo", e); + return null; + } + } + + @Override + public HandleNotifyResult queryRefundStatusById(String refundId) { HandleNotifyResult result = new HandleNotifyResult(); // 先查本地数据库,如果退款状态不为SUCCESS,需要查询微信支付 - EbikeRefund ebikeRefund = ebikeRefundService.getById(outRefundNo); + EbikeRefund ebikeRefund = ebikeRefundService.getById(refundId); if (ebikeRefund == null) { - log.error("{}退款订单不存在", outRefundNo); - result.setMessage(String.format("{%s}退款订单不存在", outRefundNo)); + log.error("{}退款订单不存在", refundId); + result.setMessage(String.format("{%s}退款订单不存在", refundId)); return result; } result.setSuccess(String.valueOf(Status.SUCCESS.ordinal()).equals(ebikeRefund.getStatus())); @@ -519,16 +539,17 @@ public class WxPayServiceImpl implements WxPayService { result.setMessage(String.format("退款%s成功", ebikeRefund.getRefundId())); return result; } - QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); - request.setOutRefundNo(outRefundNo); - Refund r = wxRefundService.queryByOutRefundNo(request); - if (r != null && r.getStatus().equals(Status.SUCCESS)) { + Refund refund = queryRefundByOutTradeNo(ebikeRefund.getOrderId()); + if (refund != null && refund.getStatus().equals(Status.SUCCESS)) { result.setMessage(String.format("退款%s成功", ebikeRefund.getRefundId())); result.setSuccess(true); // 更新退款状态 - ebikeRefundService.updateRefundStatus(r); + ebikeRefundService.updateRefundStatus(refund); return result; + }else{ + result.setMessage(String.format("退款%s失败", ebikeRefund.getRefundId())); } + return result; } diff --git a/ebike-payment/src/main/java/com/cdzy/payment/task/WsPayTask.java b/ebike-payment/src/main/java/com/cdzy/payment/task/WsPayTask.java index 577155fd..a04c034d 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/task/WsPayTask.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/task/WsPayTask.java @@ -87,7 +87,7 @@ public class WsPayTask { for (EbikeRefund ebikeRefund : ebikeRefundList) { log.warn("超时未退款的退款单号 ===> {}", ebikeRefund.getRefundId()); // 调用微信退款查询接口,查询退款状态 - Refund refund = wxPayService.queryRefundByOutNo(ebikeRefund.getRefundId()); + Refund refund = wxPayService.queryRefundByOutTradeNo(ebikeRefund.getRefundOrder()); if (refund!= null){ // 3. 更新退款单状态 ebikeRefundService.updateRefundStatus(refund);