当前位置 博文首页 > RunningOnMyWay的博客:nodejs实现微信支付成功后-异步通知验签

    RunningOnMyWay的博客:nodejs实现微信支付成功后-异步通知验签

    作者:[db:作者] 时间:2021-06-23 15:09

    废话不多说直接上代码:

       var crypto = require("crypto");
    //1.response为POST请求中body的获取参数,结构为{"xml":{...}}
        let sign = response.xml.sign;//提前单独拿出请求参数中的签名
        console.log("开始微信验签"+sign);
        delete response.xml.sign;//删除json中的sign参数,生成签名时不用它
        //2.字典排序
        let keys = Object.keys(response.xml).sort();
        let params = [];
        for (let i = 0; i < keys.length; i++) {
            let v = keys[i];
            params.push(v+"="+response.xml[v]);
        }
        params.push("key=【拼接上支付密钥】");
        let str = params.join("&");
        //3.根据拼接结果生成MD5签名
        var sign2 = crypto.createHash("md5").update(str).digest('hex').toUpperCase();
        //4.将生成结果与请求参数中的sign对比
        console.log("--sign--"+sign2);
        console.log("--验签结果--"+(sign2===sign));
        return sign2===sign;