我正在使用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,我感觉这与我从我的环境中渲染令牌的方式有关文件。
答案 0 :(得分:1)
解决了这些人,我需要做的就是替换
$raw_payload = $request;
与
$raw_payload = $request->getContent();