微信支付 支付验证签名失败

公众号支付,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,那么回传的签名方式是哪种呢?和统一下单接口同一种签名方式!!!

你可能感兴趣的:(微信支付 支付验证签名失败)