正确地将主体为空的 200 响应发送到 WebHook。提供的最小示例

Correctly send a 200 response with an empty body to a WebHook. Minimal example provided

根据一些在线示例,我将 return 对正确签名的有效载荷进行 200 响应,对错误签名或格式错误的有效载荷进行 401 响应。

以下最小示例已经过测试。

正在正确生成签名,checkHash() 函数正确识别 signed/formed 有效载荷。

我从端点得到的反馈是响应包含正文。给出的建议 here 是从响应正文中删除所有内容 - 但据我所知,我 return 是作为回声的文字响应,即 200401.

$key = 'abcSomeKey';    
$rawPayload = file_get_contents("php://input");
checkHash();

function getSignature() {
    return base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
}

function checkHash() {
    $signature = getSignature();

    if($signature === $_SERVER['HTTP_X_XERO_SIGNATURE']) {
        echo 200;
    }
    else {
        echo 401;
    }
}

我不太了解php,但有两个错误。签名验证在功能块内未按预期工作。 $rawPayloadgetSignature() 函数中的空字符串。

此外,我天真地返回了下面格式正确的响应代码。

$key = "someKey";
$rawPayload = file_get_contents("php://input");
$signature = base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
$authKey = $_SERVER['HTTP_X_XERO_SIGNATURE'];

if($signature === $authKey)
{
    http_response_code(200);
}   
else
{
    http_response_code(401);
}