验证laravel中的whatsapp webhooks Payloads

gblwokeq  于 2022-10-22  发布在  PHP
关注(0)|答案(1)|浏览(159)

我正在尝试使用.Facebook developer docs中的步骤验证whatsappwebhooks中webhook有效载荷的内容,
我不明白这是什么意思
请注意,我们使用有效载荷的转义unicode版本(小写十六进制数字)生成签名。如果你只是根据解码的字节进行计算,你会得到一个不同的签名。例如,字符串äöå应转义为\u00e4\u00f6\u00e 5。
这就是为什么我在比较哈希值时总是得到错误,我想在php/laravel中得到它。
有时我试着用

$knownSignature = (new UnicodeString($request->getContent()))->normalize(UnicodeString::NFKC);

$knownSignature = Str::ascii($request->getContent());

但仍然不匹配。当我试图转换äöåit仍然输出\u00e4\u00f6\u00e 5时发生的事件
这是Symfoni和Laravel的文档,用于转义unicode字符串

iszxjhcz

iszxjhcz1#

我做的就像@CBroe说的那样,它在我之前的函数中不起作用,但当我这样做时,它就起作用了

protected function validatePayloads(string $waSignature,string $payloads){
    $receivedSignature = explode('=', $waSignature)[1];

    $generatedSignature = hash_hmac(
        'sha256',
        $payloads,
        config('app.app_secret')
    );

    if($receivedSignature == $generatedSignature){
        return true;
    }else{
        return false;
    }
}

就像@CBroe说的,你需要散列原始请求

相关问题