【问题标题】:Unable to setup webhook in xero?无法在 xero 中设置 webhook?
【发布时间】: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


    【解决方案1】:

    Xero 提供了一个 typescript 示例应用程序,用于实现 webhook 签名验证。

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

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

    【讨论】:

    • 我创建了一个虚拟应用程序来测试 webhook。我一定会创建新的应用程序
    • 我使用相同的方法来计算哈希,但哈希还是不同的,你能说出原因吗
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多