PHPackages                             phenogram/gateway-bindings - 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. [API Development](/categories/api)
4. /
5. phenogram/gateway-bindings

ActiveLibrary[API Development](/categories/api)

phenogram/gateway-bindings
==========================

Strictly typed PHP bindings for the Telegram Gateway API

1.0.0(7mo ago)06[3 PRs](https://github.com/phenogram/gateway-bindings/pulls)MITPHPPHP ^8.4CI passing

Since Jan 5Pushed 2w agoCompare

[ Source](https://github.com/phenogram/gateway-bindings)[ Packagist](https://packagist.org/packages/phenogram/gateway-bindings)[ RSS](/packages/phenogram-gateway-bindings/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

[English](README.en.md) · **Русский**

Phenogram Gateway Bindings
==========================

[](#phenogram-gateway-bindings)

[![CI](https://github.com/phenogram/gateway-bindings/actions/workflows/ci.yml/badge.svg)](https://github.com/phenogram/gateway-bindings/actions/workflows/ci.yml)[![Последняя стабильная версия](https://camo.githubusercontent.com/61163c4b1a9b57fca7a25f58c01bfa1590f547e760e1c9efe66ca5bbcecdc097/68747470733a2f2f706f7365722e707567782e6f72672f7068656e6f6772616d2f676174657761792d62696e64696e67732f762f737461626c65)](https://packagist.org/packages/phenogram/gateway-bindings)[![Версия PHP](https://camo.githubusercontent.com/6d487c7a86769ff4810c253f2ef4b18c35c3c515a7c1f02e152c7bc22a736bb6/68747470733a2f2f706f7365722e707567782e6f72672f7068656e6f6772616d2f676174657761792d62696e64696e67732f726571756972652f706870)](https://packagist.org/packages/phenogram/gateway-bindings)[![Лицензия](https://camo.githubusercontent.com/7474498f89aac6d6b987bf50d6b239f5382f725727690a003872a30fd0741b58/68747470733a2f2f706f7365722e707567782e6f72672f7068656e6f6772616d2f676174657761792d62696e64696e67732f6c6963656e7365)](LICENSE)

Строго типизированные PHP-биндинги для [Telegram Gateway API](https://core.telegram.org/gateway/api).

Пакет помогает отправлять коды подтверждения через Telegram. В нём есть:

- типизированные методы для всех операций Gateway API;
- типизированные объекты запроса, доставки и проверки кода;
- небольшой сериализатор имён полей Gateway API;
- интерфейс HTTP-клиента без привязки к конкретной библиотеке;
- офлайн-тесты для всех примеров в репозитории.

Пакет не выбирает HTTP-библиотеку за ваше приложение. Реализуйте `ClientInterface` или адаптируйте проверенный [пример на cURL](examples/CurlClient.php).

Требования
----------

[](#требования)

- PHP 8.4 или новее.
- Composer 2.
- Токен доступа для реальных запросов к Gateway API.
- Расширение PHP cURL, только если вы используете пример с cURL.

Установка
---------

[](#установка)

```
composer require phenogram/gateway-bindings
```

Запуск примеров из репозитория
------------------------------

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

Для команд с примерами ниже нужен клон репозитория. Подготовьте клон перед запуском:

```
git clone https://github.com/phenogram/gateway-bindings.git
cd gateway-bindings
composer install
```

Первый запуск без сети
----------------------

[](#первый-запуск-без-сети)

Запустите полный пример. Он использует локальный ответ. Для него не нужны токен, сеть и платная операция API.

```
php examples/offline.php
```

Ожидаемый результат:

```
Request request-demo: code_valid

```

Также можно имитировать отправку сообщения:

```
php examples/send-verification.php
```

Ожидаемый результат:

```
Simulated request request-demo for +12025550123

```

Отправка реального сообщения
----------------------------

[](#отправка-реального-сообщения)

Warning

Реальный запрос может списать средства со счёта Telegram Gateway. До запуска прочитайте раздел [Правила тарификации](#%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D1%82%D0%B0%D1%80%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8).

Задайте токен и номер получателя. Используйте формат E.164.

```
export TELEGRAM_GATEWAY_TOKEN='your-token'
export TELEGRAM_GATEWAY_PHONE='+12025550123'
php examples/send-verification.php --live
```

Пример вызывает `sendVerificationMessage` напрямую. Если вы хотите применить этот клиент в приложении, скопируйте [`examples/CurlClient.php`](examples/CurlClient.php) и замените пространство имён.

Правила тарификации
-------------------

[](#правила-тарификации)

`checkSendAbility` — необязательный метод. Это не бесплатная пробная проверка.

- Если Telegram подтвердит возможность отправки на номер, проверка может списать средства.
- Успешная проверка возвращает `request_id`.
- Один последующий вызов `sendVerificationMessage` с этим `request_id`выполняется без повторного списания.
- Повторная отправка с тем же `request_id` завершится ошибкой.
- Отправка без этого `request_id` создаст новый запрос и может привести к новому списанию.
- По документации Telegram тестовые запросы на собственный номер бесплатны.

Прямой вызов `sendVerificationMessage` тарифицируется по плану Gateway. Telegram возвращает средства, если сообщение не выполнило условия доставки в пределах заданного `ttl`. Актуальные правила приведены в [официальной документации Gateway API](https://core.telegram.org/gateway/api).

Публичный API
-------------

[](#публичный-api)

МетодНазначениеРезультат`sendVerificationMessage(...)`Отправляет код подтверждения.`RequestStatusInterface``checkSendAbility($phoneNumber)`Проверяет возможность отправки на номер. Этот вызов может списать средства.`RequestStatusInterface``checkVerificationStatus($requestId, $code)`Получает статус запроса и при необходимости проверяет код.`RequestStatusInterface``revokeVerificationMessage($requestId)`Просит Telegram отозвать сообщение.`bool`Все параметры и значения статусов описаны в [русском руководстве по API](docs/ru/api.md).

Контракт HTTP-клиента
---------------------

[](#контракт-http-клиента)

Класс `Api` передаёт имя метода и сериализованный массив данных вашему клиенту:

```
interface ClientInterface
{
    /** @param array $data */
    public function sendRequest(string $method, array $data): ResponseInterface;
}
```

Верните `Response` с точной структурой ответа Gateway API:

- успех: `ok: true` и `result`;
- ошибка: `ok: false` и `error`.

Gateway API не возвращает поля Bot API `description`, `error_code` и `parameters`. Интерфейс и поля конструктора из версии 1.0 сохранены для совместимости исходного кода. В новых реализациях ответа используйте `GatewayResponseInterface` и его поле `error`.

Правила транспорта и обработки ошибок описаны в [русском руководстве по клиенту](docs/ru/client.md).

Ошибки
------

[](#ошибки)

Если Telegram вернул `ok: false`, класс `Api` выбрасывает `ResponseException`. Исключение принимает любую реализацию `ResponseInterface`.

```
try {
    $status = $api->checkVerificationStatus($requestId, $code);
} catch (\Phenogram\GatewayBindings\ResponseException $exception) {
    $gatewayError = $exception->gatewayError;
}
```

Некорректный успешный ответ вызывает `UnexpectedValueException`. Транспорт может использовать `RuntimeException` для ошибок сети, HTTP и JSON.

Типизированные результаты
-------------------------

[](#типизированные-результаты)

`RequestStatusInterface` содержит:

- `requestId`;
- `phoneNumber`;
- `requestCost`;
- `isRefunded`;
- `remainingBalance`;
- `deliveryStatus`;
- `verificationStatus`;
- `payload`.

Если Telegram не вернул необязательное поле, его значение равно `null`. Сериализатор отклоняет ответ без обязательного поля или с неверным типом.

Документация и примеры
----------------------

[](#документация-и-примеры)

МатериалEnglishРусскийAPI и тарификация[docs/en/api.md](docs/en/api.md)[docs/ru/api.md](docs/ru/api.md)HTTP-клиенты и ошибки[docs/en/client.md](docs/en/client.md)[docs/ru/client.md](docs/ru/client.md)Исполняемые примеры:

- [`examples/offline.php`](examples/offline.php) проверяет код с локальным ответом.
- [`examples/send-verification.php`](examples/send-verification.php) по умолчанию имитирует отправку. Флаг `--live` выполняет реальный запрос.
- [`examples/CurlClient.php`](examples/CurlClient.php) содержит HTTP-клиент с внедряемым транспортом.

Запустите все примеры без доступа к сети:

```
composer examples
```

Разработка
----------

[](#разработка)

Установите основные зависимости и изолированные инструменты контроля качества:

```
composer install
composer tools:install
```

Запустите все локальные проверки:

```
composer check
```

Команда проверяет метаданные Composer, запускает PHPUnit и все примеры без сети, выполняет PHPStan на максимальном уровне и проверяет стиль кода.

Безопасность
------------

[](#безопасность)

- Храните токен вне системы контроля версий.
- Не записывайте токены, номера телефонов и коды подтверждения в журналы.
- Используйте HTTPS для всех реальных запросов.
- Проверяйте подпись и время каждого отчёта о доставке. Следуйте [официальной процедуре](https://core.telegram.org/gateway/api#checking-report-integrity).

Сообщайте об уязвимости через закрытый канал связи с сопровождающим. Не публикуйте учётные данные и персональные данные в открытой задаче. Подробности приведены в [политике безопасности](SECURITY.md).

Участие в разработке
--------------------

[](#участие-в-разработке)

Прочитайте [CONTRIBUTING.md](CONTRIBUTING.md). Не используйте сеть в тестах. Обновляйте английскую и русскую документацию в одном изменении.

Лицензия
--------

[](#лицензия)

[MIT](LICENSE)

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance82

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

225d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/311e425711f60c09486c23252696fbe4dfa77e9b0dd5517bc89b288ac2f58655?d=identicon)[shanginn](/maintainers/shanginn)

---

Top Contributors

[![shanginn](https://avatars.githubusercontent.com/u/3357943?v=4)](https://github.com/shanginn "shanginn (6 commits)")

---

Tags

otpphptelegramtelegram-gatewayverification

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/phenogram-gateway-bindings/health.svg)

```
[![Health](https://phpackages.com/badges/phenogram-gateway-bindings/health.svg)](https://phpackages.com/packages/phenogram-gateway-bindings)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35816.5M7](/packages/exsyst-swagger)[lucasdotvin/laravel-soulbscription

A straightforward interface to handle subscriptions and features consumption.

709209.3k](/packages/lucasdotvin-laravel-soulbscription)[pimax/fb-messenger-php

Facebook Messenger Bot PHP API

313188.5k2](/packages/pimax-fb-messenger-php)

PHPackages © 2026

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