PHPackages                             smskin/tinkoff-invest-api-v2-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. smskin/tinkoff-invest-api-v2-php

ActiveLibrary

smskin/tinkoff-invest-api-v2-php
================================

Audited fork of Unofficial PHP SDK for T-Invest API v2

0.5.2(2mo ago)04↓100%Apache-2.0HTMLPHP &gt;=7.4.0

Since Mar 5Pushed 2mo agoCompare

[ Source](https://github.com/smskin/tinkoff-invest-api-v2-php)[ Packagist](https://packagist.org/packages/smskin/tinkoff-invest-api-v2-php)[ Docs](https://github.com/metaseller/tinkoff-invest-api-v2-php)[ RSS](/packages/smskin-tinkoff-invest-api-v2-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (2)Used By (0)

tinkoff-invest-api-v2-php
=========================

[](#tinkoff-invest-api-v2-php)

Unofficial PHP SDK for Tinkoff Invest API v2

Документация Tinkoff Invest Api для разработчиков доступна по ссылке:

Коммьюнити разработчиков в Telegram:

Введение
========

[](#введение)

Поскольку Tinkoff Invest API v2 в настоящее время позиционируется как gRPC-интерфейс для взаимодействия с торговой платформой Тинькофф Инвестиции, то первое, что нам понадобится - это документация по gRPC:

1. Quick start with PHP -&gt;
2. Basic tutorials -&gt;

Структура текущего репозитория:
===============================

[](#структура-текущего-репозитория)

```
etc - Директория, которая содержит сертификаты для подключения к сервису с использованием SSL
examples - Директория с примерами подключения к сервису и выполнением простейших запросов
library - Это фактически копия репозитория https://github.com/Tinkoff/investAPI/
library/src/docs/contracts - Директория, которая содержит proto файлы
src/models - Директория, которая содержит сгенерированные через protoc модели

```

Требования для установки
========================

[](#требования-для-установки)

Для начала работы нам потребуется:

- PHP 7.1 или новее (я делал и тестировал на php 7.4 / Ubuntu 18.04.5)
- PECL, Composer

ВАЖНО: Данный репозиторий содержит уже сгенерированные из proto файлов модели. Содержимое директории *library/src/docs/contracts* не используется.

Если Вы хотите генерировать модели самостоятельное, то вам необходимо:

1. Установить protoc
2. Собрать плагин grpc\_php\_plugin (см )
3. Вызвать что-нибудь типа:

```
sudo protoc --proto_path=~/contracts_dir/ --php_out=~/models_dic/ --grpc_out=~/models_dir/ --plugin=protoc-gen-grpc=./grpc_php_plugin ~/contracts_dir/*

```

подставив нужные вам директории.

Далее нам понадобится расширение grps.so для PHP ().

```
sudo pecl install grpc

```

а после не забываем в php.ini добавить

```
extension=grpc.so

```

А если вам необходимо логгировать исполнение, то можно также добавить в php.ini

```
grpc.grpc_verbosity=debug
grpc.grpc_trace=all,-polling,-polling_api,-pollable_refcount,-timer,-timer_check
grpc.log_filename=/var/log/grpc.log

```

Само собой не забыть

```
sudo touch /var/log/grpc.log
sudo chmod 666 /var/log/grpc.log

```

Устанавливаем через composer
============================

[](#устанавливаем-через-composer)

PS: Если вы планируете использовать в проекте, разработанном на Yii2 Framework, то можно воспользоваться оберткой [metaseller/tinkoff-invest-api-v2-yii2](https://packagist.org/packages/metaseller/tinkoff-invest-api-v2-yii2).

Ну либо устанавливаем SDK через [composer](http://getcomposer.org/download/)

```
$ composer require metaseller/tinkoff-invest-api-v2-php

```

ну или

```
$ git clone git@github.com:metaseller/tinkoff-invest-api-v2-php.git .
composer update

```

прописываем свой Tinkoff Invest API v2 token

```
$ vim examples/example.php

```

```
/**
 * Ваш токен доступа к API
 *
 * @see https://tinkoff.github.io/investAPI/token/
 */
$token = 't.ZEbUT................................................7dA';
```

и тестируем:

```
$ php examples/example.php

```

Тестовые примеры
================

[](#тестовые-примеры)

Можно использовать фабрику создания клиентов доступа к сервисам Tinkoff Invest Api V2

```
/**
 * Ваш токен доступа к API
 *
 * @see https://tinkoff.github.io/investAPI/token/
 */
$token = '';
$tinkoff_api = TinkoffClientsFactory::create($token);

/**
 * Создаем экземпляр запроса информации об аккаунте к сервису
 *
 * Запрос не принимает никаких параметров на вход
 *
 * @see https://tinkoff.github.io/investAPI/users/#getinforequest
 */
$request = new GetInfoRequest();

/**
 * @var GetInfoResponse $response - Получаем ответ, содержащий информацию о пользователе
 */
list($response, $status) = $tinkoff_api->usersServiceClient->GetInfo($request)->wait();

/** Выводим полученную информацию */
var_dump(['user_info' => [
    'prem_status' => $response->getPremStatus(),
    'qual_status' => $response->getQualStatus(),
    'qualified_for_work_with' => $response->getQualifiedForWorkWith(),
]]);

/**
 * @var GetInfoResponse $response - Получаем ответ, содержащий информацию о пользователе
 */
list($response, $status) = $tinkoff_api->usersServiceClient->GetInfo($request)->wait();

/** Выводим полученную информацию */
var_dump(['user_info' => [
    'prem_status' => $response->getPremStatus(),
    'qual_status' => $response->getQualStatus(),
    'qualified_for_work_with' => $response->getQualifiedForWorkWith(),
]]);
```

Либо создавать клиенты доступа к сервисам напрямую:

```
/**
 * Ваш токен доступа к API
 *
 * @see https://tinkoff.github.io/investAPI/token/
 */
$token = '';

/**
 * Создаем экземпляр подключения к сервису, используя {@link UsersServiceClient}
 */
$user_service_client = new UsersServiceClient(ClientConnection::getHostname(), ClientConnection::getOptions($token));

/**
 * Создаем экземпляр запроса информации об аккаунте к сервису
 *
 * Запрос не принимает никаких параметров на вход
 *
 * @see https://tinkoff.github.io/investAPI/users/#getinforequest
 */
$request = new GetInfoRequest();

/**
 * @var GetInfoResponse $response - Получаем ответ, содержащий информацию о пользователе
 */
list($response, $status) = $user_service_client->GetInfo($request)->wait();

/** Выводим полученную информацию */
var_dump(['user_info' => [
    'prem_status' => $response->getPremStatus(),
    'qual_status' => $response->getQualStatus(),
    'qualified_for_work_with' => $response->getQualifiedForWorkWith(),
]]);
```

Простенький пример подключения и чтения данных из Stream на основе MarketDataStreamClient (Стакан заявок по тикеру FB на глубину 10)

```
/**
 * Ваш токен доступа к API
 *
 * @see https://tinkoff.github.io/investAPI/token/
 */
$token = '';

/** Пример получения обновляемого через Stream ({@link MarketDataStreamServiceClient}) стакана по тикеру FB */

$factory = TinkoffClientsFactory::create($token);

/**
 * Пример получения справочника всех Shares инструментов
 *
 * PS: Само собой, если вам нужен только один инструмент, разумнее использовать метод GetInstrumentBy
 *
 * @see https://tinkoff.github.io/investAPI/instruments/#getinstrumentby
 * @see https://tinkoff.github.io/investAPI/instruments/#instrumentrequest
 */

$instruments_request = new InstrumentsRequest();
$instruments_request->setInstrumentStatus(InstrumentStatus::INSTRUMENT_STATUS_ALL);

/** @var SharesResponse $response */
list($response, $status) = $factory->instrumentsServiceClient->Shares($instruments_request)
    ->wait();

/** @var Instrument[] $instruments_dict */
$instruments_dict = $response->getInstruments();

/**
 * Находим в справочнике (коль он у нас весь есть) нужный нам инструмент
 */
foreach ($instruments_dict as $instrument) {
    if ($instrument->getTicker() === 'FB') {
        $meta_instrument = $instrument;

        break;
    }
}

if (empty($meta_instrument)) {
    echo('Instrument not found');

    die();
}

/** Создаем подписку на данные {@link MarketDataRequest}, конкретно по {@link SubscribeOrderBookRequest} по FIGI инструмента META/FB */
$subscription = (new MarketDataRequest())
    ->setSubscribeOrderBookRequest(
        (new SubscribeOrderBookRequest())
            ->setSubscriptionAction(SubscriptionAction::SUBSCRIPTION_ACTION_SUBSCRIBE)
            ->setInstruments([
                (new OrderBookInstrument())
                    ->setFigi($meta_instrument->getFigi())
                    ->setDepth(10)
            ])
    );

$stream = $factory->marketDataStreamServiceClient->MarketDataStream();
$stream->write($subscription);

/** В цикле получаем данные от сервера */

/** @var MarketDataResponse $market_data_response */
while ($market_data_response = $stream->read()) {
    if ($orderbook = $market_data_response->getOrderbook()) {
        /** @var Order[] $asks */
        $asks = $orderbook->getAsks();

        /** @var Order[] $bids */
        $bids = $orderbook->getBids();

        foreach ($asks as $ask) {
            $price = $ask->getPrice()
                    ->getUnits() + $ask->getPrice()
                    ->getNano() / pow(10, 9)
            ;

            echo 'ASK ' . $price . ' - ' . $ask->getQuantity() . PHP_EOL;
        }

        foreach ($bids as $bid) {
            $price = $bid->getPrice()
                    ->getUnits() + $bid->getPrice()
                    ->getNano() / pow(10, 9)
            ;

            echo 'BID ' . $price . ' - ' . $bid->getQuantity() . PHP_EOL;
        }

        echo 'Orderbook response finished' . PHP_EOL . PHP_EOL;
    }
}

$stream->cancel();
```

Обновления
==========

[](#обновления)

- *Вер. 0.5.2 от 2026-02-10*.

~ Переключение на новый репозиторий T-Invest () и обновление контрактов до версии 1.44 из этого репозитория

~ Добавлена DTO Quantity ()

~ Доработаны классы-провайдеры данных

- *Вер. 0.5.1 от 2026-01-20*.

~ Поднята версия библиотеки grpc/grpc () до версии ^1.74. Необходимо обновить.

~ Поднята версия библиотеки google/protobuf () до версии ^3.25.1. Необходимо обновить.

Справочная информация:

**Обновление grpc.so:**

```
sudo pecl upgrade grpc

```

**Обновление protoc (Если вы самостоятельно обновляете библиотеку из контрактов):**

Можно воспользоваться скриптом [https://gist.github.com/Eitol/c12b3102ba872a365461d101650d319b#file-install\_protobuf-sh](https://gist.github.com/Eitol/c12b3102ba872a365461d101650d319b#file-install_protobuf-sh))

**Пересборка grpc\_php\_plugin (Если вы самостоятельно обновляете библиотеку из контрактов):**()

```
cd ~
git clone --recurse-submodules --depth 1 --shallow-submodules https://github.com/grpc/grpc

```

```
cd grpc
mkdir -p cmake/build
pushd cmake/build
cmake ../..
make protoc grpc_php_plugin
popd

```

- *Вер. 0.4.24 от 2025-12-18*.

~ Добавлен унифицированный класс DTO Цены/Количества ()

~ Добавлены новые классы-хелперы ArrayHelper, NumbersHelper, InstrumentsHelper.

~ Переделана логика работы провайдера InstrumentsProvider, исправлены некоторые ошибки в работе

~ Добавлены новые провайдеры данных MarketDataProvider и PortfolioProvider

~ Добавлен метод обработки, вывода ошибки исполнения запроса к API в модели TinkoffClientsFactory

- *Вер. 0.4.23 от 2025-11-11*.

~ Обновлены контракты. PR от [Andrey Veprikov](https://github.com/aveprikov).

- *Вер. 0.4.22 от 2025-09-07*.

~ Обновлены контракты и сертификаты. PR от [Andrey Veprikov](https://github.com/aveprikov).

- *Вер. 0.4.21 от 2025-09-07*.

~ Обновлены контракты. PR от [Andrey Veprikov](https://github.com/aveprikov):

```
Новый домен API подписан сертификатом Минцифры, в связи с этим:

Обновлены корневые сертификаты в /etc/roots.pem.
Взят актуальный https://curl.se/ca/cacert.pem и в него добавлены два сертификата от Минцифры (корневой и промежуточный).
Добавлен сертификат домена API /etc/invest-public-api_tbank_ru.pem.
Удалён сертификат старого домена API /etc/tinkoff_ru.pem.
Обновлены соответствующие константы.
Есть два варианта научить среду принимать новый сертификат:

1) Использовать на уровне проекта через переменную окружения:
putenv("SSL_CERT_FILE=/vendor/metaseller/tinkoff-invest-api-v2-php/etc/roots.pem");
2) Обновить системные сертификаты и использовать глобально.

```

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance86

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity23

Early-stage or recently created project

 Bus Factor1

Top contributor holds 88.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

68d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/92de9daad6e0c4ef7b8b4fa112373401ae79ac02d185653724ca4ac425add1b7?d=identicon)[smskin](/maintainers/smskin)

---

Top Contributors

[![metaseller](https://avatars.githubusercontent.com/u/13105933?v=4)](https://github.com/metaseller "metaseller (126 commits)")[![aveprikov](https://avatars.githubusercontent.com/u/15323913?v=4)](https://github.com/aveprikov "aveprikov (8 commits)")[![smskin](https://avatars.githubusercontent.com/u/3227797?v=4)](https://github.com/smskin "smskin (3 commits)")[![tokarev](https://avatars.githubusercontent.com/u/446684?v=4)](https://github.com/tokarev "tokarev (3 commits)")[![vorobevks](https://avatars.githubusercontent.com/u/60545884?v=4)](https://github.com/vorobevks "vorobevks (3 commits)")

---

Tags

phptinkofft-investt-investmentsinvest api sdkT-Invest API PHP SDK

###  Code Quality

Static AnalysisRector

### Embed Badge

![Health badge](/badges/smskin-tinkoff-invest-api-v2-php/health.svg)

```
[![Health](https://phpackages.com/badges/smskin-tinkoff-invest-api-v2-php/health.svg)](https://phpackages.com/packages/smskin-tinkoff-invest-api-v2-php)
```

###  Alternatives

[metaseller/tinkoff-invest-api-v2-php

Unofficial PHP SDK for T-Invest API v2

245.8k1](/packages/metaseller-tinkoff-invest-api-v2-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)[google/grpc-gcp

gRPC GCP library for channel management

18497.8M3](/packages/google-grpc-gcp)[googleads/google-ads-php

Google Ads API client for PHP

3497.6M9](/packages/googleads-google-ads-php)[temporal/sdk

Temporal SDK

4002.2M18](/packages/temporal-sdk)[spiral/grpc-client

gRPC client

41140.3k2](/packages/spiral-grpc-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
