From 8db4416e47f1622b5787017311febc541a79767a Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 29 Jul 2021 16:25:09 +0800 Subject: [PATCH] cs --- .../callback/WxBusinessOrderController.java | 53 ++++++++++++------- .../java/com/iformall/utils/UrlCheck.java | 3 +- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java index be22af5ec..fb4370008 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java @@ -17,12 +17,17 @@ import com.iformall.service.WxMallService; import com.iformall.service.WxPayAccountService; import com.iformall.utils.MaUtil; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.web.servlet.ShiroHttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.HashMap; @@ -68,8 +73,6 @@ public class WxBusinessOrderController extends BaseController { header.setSigned(request.getHeader("Wechatpay-Signature")); logger.info("微信商圈支付通知---header{}"+header.toString()); - String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); - logger.info("微信商圈支付通知---body{}"+body); TenantEntity tenantEntity = wxMallService.getByTenantId(tenantId); if(tenantEntity == null){ @@ -79,6 +82,8 @@ public class WxBusinessOrderController extends BaseController { } try { + String body = this.getBody(request); + logger.info("微信商圈支付通知---body{}"+body); WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantId); if(wxPayService == null){ logger.error("微信商圈通知-----获取wxPayService失败"); @@ -162,22 +167,34 @@ public class WxBusinessOrderController extends BaseController { } - - /** - * 验签 - */ - private BusinessCircleNotifyData verifySignature(HttpServletRequest request,WxPayService wxPayService) throws WxPayException{ - SignatureHeader header = new SignatureHeader(); - header.setSerialNo(request.getHeader("Wechatpay-Serial")); - header.setTimeStamp(request.getHeader("Wechatpay-Timestamp")); - header.setNonce(request.getHeader("Wechatpay-Nonce")); - header.setSigned(request.getHeader("Wechatpay-Signature")); - - String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); - logger.info("微信商圈支付通知---body{}"+body); - - return wxPayService.getBusinessCircleService().parseNotifyData(body, header); - + private String getBody(HttpServletRequest request) throws IOException { + StringBuilder stringBuilder = new StringBuilder(); + BufferedReader bufferedReader = null; + try { + InputStream inputStream = request.getInputStream(); + if (inputStream != null) { + bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); + char[] charBuffer = new char[1024]; + int bytesRead = -1; + while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { + stringBuilder.append(charBuffer, 0, bytesRead); + } + } else { + stringBuilder.append(""); + } + } catch ( + IOException ex) { + throw ex; + } finally { + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException ex) { + throw ex; + } + } + } + return stringBuilder.toString(); } } diff --git a/mallinkCallback/src/main/java/com/iformall/utils/UrlCheck.java b/mallinkCallback/src/main/java/com/iformall/utils/UrlCheck.java index 12146a3ca..2a4dcf90a 100644 --- a/mallinkCallback/src/main/java/com/iformall/utils/UrlCheck.java +++ b/mallinkCallback/src/main/java/com/iformall/utils/UrlCheck.java @@ -16,8 +16,7 @@ public class UrlCheck { || url.contains("/wxCUserBasicInfo/listByFilter") || url.contains("wxMsgCallback") || url.contains("notify") - || url.contains("pvlog") - || url.contains("/business/circle"); + || url.contains("pvlog"); } }