微信支付回调参数获取及回调Url通知签名失败有关问题
微信支付回调参数获取及回调Url通知签名失败问题
微信支付,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); }