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

时间:2018-03-28 03:34:56

标签: php webhooks xero-api

在线跟踪一些示例后,我将为正确签名的有效负载返回200响应,对错误签名或格式错误的有效负载返回401响应。

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

正确生成签名,checkHash()函数标识正确签名/形成的有效负载。

我从端点获得的反馈是响应包含正文。给出here的建议是从响应的主体中删除所有内容 - 但据我所知,我所返回的是作为回声的字面响应,即 200 401

$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;
    }
}

1 个答案:

答案 0 :(得分:1)

我不太了解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);
}