我无法使用“shopify-node-api”验证来自 shopify 的 webhook 响应。我正在使用以下代码来验证签名。
以下代码位于 app.js 上
app.use(bodyParser.json({
type:'application/json',
limit: '50mb',
verify: function(req, res, buf, encoding) {
if (req.url.startsWith('/webhook')){
req.rawbody = buf;
}
}
})
);
app.use("/webhook", webhookRouter);
Run Code Online (Sandbox Code Playgroud)
下面是 webhook.router.js
router.post('/orders/create', verifyWebhook, async (req, res) => {
console.log(' We got an order')
res.sendStatus(200)
});
Run Code Online (Sandbox Code Playgroud)
下面为验证函数
function verifyWebhook(req, res, next) {
let hmac;
let data;
try {
hmac = req.get("X-Shopify-Hmac-SHA256");
data = req.rawbody;
} catch (e) {
console.log(`Webhook request failed from: ${req.get("X-Shopify-Shop-Domain")}`);
res.sendStatus(200);
}
if (verifyHmac(JSON.stringify(data), hmac)) { // Problem …Run Code Online (Sandbox Code Playgroud)