公众号支付,WeixinJSBridge.invoke()方法,返回错误:支付验证签名失败
检查后台签名参数、支付密钥均正确,却还是错误,最后询问微信支付技术才解决,问题所在就是微信给的java sdk有问题。问题解决就是:全部使用MD5加密的方式,不用去理睬什么环境。
java sdk v3版:
初始化WXPay方法:
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);
}
正式环境下的签名方式使用HMACSHA256,这就导致了统一下单时也使用HMACSHA256签名,然而WeixinJSBridge.invoke()方法的签名方式,只支持MD5,2者签名方式不同,造成最终的“支付验证签名失败”错误。
另外一个坑:
微信的支付回调,也就是“支付结果通知“,回传参数中并不包含sign_type,那么回传的签名方式是哪种呢?和统一下单接口同一种签名方式!!!
”