无法将本地令牌与传递的GoCardless令牌相匹配

时间:2017-01-19 21:49:07

标签: php laravel

我正在使用laravel 5.3和GoCardless API,并且我正在尝试构建端点,以便我的应用程序可以相应地处理事件。

我正在阅读GoCardless文档,并说它执行以下操作:

$token = getenv("GC_WEBHOOK_SECRET");

$raw_payload = file_get_contents('php://input');

$headers = getallheaders();
$provided_signature = $headers["Webhook-Signature"];

$calculated_signature = hash_hmac("sha256", $raw_payload, $token);

if ($provided_signature == $calculated_signature) {

} else {

};

我已将上述内容转换为Laravel友好控制器说话。

public function hook(Request $request)
    {

        $token = env("GC_WEBHOOK_SECRET");

        $raw_payload = $request;

        $provided_signature = $request->header('Webhook-Signature');
        $calculated_signature = hash_hmac("sha256", $raw_payload, $token);

        if ($provided_signature == $calculated_signature) {
            Log::info('It was a match!');
        } else {
            Log::info('Something went wrong!');
        };


    }

但是我无法获得$ provided_signature以匹配$ calculated_signature,我感觉这与我从我的环境中渲染令牌的方式有关文件。

1 个答案:

答案 0 :(得分:1)

解决了这些人,我需要做的就是替换

$raw_payload = $request;

$raw_payload = $request->getContent();