Лучший способ справиться с веб-крючками с помощью Laravel и его структура - добавить промежуточное программное обеспечение для проверки подписи веб-крючка:
public function handle($request, Closure $next)
{
$signature = $request->header('Webhook-Signature');
if (!$signature) {
throw WebhookFailed::missingSignature();
}
if (!$this->isValid($signature, $request->getContent(), $request->route('configKey'))) {
throw WebhookFailed::invalidSignature($signature);
}
return $next($request);
}
Метод isValid
проверяет подпись webhook и ваш сохраненный секрет.
Затем на вашем контроллере вы можете обрабатывать события, поступающие из веб-крючка (помните, что Gocardless может отправлять более одного события в одном запросе веб-крючка).
public function __invoke(Request $request)
{
$payload = $request->input();
foreach ($payload['events'] as $event) {
// Do whatever do you need with the events.
}
}
return response()->json(['message' => 'ok']);
}
Мы создали пакет для Laravel, который может помочь вам с обработкой и обработкой Gocardless webhooks.
Nestednet / Gocardless-Laravel