微信支付返回支付签名验证失败
相信大家已经深深的被微信JSAPI支付的坑所深深的伤透了,在用了微信官方的签名校验工具,已经一个一个字母的校验后,还是返回了这个错误,这真的让人很是头疼,不如咱们检查一下后台,统一下单时出现的问题.
这是正常的初始化微信支付类
WXPay wxPay = new WXPay(wxPayConfigImp);
咱们看一下初始化的函数
public WXPay(final WXPayConfig config) throws Exception {
this(config, null, true, false);
}
调用了自身的初始化方法咱们继续看
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;
}
//因为这个判断,所以我直接偷懒在这个if后直接又将signType赋值为MD5
this.signType = SignType.MD5;
this.wxPayRequest = new WXPayRequest(config);
}
注意这个if判断,当useSandbox为true时,才是MD5的加密方式,否则就是SHA256,这个在MAP的put(“sign_type”,“MD5”)也没用,因为咱们通过这个调用的统一下单方法.所以呢,在这个IF后 我将signType又设置为了MD5或者在初始化方法时使用
public WXPay(final WXPayConfig config, final boolean autoReport, final boolean useSandbox) throws Exception{
this(config, null, autoReport, useSandbox);
}
//调用这个初始化方法
WXPay wxpay = new WXPay(wxPayConfigImp,true,true);