我使用的是无现金支付网关。一切正常,但我不知道如何验证webhooks签名。
这是他们要求的。如何为它编写javascript代码?
mrfwxfqh1#
感谢您的提醒。我们正在改进webhook文档。同时,验证webhook的步骤如下-1.从webhook端点获取有效负载1.生成签名1.验证签名。这里的有效负载指的是raw json主体,而不是bodyParser解析的内容。
raw
//Set up your server like this var express = require('express') var bodyParser = require('body-parser'); var crypto = require('crypto'); var app = express() //This part is to get the rawBody app.use( express.json({ limit: '5mb', verify: (req, res, buf) => { req.rawBody = buf.toString(); }, }) ); app.use(bodyParser.json()); //This is your endpoint app.post('/webhook', function(req, res) { console.log(req.rawBody); const ts = req.headers["x-webhook-timestamp"] const signature = req.headers["x-webhook-signature"] console.log("ts --> ", ts); console.log("expected sign --> ", signature); const genSignature = verify(ts, req.rawBody) if(signature === genSignature){ res.send('OK') } else { res.send("failed") } })
function verify(ts, rawBody){ const body = ts + rawBody const secretKey = "<your secret key>"; let genSignature = crypto.createHmac('sha256',secretKey).update(body).digest("base64"); return genSignature }
1条答案
按热度按时间mrfwxfqh1#
感谢您的提醒。我们正在改进webhook文档。同时,验证webhook的步骤如下-
1.从webhook端点获取有效负载
1.生成签名
1.验证签名。
这里的有效负载指的是
raw
json主体,而不是bodyParser解析的内容。正在获取有效负载
验证签名