【发布时间】:2019-12-09 06:05:46
【问题描述】:
我正在尝试在 Xero 中设置 webhook。我创建了一个 Xero 命中并发送一些标头和有效负载的端点。我从标头中提取哈希并与有效负载的哈希匹配,但我从未得到相同的哈希。我正在使用下面的代码来做到这一点。
router.post('/weebhook', function(req, res, next) {
console.log(req.headers)
console.dir(req.body);
try {
var xero_signature = req.headers['x-xero-signature']
var encoded_data = encodePayload(req.body)
console.log(xero_signature)
console.log(encoded_data)
if (encoded_data == xero_signature) {
res.status(200).json();
} else {
res.status(401).json();
}
}catch(eror) {
console.log(eror)
}
});
function encodePayload(payload) {
console.log(JSON.stringify(payload))
const secret = 'TbJjeMSPAvJiMiD2WdHbjP20iodKCA3bL5is8vo47/pCcuGCsjtUDb7cBnWo20e0TBwZsQ/lPM41QgypzZE6lQ==';
const hash = crypto.createHmac('sha256',secret,true)
.update(JSON.stringify(payload))
.digest().toString('base64');
return hash
}
- Xero 哈希 - NzQOq6yw6W6TKs1sQ1AJtMWX24uzzkyvh92fMxukreE=
- 我的哈希 - L74zFdcuRsK3zHmzu9K37Y1mAVIAIsDgneAPHaJ+vI4=
请告诉我是什么问题?
【问题讨论】:
标签: node.js hash webhooks xero-api