From b879982d29cb2dbfe72482b46c8f6f2064d663a2 Mon Sep 17 00:00:00 2001 From: zhanglin8526 <852614290@qq.com> Date: 星期六, 26 八月 2023 15:27:29 +0800 Subject: [PATCH] 支付调整 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java | 73 +++++++++++++++++++++--------------- 1 files changed, 42 insertions(+), 31 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java index 5af01c2..c477d06 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java @@ -28,6 +28,8 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; +import java.util.Collection; +import java.util.Enumeration; import java.util.Map; import java.util.Objects; @@ -63,7 +65,7 @@ public String payNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException { // 获取请求头 - SignatureHeader signatureHeader = getSignatureHeader(response); + SignatureHeader signatureHeader = getSignatureHeader(request); log.info("微信支付/退款通知: {}", notifyData); @@ -71,27 +73,32 @@ String eventType = responseData.getEventType(); int resultType = 1; - String resultMessage = ""; - if(WxPayNotifyEventTypeEnum.TRANSACTION_SUCCESS.getCode().equals(eventType)){ - PartnerTransactionsNotifyResult notifyResult = wxService.getEcommerceService().parsePartnerNotifyResult(notifyData, signatureHeader); - PartnerTransactionsResult result = notifyResult.getResult(); - // 支付通知回调 - if("SUCCESS".equals(result.getTradeState())){ - orderService.payBack(result); - } - resultMessage = GSON.toJson(notifyResult); - } else if(WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType) - || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType) - || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)){ + String resultMessage = notifyData; - RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader); - orderService.orderRefundBack(result); - resultType = 2; - resultMessage = GSON.toJson(result); + try { + if (WxPayNotifyEventTypeEnum.TRANSACTION_SUCCESS.getCode().equals(eventType)) { + PartnerTransactionsNotifyResult notifyResult = wxService.getEcommerceService().parsePartnerNotifyResult(notifyData, signatureHeader); + PartnerTransactionsResult result = notifyResult.getResult(); + // 支付通知回调 + if ("SUCCESS".equals(result.getTradeState())) { + orderService.payBack(result); + } + resultMessage = GSON.toJson(notifyResult); + } else if (WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType) + || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType) + || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)) { + + RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader); + orderService.orderRefundBack(result); + resultType = 2; + resultMessage = GSON.toJson(result); + } + + }catch (Exception e){ + log.info("微信支付/退款通知异常: {}", e.getMessage()); } // 保存支付/退款回调信息 backMessageService.saveBackMessage(resultType, resultMessage); - return WxPayNotifyV3Response.success("成功"); } @@ -103,19 +110,23 @@ log.info("微信分账通知: {}", notifyData); // 获取请求头 - SignatureHeader signatureHeader = getSignatureHeader(response); - + SignatureHeader signatureHeader = getSignatureHeader(request); ProfitSharingNotifyNewResult notifyResult = getProfitSharingNotifyData(notifyData, signatureHeader); ProfitSharingNotifyResult result = notifyResult.getResult(); + String eventType = "-1"; + String resultMessage = notifyData; + try { + eventType = notifyResult.getRawData().getEventType(); + if (WxPayNotifyEventTypeEnum.PROFIT_SHARING_SUCCESS.getCode().equals(eventType)) { + // 分账通知回调 + orderService.profitSharingBack(result); + } - String eventType = notifyResult.getRawData().getEventType(); - if(WxPayNotifyEventTypeEnum.PROFIT_SHARING_SUCCESS.getCode().equals(eventType)){ - // 分账通知回调 - orderService.profitSharingBack(result); + resultMessage = GSON.toJson(notifyResult); + }catch (Exception e){ + log.info("微信分账通知通知异常: {}", e.getMessage()); } - - String resultMessage = GSON.toJson(notifyResult); // 保存记录分账回调信息 backMessageService.saveBackMessage(3, resultMessage); @@ -166,12 +177,12 @@ beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned()); } - private SignatureHeader getSignatureHeader(HttpServletResponse response){ + private SignatureHeader getSignatureHeader(HttpServletRequest request){ SignatureHeader signatureHeader = new SignatureHeader(); - signatureHeader.setSerialNo(response.getHeader(WECHAT_PAY_SERIAL)); - signatureHeader.setSigned(response.getHeader(WECHAT_PAY_SIGNATURE)); - signatureHeader.setNonce(response.getHeader(WECHAT_PAY_NONCE)); - signatureHeader.setTimeStamp(response.getHeader(WECHAT_PAY_TIMESTAMP)); + signatureHeader.setSerialNo(request.getHeader(WECHAT_PAY_SERIAL)); + signatureHeader.setSigned(request.getHeader(WECHAT_PAY_SIGNATURE)); + signatureHeader.setNonce(request.getHeader(WECHAT_PAY_NONCE)); + signatureHeader.setTimeStamp(request.getHeader(WECHAT_PAY_TIMESTAMP)); log.info("timeStamp:{} nonce : {} signed:{} serialNo:{}", signatureHeader.getTimeStamp(), -- Gitblit v1.7.1