Я использую laravel 5.3 с API GoCardless и пытаюсь создать конечные точки, чтобы мое приложение могло соответствующим образом обрабатывать события.
Я читаю документацию 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!');
};}
но я не могу сделать так, чтобы $ обеспеченная_сигнала соответствовала $ рассчитанной_сигнатуре, у меня такое ощущение, что это связано с тем, как я хэширую токен из моего файла env.
Ребята решили, все что мне нужно было сделать, это заменить
$raw_payload = $request;
с
$raw_payload = $request->getContent();
Других решений пока нет …