WebhookController.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Services\WebhookService;
  4. use Illuminate\Http\JsonResponse;
  5. use Illuminate\Http\Request;
  6. class WebhookController extends Controller
  7. {
  8. public function __construct(
  9. private readonly WebhookService $webhookService,
  10. ) {}
  11. public function pagarme(Request $request): JsonResponse
  12. {
  13. if (! $this->validPagarmeToken($request)) {
  14. return $this->errorResponse(message: __('http.unauthorized_token'), code: 401);
  15. }
  16. $this->webhookService->handlePagarme($request->all());
  17. return $this->successResponse(message: __('http.webhook_received'));
  18. }
  19. private function validPagarmeToken(Request $request): bool
  20. {
  21. $configuredToken = config('services.pagarme.webhook_token');
  22. if (empty($configuredToken)) {
  23. return true;
  24. }
  25. $receivedToken = $request->bearerToken()
  26. ?: $request->header('X-Webhook-Token')
  27. ?: $request->query('token');
  28. return is_string($receivedToken) && hash_equals($configuredToken, $receivedToken);
  29. }
  30. }