|
|
|
@@ -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(); |
|
|
|
} |
|
|
|
|
|
|
|
} |