【发布时间】:2019-12-31 00:31:22
【问题描述】:
我正在尝试在 webhook 中验证 Shopify 的 HMAC。这是我的控制器的外观:
newOrder: {
payload: {
parse: false
},
handler: function(request, reply) {
const hmac = request.headers['x-shopify-hmac-sha256'];
let generatedHash = crypto
.createHmac('sha256', utils.SHOPIFY_API_SECRET)
.update(JSON.stringify(request.payload))
.digest('base64');
if (generatedHash == hmac) {
console.log("Validated");
} else {
console.log("Not validated");
}
console.log(hmac, generatedHash.toString(), utils.SHOPIFY_API_SECRET)
reply().code(200);
},
auth: false,
notes: 'Shopifys new order webhook',
tags: ['api'],
id: 'newOrder'
}
但hmac 永远不会等于generatedHash。我认为它与 req.rawBody (来自 Express)有关,但我不知道如何从 Hapijs 获取相同的有效负载,或者我遗漏了一些东西。
我正在使用 HapiJs v14.0.0。
【问题讨论】:
标签: javascript shopify hapijs hapi