Bitrix24 PHP SDK — официальная PHP библиотека для работы с REST API Bitrix24.
- Версия: 1.7.* (стабильная)
- Требования: PHP 8.2+, ext-json, ext-curl, ext-intl
- Лицензия: MIT
- Репозиторий: https://github.com/bitrix24/b24phpsdk
- ✅ Поддержка OAuth 2.0 для приложений
- ✅ Поддержка входящих вебхуков для простых интеграций
- ✅ Автоматическое обновление access токенов
- ✅ Batch-запросы с генераторами PHP для эффективной работы с большими данными
- ✅ Типизированные методы и результаты для автодополнения в IDE
- ✅ Обработка событий Bitrix24 (webhook-уведомления)
composer require bitrix24/b24phpsdk- Используйте WSL (Windows Subsystem for Linux)
- Отключите флаг
git config --global core.protectNTFS falseдля работы с файлами, начинающимися с точки
{
"require": {
"bitrix24/b24phpsdk": "1.7.*"
}
}📚 Документация по установке: README.md
Для уточнения методов и параметров REST API используйте Bitrix24 MCP server.
См. также: инструкция по MCP и официальная страница https://apidocs.bitrix24.ru/sdk/mcp.html
use Bitrix24\SDK\Services\ServiceBuilderFactory;
$serviceBuilder = ServiceBuilderFactory::createServiceBuilderFromWebhook(
'https://your-portal.bitrix24.com/rest/1/webhook_code/'
);use Bitrix24\SDK\Services\ServiceBuilderFactory;
use Bitrix24\SDK\Core\Credentials\ApplicationProfile;
use Symfony\Component\HttpFoundation\Request;
$appProfile = ApplicationProfile::initFromArray([
'BITRIX24_PHP_SDK_APPLICATION_CLIENT_ID' => 'your_client_id',
'BITRIX24_PHP_SDK_APPLICATION_CLIENT_SECRET' => 'your_client_secret',
'BITRIX24_PHP_SDK_APPLICATION_SCOPE' => 'crm,user,task'
]);
$serviceBuilder = ServiceBuilderFactory::createServiceBuilderFromPlacementRequest(
Request::createFromGlobals(),
$appProfile
);📖 Подробнее: docs/EN/README.md
SDK организован по scope (областям доступа) Bitrix24 API. Каждый scope имеет свой ServiceBuilder:
// CRM операции
$crmService = $serviceBuilder->getCRMScope();
$contact = $crmService->contact()->add(['NAME' => 'Иван', 'LAST_NAME' => 'Иванов']);
// Работа с задачами
$taskService = $serviceBuilder->getTaskScope();
$tasks = $taskService->task()->list();
// Пользователи
$userService = $serviceBuilder->getUserScope();
$currentUser = $userService->user()->current();Доступные scope:
getCRMScope()- CRMgetTaskScope()- ЗадачиgetUserScope()- ПользователиgetDiskScope()- Диск (файлы)getCalendarScope()- КалендарьgetTelephonyScope()- ТелефонияgetSaleScope()- Продажи/заказыgetMainScope()- Основные методыgetEntityScope()- Универсальное хранилищеgetBizProcScope()- Бизнес-процессы- И другие...
📚 Полный список scope: src/Services/ServiceBuilder.php
Если метод еще не реализован в SDK, используйте прямой вызов через Core:
$result = $serviceBuilder->core->call('user.current');
$data = $result->getResponseData()->getResult();SDK использует иерархию исключений в Bitrix24\SDK\Core\Exceptions\:
use Bitrix24\SDK\Core\Exceptions\InvalidArgumentException;
use Bitrix24\SDK\Core\Exceptions\TransportException;
use Bitrix24\SDK\Core\Exceptions\AuthForbiddenException;
try {
$result = $serviceBuilder->core->call('some.method');
} catch (AuthForbiddenException $e) {
// Проблемы с авторизацией
} catch (InvalidArgumentException $e) {
// Неверные аргументы вызова
} catch (TransportException $e) {
// Сетевые ошибки
} catch (\Throwable $e) {
// Все остальные ошибки
}📖 Подробнее об исключениях: src/Core/Exceptions/
Если возникла ошибка, первым делом проверьте:
- README проекта: README.md
- Внутреннюю документацию: docs/EN/README.md
- AI-README с архитектурой: AI-README.md
Каждый метод в SDK имеет атрибут ApiEndpointMetadata со ссылкой на документацию:
#[ApiEndpointMetadata(
'crm.contact.add',
'https://apidocs.bitrix24.com/api-reference/crm/contacts/crm-contact-add.html',
'Creates new contact'
)]
public function add(array $fields): AddedItemResultДействия:
- Найдите нужный метод в соответствующем сервисе в
src/Services/ - Посмотрите на атрибут
ApiEndpointMetadata- там есть ссылка на официальную документацию - Проверьте сигнатуру метода и типы параметров
Примеры путей к сервисам:
- CRM контакты: src/Services/CRM/Contact/Service/Contact.php
- Задачи: src/Services/Task/Service/Task.php
- Пользователи: src/Services/User/Service/User.php
Результаты методов возвращают типизированные объекты. Проверьте:
- Result классы в папке
Result/рядом с сервисом - Свойства через PHPDoc - они описывают доступные поля
- Методы обработки результата
Пример:
// src/Services/CRM/Contact/Result/ContactItemResult.php
/**
* @property-read int $ID
* @property-read string $NAME
* @property-read string $LAST_NAME
* @property-read CarbonImmutable $DATE_CREATE
*/
class ContactItemResult extends AbstractCrmItemSDK содержит рабочие примеры:
- Примеры с вебхуком: examples/webhook/
- Примеры локального приложения: examples/local-app/
- Примеры с Workflows: examples/local-app-workflows/
Интеграционные тесты показывают реальные сценарии использования:
- Core тесты: tests/Integration/Core/
- Тесты по scope: tests/Integration/Services/
Полезные примеры:
- CRM:
tests/Integration/Services/CRM/ - Tasks:
tests/Integration/Services/Task/ - Users:
tests/Integration/Services/User/
Официальная документация REST API Bitrix24:
- 🌐 Основная документация: https://apidocs.bitrix24.com/
- 📖 GitHub документация: https://github.com/bitrix-tools/b24-rest-docs
Структура REST API:
- Методы группируются по областям (scope): crm, task, user, disk и т.д.
- Каждый метод имеет описание параметров, результатов и примеров
- SDK методы точно соответствуют REST API методам
Многие ошибки связаны с недостаточными правами (scope). Проверьте:
- Список scope в
ApplicationProfileпри OAuth авторизации - Права вебхука (должны быть установлены все необходимые галочки)
- Доступные scope в src/Core/Credentials/Scope.php
// Проверьте, что у приложения есть нужные scope:
'BITRIX24_PHP_SDK_APPLICATION_SCOPE' => 'crm,user,task,disk'HTTP/2 + JSON
↓
Symfony HTTP Client
↓
Core\ApiClient (работа с REST API endpoints)
↓
Services\* (работа с сущностями Bitrix24)
-
CoreInterface - src/Core/Contracts/CoreInterface.php
- Основной интерфейс для вызова API методов
- Метод
call(string $apiMethod, array $parameters = []): Response
-
BatchOperationsInterface - src/Core/Contracts/BatchOperationsInterface.php
- Интерфейс для batch-операций
- Эффективная работа с большими объемами данных
-
ServiceBuilder - src/Services/ServiceBuilder.php
- Главная точка входа для доступа к сервисам
- Методы вида
getCRMScope(),getTaskScope()и т.д.
-
ServiceBuilderFactory - src/Services/ServiceBuilderFactory.php
- Фабрика для создания ServiceBuilder
- Статические методы:
createServiceBuilderFromWebhook(string $webhookUrl)createServiceBuilderFromPlacementRequest(Request $request, ApplicationProfile $profile)
-
AbstractService - src/Services/AbstractService.php
- Базовый класс для всех сервисов
-
AbstractBatchService - src/Services/AbstractBatchService.php
- Базовый класс для batch-операций
-
AbstractServiceBuilder - src/Services/AbstractServiceBuilder.php
- Базовый класс для построителей сервисов
Все результаты наследуются от src/Core/Result/AbstractResult.php:
- AddedItemResult - результат добавления элемента
- UpdatedItemResult - результат обновления элемента
- DeletedItemResult - результат удаления элемента
- FieldsResult - результат получения полей
- Определите scope метода (crm, task, user и т.д.)
- Найдите соответствующий ServiceBuilder в
src/Services/ - Изучите структуру похожих методов в том же сервисе
- Проверьте документацию на https://apidocs.bitrix24.com/
- Создайте Issue с типом Feature Request
Если хотите внести изменения:
- Форкните репозиторий
- Изучите: CONTRIBUTING.md
- Изучите архитектуру: AI-README.md
- Следуйте стандартам кодирования:
- PSR-12
- PHPStan level 9
- Типизация всех параметров и возвращаемых значений
- Создайте Pull Request в ветку
dev(не вmain!)
📖 Руководство по контрибуции: CONTRIBUTING.md
🏗️ Архитектурный гайд: AI-README.md
- 📘 README.md - Основная документация
- 🏗️ AI-README.md - Архитектурный обзор
- 📚 docs/EN/README.md - Внутренняя документация
- 🤝 CONTRIBUTING.md - Гайд для контрибьюторов
- 🔄 CHANGELOG.md - История изменений
- 🎯 src/Core/Contracts/CoreInterface.php
- 🏭 src/Services/ServiceBuilderFactory.php
- 🔧 src/Services/ServiceBuilder.php
- 🔑 src/Core/Credentials/ - Работа с авторизацией
⚠️ src/Core/Exceptions/ - Исключения
- 💼 CRM: src/Services/CRM/
- ✅ Tasks: src/Services/Task/
- 👤 Users: src/Services/User/
- 💾 Disk: src/Services/Disk/
- 📅 Calendar: src/Services/Calendar/
- ☎️ Telephony: src/Services/Telephony/
- 🛒 Sale: src/Services/Sale/
- 📝 examples/webhook/ - Примеры с вебхуком
- 🔌 examples/local-app/ - Локальное приложение
- ⚙️ examples/local-app-workflows/ - С бизнес-процессами
- 🧪 tests/Integration/ - Интеграционные тесты
- 🔬 tests/Unit/ - Юнит-тесты
- 🌐 Bitrix24 REST API: https://apidocs.bitrix24.com/
- 📖 GitHub REST API Docs: https://github.com/bitrix-tools/b24-rest-docs
- 🐙 SDK репозиторий: https://github.com/bitrix24/b24phpsdk
- 🐛 Issues: https://github.com/bitrix24/b24phpsdk/issues
- ✨ Feature Requests: https://github.com/bitrix24/b24phpsdk/issues/new?assignees=&labels=enhancement+in+SDK&projects=&template=2_feature_request_sdk.yaml
# Статический анализ
make lint-phpstan # PHPStan проверка
make lint-rector # Rector проверка
make lint-rector-fix # Rector автоисправление
make lint-cs-fixer # PHP CS Fixer
# Тестирование
make test-unit # Юнит-тесты
make test-integration-core # Интеграционные тесты Core
make test-integration-scope-crm # Интеграционные тесты CRM
make test-integration-scope-task # Интеграционные тесты Task
# Документация
make build-documentation # Обновить список методов в документации📖 Подробнее: Makefile
- Прочитайте сообщение об исключении - оно содержит подробную информацию
- Проверьте namespace исключения - он указывает на категорию проблемы
- Найдите соответствующий класс в SDK - используйте поиск по коду
- Изучите документацию метода через атрибут
ApiEndpointMetadata - Проверьте официальную REST API документацию Bitrix24
- Посмотрите примеры использования в тестах или examples
- Проверьте существование ServiceBuilder для этого scope
- Изучите структуру методов в похожих сервисах (например, CRM)
- Используйте прямой вызов через Core, если метод не реализован
- Создайте Feature Request, чтобы метод добавили в SDK
- Используйте типизацию - SDK полностью типизирован
- Обрабатывайте исключения - не полагайтесь на успешное выполнение
- Используйте batch-операции для больших объемов данных
- Логируйте операции - передавайте PSR-3 Logger в ServiceBuilderFactory
- Следуйте 12-factor app принципам для конфигурации
Версия документа: 1.0 (для SDK v1.7.*) Дата последнего обновления: 2025-10-23 Целевая аудитория: ИИ агенты, работающие с Bitrix24 PHP SDK
Если ничего не помогает:
- 🔍 Проверьте открытые Issues - возможно, проблема уже известна
- 🐛 Создайте Bug Report с подробным описанием
- 💬 Обратитесь к официальной документации Bitrix24
- 📧 Свяжитесь с поддержкой через GitHub Issues
Помните: SDK - это обертка над REST API, поэтому всегда сверяйтесь с официальной документацией Bitrix24 REST API!