优化微信V3回调 获取参数

This commit is contained in:
zhuxiao 2021-06-28 18:58:28 +08:00
parent 43b46d31a7
commit 34feebb5b1
3 changed files with 25 additions and 5 deletions

View File

@ -26,6 +26,9 @@ import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Map;
@ -46,6 +49,23 @@ public class RequestKitBean {
/** reqContext对象中的key: 转换好的json对象 */
private static final String REQ_CONTEXT_KEY_PARAMJSON = "REQ_CONTEXT_KEY_PARAMJSON";
/**request.getParameter 获取参数 并转换为JSON格式 **/
public String getReqParamFromBody() {
String body = "";
try {
String str;
while((str = request.getReader().readLine()) != null){
body += str;
}
return body;
} catch (Exception e) {
log.error("请求参数转换异常! params=[{}]", body);
throw new BizException(ApiCodeEnum.PARAMS_ERROR, "转换异常");
}
}
/**request.getParameter 获取参数 并转换为JSON格式 **/
public JSONObject reqParam2JSON() {

View File

@ -72,8 +72,8 @@ public abstract class AbstractChannelNoticeService implements IChannelNoticeServ
}
/**request.getParameter 获取参数 并转换为JSON格式 **/
protected JSONObject reqParam2JSON() {
return requestKitBean.reqParam2JSON();
protected String getReqParamFromBody() {
return requestKitBean.getReqParamFromBody();
}
/** 获取文件路径 **/

View File

@ -198,9 +198,9 @@ public class WxpayChannelNoticeService extends AbstractChannelNoticeService {
header.setSignature(request.getHeader("Wechatpay-Signature"));
// 获取加密信息
JSONObject params = reqParam2JSON();
String params = getReqParamFromBody();
log.info("\n【请求头信息】{}\n【加密数据】{}", header.toString(), params.toJSONString());
log.info("\n【请求头信息】{}\n【加密数据】{}", header.toString(), params);
WxPayService wxPayService = mchAppConfigContext.getWxServiceWrapper().getWxPayService();
WxPayConfig wxPayConfig = wxPayService.getConfig();
@ -212,7 +212,7 @@ public class WxpayChannelNoticeService extends AbstractChannelNoticeService {
wxPayConfig.setVerifier(verifier);
wxPayService.setConfig(wxPayConfig);
WxPayOrderNotifyV3Result result = wxPayService.parseOrderNotifyV3Result(params.toJSONString(), header);
WxPayOrderNotifyV3Result result = wxPayService.parseOrderNotifyV3Result(params, header);
return result.getResult();
}