isEnabled()) { return true; } $secret = (string) config('services.recaptcha.secret', ''); if ($secret === '' || $token === '') { return false; } try { /** @var \Illuminate\Http\Client\Response $response */ $response = Http::asForm() ->timeout((int) config('services.recaptcha.timeout', 5)) ->post((string) config('services.recaptcha.verify_url'), [ 'secret' => $secret, 'response' => $token, 'remoteip' => $ip, ]); if ($response->status() < 200 || $response->status() >= 300) { return false; } $payload = json_decode((string) $response->body(), true); return (bool) data_get(is_array($payload) ? $payload : [], 'success', false); } catch (\Throwable $e) { Log::warning('recaptcha verification request failed', [ 'message' => $e->getMessage(), ]); return false; } } }