Я использую Bold Commerce Webhooks , чтобы подписаться на события подписки в моем магазине. Они предоставляют документацию о том, как их подписи запросов генерируются в PHP:
$now = time(); // current unix timestamp
$json = json_encode($payload, JSON_FORCE_OBJECT);
$signature = hash_hmac('sha256', $now.'.'.$json, $signingKey);
Я пытаюсь воссоздать ha sh на моей стороне в node.js. Из своего исследования я выяснил следующее, которое, как мне кажется, довольно близко, но еще не совпадает:
const hash = request.header("X-Bold-Signature")!;
const SECRET = "my-secret-api-key";
const body = request.body;
const time = request.header("timestamp")!;
const mySignature = crypto.createHmac('sha256', SECRET).update(time + '.' + body).digest("hex");
if (mySignature !== request.header("X-Bold-Signature")!) {
//...
}
Я также пробовал использовать JSON.stringify(body)
, который меняет ха sh, но все равно не совпадает.