Download the PHP package andrey-tech/amocrm-api-php without Composer

On this page you can find all versions of the php package andrey-tech/amocrm-api-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package amocrm-api-php

amoCRM API PHP Wrapper

GitHub stars GitHub forks GitHub watchers

Простая обертка на PHP7+ для работы с REST API amoCRM v2 (версии 2) с авторизацией по протоколу oAuth 2.0 или по API-ключу пользователя, поддержкой AJAX-запросов к frontend-методам, троттлингом запросов к API, блокировкой одновременного обновления одной сущности и логированием запросов/ответов к API в файл.

Данная библиотека была создана для удовлетворения новых требований amoCRM, предъявляемых к публичным интеграциям:

Публичные интеграции должны использовать механизм авторизации oAuth 2.0, использование механизма API ключей не допускается. Требование с февраля 2020 года.

С 1 июля 2020 г. информация о API-ключе пользователя стала недоступна в интерфейсе amoCRM.

В настоящее время актуальной версией является REST API amoCRM v4 (версия 4) (запросы к API отправляются на /api/v4/).

Документация по REST API amoCRM v2

Документация по REST API v2 теперь недоступна на русскоязычной версии сайта amoCRM. На англоязычной версии сайта эта документация перенесена в раздел API V2 GENERAL METHODS.

Архив документации по REST API amoCRM v2 в формате HTML вынесен в самостоятельный репозиторий.
Ниже приведены ссылки на отдельные HTML-файлы этого архива:

Содержание

Требования

Установка

Установка через composer:

или путем добавления:

в секцию require файла composer.json.

Авторизация

Авторизация по протоколу oAuth 2.0 (актуальный метод)

Первичная авторизация и обмен кода авторизации на access токен и refresh токен

При первичной авторизации производится обмен кода авторизации authCode на access токен и refresh токен, которые сохраняются в хранилище токенов вместе с переданными значениями $clientId, $clientSecret и $redirectUri.

Последующие авторизации

После первичного обмена кода авторизации на access токен и refresh токен, при последующих авторизациях, достаточно передать только $subdomain - поддомен или полный домен amoCRM.

Получение нового access токена и refresh токена по истечении срока действия access токена происходит автоматически, когда на запрос к API amoCRM приходит ответ с HTTP-статусом 401 Unauthorized.

Хранение access и refresh токенов

Сохранение и загрузка токенов выполняется с помощью классов, реализующих интерфейс \AmoCRM\TokenStorage\TokenStorageInterface.

Интерфейс TokenStorageInterface

В интерфейсе \AmoCRM\TokenStorage\TokenStorageInterface определены три метода:

Класс FileStorage

По умолчанию для сохранения и загрузки токенов используется класс \AmoCRM\TokenStorage\FileStorage, реализующий интерфейс \AmoCRM\TokenStorage\TokenStorageInterface. Класс хранит токены в JSON-файлах, с именами, соответствующими именам доменов amoCRM (например, testsubdomain.amocrm.ru.json).

В параметрах, передаваемых конструктору класса, можно указать каталог для хранения файлов токенов:

При возникновении ошибок выбрасывается исключение класса \AmoCRM\TokenStorage\TokenStorageException.

Использование собственного класса для сохранения токенов

Пример использования собственного класса для сохранения токенов в базе данных:

Пример класса \AmoCRM\TokenStorage\DatabaseStorage:

Проверка наличия первичной авторизации

Чтобы проверить, происходила ли первичная авторизация для нужного поддомена amoCRM, можно воспользоваться методом hasTokens() интерфейса \AmoCRM\TokenStorage\TokenStorageInterface:

Авторизация по API-ключу пользователя (устаревший метод)

С 1 июля 2020 г. информация о API-ключе пользователя стала недоступна в интерфейсе amoCRM.

Пример авторизации по API-ключу пользователя.

Одновременная авторизация в нескольких аккаунтах amoCRM

Библиотека позволяет одновременно работать с несколькими поддоменами (аккаунтами) amoCRM. Для этого необходимо последовательно выполнить авторизацию в каждом их поддоменов.

Параметры настройки

Все параметры настройки библиотеки устанавливаются через статические свойства класса AmoAPI.

Свойство По умолчанию Описание
$debug false Включает отладочный режим с выводом запросов/ответов в API в STDOUT
$debugLogger null Устанавливает объект класса, выполняющего логирование и реализующего стандарт PSR-3
$throttle 7 Устанавливает максимальное число запросов к API amoCRM в секунду (не более 7 запросов в секунду)
$verifySSLCerfificate true Включает проверку SSL/TLS-сертификата сервера amoCRM
$SSLCertificateFile 'cacert.pem' Устанавливает файл SSL/TLS-сертификатов X.509 корневых удостоверяющих центров (CA) в формате РЕМ (null - использовать файл, указанный в параметре curl.cainfo файла php.ini)
$amoDomain 'amocrm.ru' Устанавливает домен для запросов к API amoCRM
$amoUserAgent 'amoCRM-API-client/2.0' Устанавливает НТТР заголовок UserAgent в запросах
$amoConnectTimeout 30 Устанавливает таймаут соединения с сервером аmoCRM, секунды
$amoTimeout 30 Устанавливает таймаут обмена данными с сервером аmoCRM, секунды
$reAuthTimeout 5 Устанавливает таймаут перед повторной авторизацией по API-ключу пользователя при ответе сервера '401 Unauthorized', секунды
$reAuthAttempts 3 Устанавливает максимальное число попыток повторной авторизации по API-ключу пользователя при ответе сервера '401 Unauthorized'
$cookieFileDir 'cookies/' Устанавливает относительный каталог для хранения файлов cookie
$lockEntityDir 'lock/' Устанавливает каталог для хранения lock-файлов блокировки обновления сущностей при вызове метода AmoObject::save()
$lockEntityAttempts 10 Устанавливает максимальное число попыток блокировки обновления сущности при вызове метода AmoObject::save() (0 - блокировка не выполняется)
$lockEntityTimeout 1 Устанавливает таймаут между попытками блокировки обновления сущности при вызове метода AmoObject::save(), секунды
$limitRows 500 Устанавливает максимальное количество сущностей, выбираемых за один запрос к серверу amoCRM (не более 500, рекомендуется не более 250)
$tokenStorage object Устанавливает объект класса, обеспечивающего сохранение токенов oAuth 2.0 и реализующего интерфейс TokenStorageInterface. По умолчанию объект класса FileStorage
$successStatusCodes [ 200, 202, 204 ] Коды состояния НТТР, соответствующие успешному выполнению запроса

Работа с сущностями amoCRM

Работа с сущностями amoCRM строится с помощью:

Список методов и констант моделей

Базовый класс моделей AmoObject

Абстрактный базовый класс всех моделей - AmoObject содержит следующие общие методы:

Константы, определяющие типы привязываемых сущностей:

Класс AmoContact - модель контакта

Класс AmoCompany - модель компании

Класс AmoLead - модель сделки

⚠   Для заявок из неразобранного существуют специальные методы.

Класс AmoTask - модель задачи

Константы класса, определяющие типы задач:

Класс AmoNote - модель события (примечания)

Константы класса, определяющие типы событий:

Класс AmoCatalog - модель списка (каталога)

Класс AmoCatalog не имеет собственных специфических методов.

Класс AmoCatalogElement - модель элемента списка (каталога)

Класс AmoCatalogElement не имеет собственных специфических методов.

Класс AmoIncomingLead - базовая модель заявки из неразобранного

Работа с заявками из неразобранного существенно отличается от работы с другими сущностями amoCRM.
Согласно официальной документации:

Изначально неразобранное было в отдельном хранилище и являлось отдельной сущностью именно поэтому до сих пор в интерфейсах amoCRM и в API есть особенности которые отличают поведение сделки в статусе Неразобранное от сделок в других статусах.

⚠   Поэтому для моделей заявок из неразобранного не работают следующие методы класса AmoObject:

Общие методы для работы с заявками из неразобранного

Абстрактный базовый класс модели заявки из неразобранного - AmoIncomingLead содержит следующие методы:

Статические методы для пакетного добавления заявок в amoCRM, а также для принятия или отклонения неразобранных заявок находятся в классе AmoAPI.

Класс AmoIncomingLeadForm - модель заявки из неразобранного при добавлении из веб-формы

Дочерний класс AmoIncomingLeadForm не имеет собственных специфических методов.

Класс AmoIncomingLeadSip - модель заявки из неразобранного с типом входящий звонок

Дочерний класс AmoIncomingLeadSip не имеет собственных специфических методов.

Методы для загрузки сущностей

Класс AmoAPI содержит следующие общие статические методы для загрузки сущностей:

Методы для пакетного сохранения сущностей

Класс AmoAPI содержит статические методы для пакетного сохранения (добавления или обновления) за один запрос до 500 сущностей различного типа для одного поддомена amoCRM.

Согласно официальной документации:

Максимальное кол-во создаваемых/изменяем сущностей не более 500, для более оптимальной работы интеграции и избежания ошибок, рекомендуется не более 250. В случае получения 504 ошибки рекомендуется уменьшить количество передаваемых сущностей в запросе и повторить запрос.

Методы для пакетного удаления сущностей

Класс AmoAPI содержит статический метод для пакетного удаления списков и элементов списков:

Методы для webhooks

Класс AmoAPI содержит статические методы для добавления и удаления webhooks:

Методы для неразобранного

Класс AmoAPI содержит следующие статические методы для работы с заявками из неразобранного:

Дополнительные методы

Дополнительные статические методы класса AmoAPI:

Блокировка одновременного обновления одной сущности

При одновременном обновлении одной и той же сущности (сделки, контакта, компании и т.д. с одинаковым ID) в разных процессах или потоках исполнения в API amoCRM может возникать ошибка "Last modified date is older than in database" из-за передаваемого вместе с запросом на обновление значения updated_at сущностей.

Для предотвращения возникновения данной ошибки в методе save() реализован механизм блокировки одновременного обновления одной сущности. До окончания обновления сущности в первом по времени запущенном процессе (потоке исполнения), то есть до получения ответа от API amoCRM, другие процессы, конкурирующие за обновление той же сущности, приостанавливаются и предпринимают повторные попытки выполнить обновление сущности каждые AmoAPI::$lockEntityTimeout секунд с максимально допустимым числом попыток AmoAPI::$lockEntityAttempts.

Троттлинг запросов к API

Для предотвращения превышения максимально допустимого числа запросов к API amoCRM (не более 7 запросов в секунду) в рамках одного процесса или потока исполнения в библиотеке реализован простой алгоритм троттлинга запросов, основанный на вычислении времени, прошедшего с момента отправки последнего запроса к API, и приостановке процесса до истечения 1/AmoAPI::$throttle секунд.

Отладочный режим и логирование

При включении отладочного режима AmoAPI::$debug = true информация о каждом запросе/ответе к API amoCRM выводится в STDOUT.

Для логирования каждого запроса/ответа к API amoCRM может быть использован произвольный класс-логгер, реализующий стандарт PSR-3, или простейший класс-логгер AmoAPIDebugLogger. Объект класса-логгера устанавливается в свойстве AmoAPI::$debugLogger. Логирование выполняется независимо от состояния отладочного режима AmoAPI::$debug. При каждом запросе/ответе к API в классе-логгере вызывается метод debug().

В конструктор класса AmoAPIDebugLogger может быть передано имя лог-файла:

Обработка ошибок

При возникновении ошибок выбрасывается исключение с объектом класса \AmoCRM\AmoAPIException.
Класс-исключение AmoAPIException содержит следующие вспомогательные методы:

Примеры

Работа с контактами

Работа с компаниями

Работа со сделками

Работа с заявками из неразобранного существенно отличается от работы со сделками. Для них используются специальные методы.

Работа с событиями

Работа с задачами

Работа со списками (каталогами)

Работа с элементами списков (каталогов)

Работа с webhooks

Работа с заявками из неразобранного

Работа с заявками из неразобранного существенно отличается от работы с другими сущностями amoCRM.
Согласно официальной документации:

Изначально неразобранное было в отдельном хранилище и являлось отдельной сущностью именно поэтому до сих пор в интерфейсах amoCRM и в API есть особенности которые отличают поведение сделки в статусе Неразобранное от сделок в других статусах.

Пример работы с заявками из неразобранного при добавлении из веб-формы.

Поддержка AJAX-запросов к frontend-методам

Метод \AmoCRM\AmoAPI::request() позволяет выполнять AJAX-запросы к frontend-методам.

`

Пример ответа (фрагмент):

Работа с несколькими поддоменами

Отладка и логирование

UML-диаграмма классов

Автор

© 2019-2021 andrey-tech

Лицензия

Данная библиотека распространяется на условиях лицензии MIT.


All versions of amocrm-api-php with dependencies

PHP Build Version
Package Version
Requires php Version >=7.0
ext-curl Version *
ext-json Version *
ext-mbstring Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package andrey-tech/amocrm-api-php contains the following files

Loading the files please wait ....