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

v1.0.0 2026-02-19 14:05 UTC

This package is auto-updated.

Last update: 2026-02-19 14:09:33 UTC


README

Latest Version Total Downloads License PHP Version

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