masyasmv / finam-sdk-laravel
PHP SDK for Finam Trade API with Laravel integration (REST).
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/masyasmv/finam-sdk-laravel
Requires
- php: ^8.0
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- illuminate/contracts: ^8.0
- illuminate/support: ^8.0
- psr/log: ^1.1 || ^2.0 || ^3.0
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^6.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2025-12-15 22:03:09 UTC
README
Неофициальный SDK для работы с Finam Trade API (REST) с удобной интеграцией в Laravel 8+.
Документация API: https://tradeapi.finam.ru/docs/about/
Содержание
Зачем этот пакет
Цель — дать удобный, типизированный, расширяемый SDK для взаимодействия с Finam Trade API из PHP/Laravel проектов.
Фокус:
- простой старт;
- аккуратный транспортный слой (REST);
- нормальные исключения и предсказуемое поведение;
- удобная интеграция в контейнер Laravel.
Возможности
На текущем этапе пакет предоставляет базовую инфраструктуру:
- автоподключение Service Provider (Laravel package auto-discovery);
- конфигурация через
config/finam.phpи переменные окружения; - базовый REST-клиент на Guzzle с таймаутами и простыми ретраями;
- тестовый стенд (Orchestra Testbench) для package-level тестов.
Важно: это SDK. Бизнес-логика торговли, риск-менеджмент и «правильные решения» не входят в пакет.
Требования
- PHP:
>= 8.0 - Laravel:
>= 8.0 - ext-json
Установка
Из Packagist
composer require masyasmv/finam-sdk-laravel
После этого:
composer update
Настройка
Пакет читает настройки из config('finam.*').
Рекомендуемый минимум в .env:
FINAM_BASE_URL=https://trade-api.finam.ru FINAM_TOKEN=your_token_here FINAM_HTTP_TIMEOUT=10 FINAM_HTTP_CONNECT_TIMEOUT=5 FINAM_HTTP_RETRIES=0 FINAM_HTTP_RETRY_DELAY_MS=200 FINAM_HTTP_USER_AGENT=finam-sdk-laravel
Примечание: конкретный формат авторизации (например,
Bearer <token>) и точный base url должны соответствовать требованиям Finam Trade API. Если формат отличается — правится в транспортном слое клиента.
Аутентификация
SDK поддерживает два драйвера авторизации, управляется через FINAM_AUTH_DRIVER:
token— статический токен (по умолчанию). ИспользуетFINAM_TOKENдля формирования заголовка авторизации;oauth— получениеaccess_tokenчерез Auth Service (client_credentials), кэшированиеaccess_tokenчерез кеш Laravel для уменьшения обращений к Auth API.
Пример конфигурации для OAuth-драйвера в .env:
FINAM_AUTH_DRIVER=oauth FINAM_AUTH_BASE_URL=https://trade-api.finam.ru FINAM_AUTH_TOKEN_ENDPOINT=/auth/oauth2/v1/token FINAM_AUTH_CLIENT_ID=your_client_id FINAM_AUTH_CLIENT_SECRET=your_client_secret FINAM_AUTH_GRANT_TYPE=client_credentials FINAM_AUTH_SCOPE="" FINAM_AUTH_CACHE_KEY=finam:auth:access_token FINAM_AUTH_CACHE_TTL=300
Параметры
cache_keyиcache_ttlуправляют кешированиемaccess_token(Redis/array). Если требуется отключить кеш — установи TTL в0.
Быстрый старт
Получить клиента из контейнера Laravel
use MasyaSmv\FinamSdk\Client\FinamClient; $client = app(FinamClient::class); // Пример GET $response = $client->get('/some/endpoint', [ 'param' => 'value', ]); // Пример POST $response = $client->post('/some/endpoint', [ 'foo' => 'bar', ]); $body = (string) $response->getBody();
Через алиас контейнера
$client = app('finam.sdk');
Публикация конфига
Если хочешь скопировать конфиг пакета в приложение:
php artisan vendor:publish --tag=finam-config
Файл появится как config/finam.php.
Тесты и статический анализ
Запуск тестов:
composer test
Запуск PHPStan:
composer analyse
Если ты используешь GitHub Actions, workflow
CIобычно запускает и тесты, и статический анализ.
Версионирование
Пакет следует семантическому версионированию (SemVer):
0.x— активная разработка, API может меняться;1.0.0— стабилизация публичного API.
Безопасность
- Никогда не коммить токены/секреты в репозиторий.
- Храни токены только в
.env/ секретах CI. - При логировании ошибок не выводи токен целиком.
Если ты нашёл уязвимость или утечку секретов — создай приватное уведомление (security advisory) или issue без секретов.
Contributing
PR приветствуются.
Рекомендации:
- добавляй тесты на новые сценарии;
- держи публичный API стабильным;
- избегай жёсткой привязки к конкретному приложению (SDK должен оставаться универсальным).
License
MIT. См. файл LICENSE.