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

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

相信大家已经深深的被微信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);

使用这个方法,将useSandbox设置为true,然后重新调用统一下单和之后的签名生成与JS方法.成功的解决了签名失败的问题,希望可以帮到各位同志,也记录一下微信的那些坑.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值