xhxu 4 лет назад
Родитель
Сommit
8db4416e47
2 измененных файлов: 36 добавлений и 20 удалений
  1. +35
    -18
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java
  2. +1
    -2
      mallinkCallback/src/main/java/com/iformall/utils/UrlCheck.java

+ 35
- 18
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();
}

}

+ 1
- 2
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");
}

}

Загрузка…
Отмена
Сохранить