Przeglądaj źródła

cs

release_toaliyun_real
xhxu 4 lat temu
rodzic
commit
8db4416e47
2 zmienionych plików z 36 dodań i 20 usunięć
  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 Wyświetl plik

@@ -17,12 +17,17 @@ import com.iformall.service.WxMallService;
import com.iformall.service.WxPayAccountService; import com.iformall.service.WxPayAccountService;
import com.iformall.utils.MaUtil; import com.iformall.utils.MaUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;


import javax.servlet.http.HttpServletRequest; 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.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.HashMap; import java.util.HashMap;
@@ -68,8 +73,6 @@ public class WxBusinessOrderController extends BaseController {
header.setSigned(request.getHeader("Wechatpay-Signature")); header.setSigned(request.getHeader("Wechatpay-Signature"));


logger.info("微信商圈支付通知---header{}"+header.toString()); logger.info("微信商圈支付通知---header{}"+header.toString());
String body = ((BodyReaderHttpServletRequestWrapper) request).getBody();
logger.info("微信商圈支付通知---body{}"+body);


TenantEntity tenantEntity = wxMallService.getByTenantId(tenantId); TenantEntity tenantEntity = wxMallService.getByTenantId(tenantId);
if(tenantEntity == null){ if(tenantEntity == null){
@@ -79,6 +82,8 @@ public class WxBusinessOrderController extends BaseController {
} }


try { try {
String body = this.getBody(request);
logger.info("微信商圈支付通知---body{}"+body);
WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantId); WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantId);
if(wxPayService == null){ if(wxPayService == null){
logger.error("微信商圈通知-----获取wxPayService失败"); 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 Wyświetl plik

@@ -16,8 +16,7 @@ public class UrlCheck {
|| url.contains("/wxCUserBasicInfo/listByFilter") || url.contains("/wxCUserBasicInfo/listByFilter")
|| url.contains("wxMsgCallback") || url.contains("wxMsgCallback")
|| url.contains("notify") || url.contains("notify")
|| url.contains("pvlog")
|| url.contains("/business/circle");
|| url.contains("pvlog");
} }


} }

Ładowanie…
Anuluj
Zapisz