无法在xero中设置webhook?

问题描述 投票:0回答:2

我正在尝试在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
2个回答
1
投票

[Xero提供了一个打字稿示例应用程序,用于实现webhooks签名验证。

这里的代码对您有帮助吗? https://github.com/XeroAPI/XeroWebhooksReceiver-Node/blob/master/src/server/server.ts#L58L59

[另外,请您删除并重新创建您的Webhook,因为您刚刚向所有人提供了秘密的Webhooks密钥。


0
投票

.update(JSON.stringify(payload))更改为.update(payload.toString())

© www.soinside.com 2019 - 2024. All rights reserved.