微信支付,apache-commons
InputStream input = request.getInputStream();
String content = IOUtils.toString(input);
Map<String, String> params = WXPayUtil.xmlToMap(content);
回调地址中签名失败:isPayResultNotifySignatureValid,返回false
但是isResponseSignatureValid,返回true
isPayResultNotifySignatureValid方法中sign_type属性缺失时,默认选择SignType.MD5
而之前统一下订单中,使用了默认的构造函数,useSandbox默认为false,使用是SignType.HMACSHA256;
前后SignType不一样,导致签名失败
public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox) throws Exception {
this.config = config;
this.notifyUrl = notifyUrl;
this.autoReport = autoReport;
this.useSandbox = useSandbox;
if (useSandbox) {
this.signType = SignType.MD5; // 沙箱环境
}
else {
this.signType = SignType.HMACSHA256;
}
this.wxPayRequest = new WXPayRequest(config);
}