ex3mm / kontur-focus-api
PHP-клиент для API Kontur.Focus с поддержкой Laravel и автономного (standalone) PHP.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/ex3mm/kontur-focus-api
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- psr/cache: ^3.0
- psr/log: ^3.0
- psr/simple-cache: ^3.0
Requires (Dev)
- laravel/framework: ^10.0|^11.0
- mockery/mockery: ^1.5
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
README
PHP пакет для работы с API Контур.Фокус с поддержкой Laravel и чистого PHP.
Возможности
- Поддержка всех 9 основных эндпоинтов API Контур.Фокус
- Работает в Laravel и чистом PHP
- Автоматическое кеширование
- Логирование запросов и ответов
- Retry механизм
- Обработка Rate Limiting
- Удобные алиасы методов
- PHP 8.1+
Требования
- PHP 8.1+
- Guzzle HTTP Client 7.0+
Установка
composer require ex3mm/kontur-focus-api
Быстрый старт
Laravel
1. Публикация конфигурации
php artisan vendor:publish --tag=kontur-focus-config
2. Настройка .env
KONTUR_FOCUS_API_KEY=your-api-key KONTUR_FOCUS_CACHE_ENABLED=true KONTUR_FOCUS_LOGGING_ENABLED=true KONTUR_FOCUS_LOG_CHANNEL=kontur-focus
3. Использование
use Ex3mm\KonturFocusApi\Laravel\Facades\KonturFocus; // Удобные алиасы (рекомендуется) $company = KonturFocus::basicInfo('7707083893'); $details = KonturFocus::egr('7707083893'); $risks = KonturFocus::risks('7707083893'); $bankruptcy = KonturFocus::bankruptcy('7707083893'); // Оригинальные названия endpoint'ов $company = KonturFocus::req('7707083893'); $details = KonturFocus::egrDetails('7707083893'); $risks = KonturFocus::legalAnalytics('7707083893');
Чистый PHP
use Ex3mm\KonturFocusApi\Client; use Ex3mm\KonturFocusApi\Config\Configuration; $config = new Configuration(['api_key' => 'your-api-key']); $client = new Client($config); // Прямой запрос к API $response = $client->request('GET', 'req', ['inn' => '7707083893']); $data = $response->toArray();
Конфигурация
Чистый PHP
$config = new Configuration([ 'api_key' => 'your-api-key', // Обязательно 'base_url' => 'https://focus-api.kontur.ru/api3/', 'timeout' => 30, 'retry_attempts' => 3, 'retry_delay' => 1, 'cache_enabled' => true, 'cache_ttl' => 3600, 'logging_enabled' => true, 'rate_limit_behavior' => 'wait', // 'wait' или 'throw' ]);
Laravel (.env)
KONTUR_FOCUS_API_KEY=your-api-key KONTUR_FOCUS_BASE_URL=https://focus-api.kontur.ru/api3/ KONTUR_FOCUS_TIMEOUT=30 KONTUR_FOCUS_RETRY_ATTEMPTS=3 KONTUR_FOCUS_RETRY_DELAY=1 KONTUR_FOCUS_CACHE_ENABLED=true KONTUR_FOCUS_CACHE_TTL=3600 KONTUR_FOCUS_LOGGING_ENABLED=true KONTUR_FOCUS_LOG_CHANNEL=kontur-focus KONTUR_FOCUS_RATE_LIMIT_BEHAVIOR=wait
Использование
Упрощенный синтаксис (Laravel Facade)
Удобные алиасы (рекомендуется)
// Базовые реквизиты $company = KonturFocus::basicInfo($inn); $company = KonturFocus::basicInfo($inn, $ogrn); // Расширенные сведения ЕГРЮЛ/ЕГРИП $details = KonturFocus::egr($inn); $details = KonturFocus::egr($inn, $ogrn); // Исполнительные производства ФССП $fssp = KonturFocus::fssp($inn); // Банкротство $bankruptcy = KonturFocus::bankruptcy($inn); // Арбитражные дела $arbitration = KonturFocus::arbitration($inn); // Закупки и тендеры $tenders = KonturFocus::tenders($inn); // Связанные организации $analytics = KonturFocus::analytics($inn); // Юридические риски $risks = KonturFocus::risks($inn); // Финансовый анализ $finance = KonturFocus::finance($inn); $finance = KonturFocus::finance($inn, 2023);
Оригинальные названия endpoint'ов
// Базовые реквизиты $company = KonturFocus::req($inn); $company = KonturFocus::req($inn, $ogrn); // Расширенные сведения на основе ЕГРЮЛ/ЕГРИП $details = KonturFocus::egrDetails($inn); $details = KonturFocus::egrDetails($inn, $ogrn); // Юридические признаки $legal = KonturFocus::legalAnalytics($inn); // Признаки банкротства $bankruptcy = KonturFocus::bankruptcyAnalytics($inn); // Оценка арбитражных дел и судов общей юрисдикции $court = KonturFocus::courtAnalytics($inn); // Оценка по финансам и налогам $finance = KonturFocus::financeAnalytics($inn); $finance = KonturFocus::financeAnalytics($inn, 2023); // Оценка исполнительных производств $fssp = KonturFocus::fsspAnalytics($inn); // Оценка по связанным организациям $links = KonturFocus::linkAnalytics($inn); // Оценка по госзакупкам и вхождение в РНП $purchases = KonturFocus::purchasesAnalytics($inn);
Прямой запрос к API
// Через фасад $response = KonturFocus::request('GET', 'req', ['inn' => '7707083893']); $data = $response->toArray(); // Через клиент $client = app(\Ex3mm\KonturFocusApi\Client::class); $response = $client->request('GET', 'egrDetails', [ 'inn' => '7707083893', 'ogrn' => '1027700132195' ]); $data = $response->toArray();
Доступные методы
Все методы API Контур.Фокус версии 3.0
Основные endpoint'ы (9 методов)
| Метод | Endpoint | Описание |
|---|---|---|
req($inn, $ogrn?) |
/req |
Базовые реквизиты |
egrDetails($inn, $ogrn?) |
/egrDetails |
Расширенные сведения на основе ЕГРЮЛ/ЕГРИП |
legalAnalytics($inn) |
/legalAnalytics |
Юридические признаки |
bankruptcyAnalytics($inn) |
/bankruptcyAnalytics |
Признаки банкротства |
courtAnalytics($inn) |
/courtAnalytics |
Оценка арбитражных дел и судов общей юрисдикции |
financeAnalytics($inn, $year?) |
/financeAnalytics |
Оценка по финансам и налогам |
fsspAnalytics($inn) |
/fsspAnalytics |
Оценка исполнительных производств |
linkAnalytics($inn) |
/linkAnalytics |
Оценка по связанным организациям |
purchasesAnalytics($inn) |
/purchasesAnalytics |
Оценка по госзакупкам и вхождение в РНП |
Удобные алиасы
| Алиас | Вызывает метод | Описание |
|---|---|---|
basicInfo($inn, $ogrn?) |
req() |
Базовые реквизиты |
egr($inn, $ogrn?) |
egrDetails() |
Расширенные сведения ЕГРЮЛ |
fssp($inn) |
fsspAnalytics() |
Исполнительные производства |
bankruptcy($inn) |
bankruptcyAnalytics() |
Банкротство |
arbitration($inn) |
courtAnalytics() |
Арбитражные дела |
tenders($inn) |
purchasesAnalytics() |
Закупки и тендеры |
analytics($inn) |
linkAnalytics() |
Связанные организации |
risks($inn) |
legalAnalytics() |
Юридические риски |
finance($inn, $year?) |
financeAnalytics() |
Финансовый анализ |
Официальная документация API: https://focus-api.kontur.ru/api3/
Обработка ошибок
use Ex3mm\KonturFocusApi\Exceptions\{ RateLimitException, ApiException, AuthenticationException, NetworkException }; try { $company = KonturFocus::company('7707083893'); } catch (RateLimitException $e) { $retryAfter = $e->getRetryAfter(); echo "Retry after {$retryAfter} seconds"; } catch (AuthenticationException $e) { echo "Authentication failed: " . $e->getMessage(); } catch (NetworkException $e) { echo "Network error: " . $e->getMessage(); } catch (ApiException $e) { echo "API error: " . $e->getMessage(); }
Кеширование и логирование
Чистый PHP
use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Psr16Cache; use Monolog\Logger; use Monolog\Handler\StreamHandler; $cache = new Psr16Cache(new FilesystemAdapter()); $logger = new Logger('kontur-focus'); $logger->pushHandler(new StreamHandler('path/to/your.log')); $client = new Client($config, $cache, $logger);
Laravel
Кеш и логгер подключаются автоматически через Laravel Cache и Log.
Примеры использования
Контроллер Laravel
use Ex3mm\KonturFocusApi\Laravel\Facades\KonturFocus; class CompanyController extends Controller { public function show(string $inn) { try { $data = [ 'company' => KonturFocus::basicInfo($inn), 'details' => KonturFocus::egr($inn), 'risks' => KonturFocus::risks($inn), 'bankruptcy' => KonturFocus::bankruptcy($inn), 'arbitration' => KonturFocus::arbitration($inn), ]; return view('company.show', $data); } catch (\Exception $e) { return back()->withErrors(['error' => $e->getMessage()]); } } }
Dependency Injection
use Ex3mm\KonturFocusApi\Client; class CompanyService { public function __construct(private Client $konturFocus) {} public function getCompanyData(string $inn): array { $response = $this->konturFocus->request('GET', 'req', ['inn' => $inn]); return $response->toArray(); } public function getFullReport(string $inn): array { return [ 'basic' => $this->konturFocus->request('GET', 'req', ['inn' => $inn])->toArray(), 'details' => $this->konturFocus->request('GET', 'egrDetails', ['inn' => $inn])->toArray(), 'legal' => $this->konturFocus->request('GET', 'legalAnalytics', ['inn' => $inn])->toArray(), ]; } }
Документация API
Официальная документация: https://focus-api.kontur.ru/api3/req/
Лицензия
MIT License