当前位置 博文首页 > RunningOnMyWay的博客:nodejs实现微信支付成功后-异步通知验签
废话不多说直接上代码:
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;