PHP code example of livevasiliy / amocrm-api-library
1. Go to this page and download the library: Download livevasiliy/amocrm-api-library library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
livevasiliy / amocrm-api-library example snippets
$apiClient = new \AmoCRM\Client\AmoCRMApiClient($clientId, $clientSecret, $redirectUri);
$apiClientFactory = new \AmoCRM\Client\AmoCRMApiClientFactory($oAuthConfig, $oAuthService);
$apiClient = $apiClientFactory->make();
//Создадим модель сущности
$lead = new LeadModel();
$lead->setId(1);
//Создадим коллекцию полей сущности
$leadCustomFieldsValues = new CustomFieldsValuesCollection();
//Создадим модель значений поля типа текст
$textCustomFieldValuesModel = new TextCustomFieldValuesModel();
//Укажем ID поля
$textCustomFieldValuesModel->setFieldId(123);
//Добавим значения
$textCustomFieldValuesModel->setValues(
(new TextCustomFieldValueCollection())
->add((new TextCustomFieldValueModel())->setValue('Текст'))
);
//Добавим значение в коллекцию полей сущности
$leadCustomFieldsValues->add($textCustomFieldValuesModel);
//Установим в сущности эти поля
$lead->setCustomFieldsValues($leadCustomFieldsValues);
//Создадим модель сущности
$lead = new LeadModel();
$lead->setId(1);
//Создадим коллекцию полей сущности
$leadCustomFieldsValues = new CustomFieldsValuesCollection();
//Создадим модель значений поля типа текст
$textCustomFieldValuesModel = new TextCustomFieldValuesModel();
//Укажем ID поля
$textCustomFieldValuesModel->setFieldId(123);
//Обнулим значения
$textCustomFieldValuesModel->setValues(
(new NullCustomFieldValueCollection())
);
//Добавим значение в коллекцию полей сущности
$leadCustomFieldsValues->add($textCustomFieldValuesModel);
//Установим сущности эти поля
$lead->setCustomFieldsValues($leadCustomFieldsValues);
//Создадим модель сущности
$lead = new LeadModel();
$lead->setId(1);
//Создадим коллекцию тегов с тегами и установим их в сущности
$lead->setTags((new TagsCollection())
->add(
(new TagModel())
->setName('тег')
)->add(
(new TagModel())
->setId(123123)
)
);
//Создадим модель сущности
$lead = new LeadModel();
$lead->setId(1);
//Создадим коллекцию тегов с тегами и установим их в сущности
$lead->setTags(
TagsCollection::fromArray([
[
'name' => 'тег',
],
[
'id' => 123,
],
])
);
//Создадим модель сущности
$lead = new LeadModel();
$lead->setId(1);
//Удалим теги
$lead->setTags((new NullTagsCollection()));
/**
* Получим модель с информацией о домене аккаунта по access_token
* Подробнее: @see AccountDomainModel
*
* Запрос уходит на www.amocrm.ru/oauth2/account/subdomain
* С Authorization: Bearer {access_token}
* curl 'https://www.amocrm.ru/oauth2/account/subdomain' -H 'Authorization: Bearer {access_token}'
*
* @example examples/get_account_subdomain.php
*/
$accountDomain = $apiClient->getOAuthClient()
->getAccountDomain($accessToken);
// Возьмём из полученной модели текущий subdomain аккаунта и засетим наш апи клиент
$apiClient->setAccountBaseDomain($accountDomain->getSubdomain());
// ... дальше продолжаем работу с апи клиентом
// Как пример, получим заголовки с реквеста
// И получим нужный нам X-Auth-Token
$token = $_SERVER['HTTP_X_AUTH_TOKEN'];
try {
/**
* Одноразовый токен для интеграций, для того чтобы его получить используйте
* метод this.$authorizedAjax() в своей интеграции
* Подробнее: @link https://www.amocrm.ru/developers/content/web_sdk/mechanics
*
* Данный токен должен передаваться в заголовках вместе с запросом на ваш удаленный сервер
* X-Auth-Token: {disposable_token}
* Время жизни токена: 30 минут
*
* Расшифруем пришедший токен и получим модель с информацией
* Подробнее: @see DisposableTokenModel
*/
$disposableTokenModel = $apiClient->getOAuthClient()
->parseDisposableToken($token);
var_dump($disposableTokenModel->toArray());
} catch (DisposableTokenExpiredException $e) {
// Время жизни токена истекло
printError($e);
die;
} catch (DisposableTokenInvalidDestinationException $e) {
// Не прошёл проверку на адресата токена
printError($e);
die;
} catch (DisposableTokenVerificationFailedException $e) {
// Токен не прошел проверку подписи
printError($e);
die;
}
$token = 'XXX';
try {
/**
* Одноразовый токен для ботов, его вы можете получить, сделав вызов widget_request в виджете в боте
* Подробнее: @link https://www.amocrm.ru/developers/content/digital_pipeline/salesbot#handler-widget_request
*
* Данный токен содержит в себе информацию об аккаунте и о сущности, с которой работает бот
* Для продолжения бота необходимо сделать запрос на метод, который был получен в теле хука
* Подробнее: @link https://www.amocrm.ru/developers/content/crm_platform/widgets-api#widget-continue
*
* Расшифруем пришедший токен и получим модель с информацией
* Подробнее: @see BotDisposableTokenModel
*/
$botDisposableTokenModel = $apiClient->getOAuthClient()
->parseBotDisposableToken($token);
var_dump($botDisposableTokenModel->toArray());
} catch (DisposableTokenExpiredException $e) {
// Время жизни токена истекло
printError($e);
die;
} catch (DisposableTokenInvalidDestinationException $e) {
// Не прошёл проверку на адресата токена
printError($e);
die;
} catch (DisposableTokenVerificationFailedException $e) {
// Токен не прошел проверку подписи
printError($e);
die;
}