PHP code example of andrei-mireichyk / amocrm-api-library

1. Go to this page and download the library: Download andrei-mireichyk/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/ */

    

andrei-mireichyk / amocrm-api-library example snippets


$apiClient = new \AmoCRM\Client\AmoCRMApiClient($clientId, $clientSecret, $redirectUri);

$apiClientFactory = new \AmoCRM\AmoCRM\Client\AmoCRMApiClientFactory($oAuthConfig, $oAuthService);
$apiClient = $apiClientFactory->make();

$apiClient->setAccessToken($accessToken)
        ->setAccountBaseDomain($accessToken->getValues()['baseDomain'])
        ->onAccessTokenRefresh(
            function (\League\OAuth2\Client\Token\AccessTokenInterface $accessToken, string $baseDomain) {
                saveToken(
                    [
                        'accessToken' => $accessToken->getToken(),
                        'refreshToken' => $accessToken->getRefreshToken(),
                        'expires' => $accessToken->getExpires(),
                        'baseDomain' => $baseDomain,
                    ]
                );
            });

$apiClient->getOAuthClient()->getOAuthButton(
            [
                'title' => 'Установить интеграцию',
                'compact' => true,
                'class_name' => 'className',
                'color' => 'default',
                'error_callback' => 'handleOauthError',
                'state' => $state,
            ]
        );

$authorizationUrl = $apiClient->getOAuthClient()->getAuthorizeUrl([
            'state' => $state,
            'mode' => 'post_message', //post_message - редирект произойдет в открытом окне, popup - редирект произойдет в окне родителе
        ]);

header('Location: ' . $authorizationUrl);

$accessToken = $apiClient->getOAuthClient()->getAccessTokenByCode($_GET['code']);

$leadsService = $apiClient->leads();

    getOne($id, array $with => []);
    

    get(BaseEntityFilter $filter = null, array $with = []);
    

    addOne(BaseApiModel $model);
    

    add(BaseApiCollection $collection);
    

    updateOne(BaseApiModel $model);
    

    update(BaseApiCollection $collection);
    

    syncOne(BaseApiModel $model, $with = []);
    

    getAuthorizeUrl(array $options = []);
    

    getAccessTokenByCode(string $code);
    

    getAccessTokenByRefreshToken(AccessTokenInterface $accessToken);
    

    setBaseDomain(string $domain);
    

    setAccessTokenRefreshCallback(callable $function);
    

    getOAuthButton(array $options = []);
    

    exchangeApiKey(string $login, string $apiKey);
    

    link(BaseApiModel $model, $linkedEntities);
    

    getLinks(BaseApiModel $model, LinksFilter $filter);
    

    unlink(BaseApiModel $model, $linkedEntities);
    

    deleteOne(BaseApiModel $model);
    

    deleteOne(BaseApiModel $model);
    

    setMode(string $mode, bool $isEnabled = true);
    

   getByParentId(int $parentId, BaseEntityFilter $filter = null, array $with = []);
    

    getCurrent(array $with = []);
    

    addOne(BaseApiModel $model);
    

    add(BaseApiCollection $collection);
    

    link(BaseApiModel $unsortedModel, $body = []);
    

    accept(BaseApiModel $unsortedModel, $body = []);
    

    decline(BaseApiModel $unsortedModel, $body = []);
    

    summary(BaseEntityFilter $filter);
    

    subscribe(WebhookModel $webhookModel);
    

    unsubscribe(WebhookModel $webhookModel);
    

    install(WidgetModel $widgetModel);
    

    uninstall(WidgetModel $widgetModel);
    

    settings();
    

    updateSettings(ProductsSettingsModel $productsSettings);
    

//Создадим модель сущности
$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'];

/**
 * Одноразовый токен для интеграций, для того чтобы его получить используйте
 * метод this.$authorizedAjax() в своей интеграции
 * Подробнее: @link https://www.amocrm.ru/developers/content/web_sdk/mechanics
 *
 * Данный токен должен передаваться в заголовках вместе с запросом на ваш удаленный сервер
 * X-Auth-Token: {disposable_token}
 * Время жизни токена: 30 минут
 *
 * Расшифруем пришедший токен и получим модель с информацией
 * Подробнее: @see DisposableTokenModel
 * @example examples/parse_disposable_token.php
 */
$disposableTokenModel = $apiClient->getOAuthClient()
    ->parseDisposableToken($token);
prepend(BaseApiModel $value): self
getBy($key, $value): ?BaseApiModel
replaceBy($key, $value, BaseApiModel $replacement): void