PHP code example of dedomorozoff / amocrm-api-php-v4
1. Go to this page and download the library: Download dedomorozoff/amocrm-api-php-v4 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/ */
use AmoCRM\{AmoAPI, AmoAPIException};
use AmoCRM\TokenStorage\TokenStorageException;
try {
// Параметры авторизации по протоколу oAuth 2.0
$clientId = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee';
$clientSecret = 'TFPoaG2A5hp3G3o6opCL8eC9v92Mm0fKQWEHBDwIjedCmVliT4kI3XQcjOOP1s';
$authCode = 'eee60208cc09e3ae3506d667228038345b6578a11d4862094655f630074c8c6ed87a9d804d49b5880e';
$redirectUri = 'https://www.example.com/oauth2/';
$subdomain = 'testsubdomain';
// Первичная авторизация
AmoAPI::oAuth2($subdomain, $clientId, $clientSecret, $redirectUri, $authCode);
// Получение информации об аккаунте вместе с пользователями и группами
print_r(AmoAPI::getAccount($with = 'users,groups'));
} catch (AmoAPIException $e) {
printf('Ошибка авторизации (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
} catch (TokenStorageException $e) {
printf('Ошибка обработки токенов (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoAPIException};
use AmoCRM\TokenStorage\TokenStorageException;
try {
// Последующие авторизации
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Получение информации об аккаунте
print_r(AmoAPI::getAccount());
} catch (AmoAPIException $e) {
printf('Ошибка авторизации (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
} catch (TokenStorageException $e) {
printf('Ошибка обработки токенов (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoAPIException};
use AmoCRM\TokenStorage\DatabaseStorage;
try {
// Параметры авторизации по протоколу oAuth 2.0
$clientId = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee';
$clientSecret = 'TFPoaG2A5hp3G3o6opCL8eC9v92Mm0fKQWEHBDwIjedCmVliT4kI3XQcjOOP1s';
$authCode = 'eee60208cc09e3ae3506d667228038345b6578a11d4862094655f630074c8c6ed87a9d804d49b5880e';
$redirectUri = 'https://www.example.com/oauth2/';
$subdomain = 'testsubdomain';
// Устанавливаем объект класса, обеспечивающего сохранение токенов
AmoAPI::$tokenStorage = new DatabaseStorage();
// Авторизация
AmoAPI::oAuth2($subdomain, $clientId, $clientSecret, $redirectUri, $authCode);
// Получение информации об аккаунте
print_r(AmoAPI::getAccount());
} catch (AmoAPIException $e) {
printf('Ошибка авторизации (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
namespace AmoCRM\TokenStorage;
class DatabaseStorage implements TokenStorageInterface
{
/**
* Сохраняет токены
* @param array $tokens Токены для сохранения
* @param string $domain Полный домен amoCRM
* @return void
*/
public function save(array $tokens, string $domain)
{
// Здесь токены сохраняются в базе данных
}
/**
* Загружает токены
* @param string $domain Полный домен amoCRM
* @return array|null
*/
public function load(string $domain)
{
// Здесь токены извлекаются из базы данных
}
/**
* Проверяет: существуют ли токены для заданного домена amoCRM,
* то есть была ли выполнена первичная авторизация
* @param string $domain Полный домен amoCRM
* @return boolean
*/
public function hasTokens(string $domain) :bool
{
// Здесь проверяется наличие токенов в базе данных
}
}
use AmoCRM\{AmoAPI, AmoAPIException};
try {
// Авторизация в поддомене 1
AmoAPI::oAuth2($subdomain1, $clientId1, $clientSecret1, $redirectUri1, $authCode1);
// Авторизация в поддомене 2
AmoAPI::auth($login2, $hash2, $subdomain2);
//...
// Авторизация в поддомене N
AmoAPI::oAuth2($subdomainN, $clientIdN, $clientSecretN, $redirectUriN, $authCodeN);
} catch (AmoAPIException $e) {
printf('Ошибка авторизации (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoContact, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка ВСЕХ контактов с возможностью фильтрации
$generator = AmoAPI::getAllContacts([
'query' => 'Ганс'
]);
foreach ($generator as $items) {
foreach ($items as $item) {
print_r($item);
}
}
// Загрузка контактов с возможностью фильтрации и постраничной выборки
$items = AmoAPI::getContacts([
'limit_rows' => 100,
'limit_offset' => 1000
]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Создание нового контакта
$contact1 = new AmoContact([
'name' => 'Ганс-Дитрих Геншер',
'responsible_user_id' => 12345678
]);
// Установка дополнительных полей
$contact1->setCustomFields([
'6532343' => 41,
'123456' => [[
'value' => '+79451112233',
'enum' => 'WORK'
]],
'123467' => [[
'value' => '[email protected]',
'enum' => 'WORK'
]]
]);
// Сохранение контакта и получение его ID
$contact1Id = $contact1->save();
// Обновление существующего контакта и получение ответа сервера amoCRM
$contact2 = new AmoContact([
'id' => 12300344,
'name' => 'Улоф Йоаким Пальме'
]);
$contact2->first_name = 'Улоф';
$contact2->last_name = 'Пальме';
print_r($contact1->save($returnResponse = true));
// Пакетное добавление и/или обновление контактов
$items = AmoAPI::saveObjects([ $contact1, $contact2 ]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Заполнение модели контакта по ID контакта
$contact3 = new AmoContact();
$contact3->fillById(12345679);
// Получение всех дополнительных полей контакта
print_r($contact3->custom_fields);
// Получение всех параметров контакта из модели
print_r($contact3->getParams());
// Получение дополнительных полей контакта по ID полей
print_r($contact3->getCustomFields([ 123456, 123467 ]));
// Получение первого значения дополнительного поля контакта по ID поля
print_r($contact3->getCustomFieldValueById(155114));
// Получение всех значений дополнительного поля контакта по ID поля
print_r($contact3->getCustomFieldValueById(155116, $returnFirst = false));
// Получение первого ENUM дополнительного поля контакта по ID поля
print_r($contact3->getCustomFieldValueById(155116, $returnFirst = true, $returnValue = 'enum'));
// Получение всех ENUM дополнительного поля контакта по ID поля
print_r($contact3->getCustomFieldValueById(155116, $returnFirst = false, $returnValue = 'enum'));
// -------------------------------------------------------------------------
// Привязка сделок к контакту по ID сделок
$contact3->addLeads([ 12380925, 12364352 ]);
// Привязка покупателей к контакту по ID покупателей
$contact3->addCustomers([ 1237374, 1239658 ]);
// Добавление тегов к контакту
$contact3->addTags([ 'сотрудник', 'стажер' ]);
// Удаление тегов контакта
$contact3->delTags('курьер');
// Сохранение контакта
$contact3->save();
// -------------------------------------------------------------------------
$items = AmoAPI::getContacts([
'responsible_user_id' => 12373452
]);
// Пакетная привязка сделки к контактам
$contacts = [];
foreach ($items as $item) {
$contacts[] = (new AmoContact($item))->addLeads(12380925);
}
// Пакетное сохранение контактов
AmoAPI::saveObjects($contacts);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoCompany, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка ВСЕХ компаний с возможностью фильтрации
$generator = AmoAPI::getAllCompanies([
'query' => 'OOO',
'limit_offset' => 12000
]);
foreach ($generator as $items) {
foreach ($items as $item) {
print_r($item);
}
}
// Загрузка компаний с возможностью фильтрации и постраничной выборки
$items = AmoAPI::getCompanies([
'responsible_user_id' => 12357492,
'limit_rows' => 250,
'limit_offset' => 1000
]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Создание новой компании
$company1 = new AmoCompany([
'name' => 'ООО МММ',
'responsible_user_id' => 12358394,
]);
// Установка дополнительных полей
$company1->setCustomFields([
'2390423' => 'Город Москва',
'123456' => [[
'value' => '+79457778899',
'enum' => 'WORK'
]],
'123467' => [[
'value' => '[email protected]',
'enum' => 'WORK'
]]
]);
// Привязка контакта
$company1->addContacts(12375435);
// Привязка сделки
$company1->addLeads(12349693);
// Привязка покупателя
$company1->addCustomers(1237374);
// Добавление тега
$company1->addTags('Акционер');
// Сохранение компании и получение ее ID
$companyId = $company1->save();
// Обновление существующей компании и получение ответа сервера amoCRM
$company2 = new AmoCompany([
'id' => 12375435,
'created_by' => 12396034,
'name' => 'ООО Рога и Копыта',
]);
$response = $company2->save($returnResponse = true);
// Пакетное добавление и/или обновление компаний
$items = AmoAPI::saveObjects([ $company1, $company2 ]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Заполнение модели компании по ID
$company3 = new AmoCompany();
$company3->fillById(12375435);
// Получение всех параметров компании из модели
print_r($company3->getParams());
// Получение дополнительных полей компании по ID полей
print_r($company3->getCustomFields([ 123456, 123467, 2390423 ]));
// Получение первого значения дополнительного поля компании по ID поля
print_r($company3->getCustomFieldValueById(2390423));
// Получение всех значений дополнительного поля компании по ID поля
print_r($company3->getCustomFieldValueById(2390423, $returnFirst = false));
// Получение первого subtype дополнительного поля компании по ID поля
print_r($company3->getCustomFieldValueById(2390423, $returnFirst = true, $returnValue = 'subtype'));
// Получение первого ENUM дополнительного поля компании по ID поля
print_r($company3->getCustomFieldValueById(2390423, $returnFirst = true, $returnValue = 'enum'));
// -------------------------------------------------------------------------
$items = AmoAPI::getCompanies([
'responsible_user_id' => 12358394
]);
// Пакетная привязка сделки к компаниям
$companies = [];
foreach ($items as $item) {
$companies[] = (new AmoCompany($item))->addLeads([ 12380925 ]);
}
// Пакетное сохранение компаний
AmoAPI::saveObjects($companies);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoLead, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка ВСЕХ сделок с возможностью фильтрации
$generator = AmoAPI::getAllLeads([
'responsible_user_id' => 12357492
]);
foreach ($generator as $items) {
foreach ($items as $item) {
print_r($item);
}
}
// Загрузка сделок с возможностью фильтрации и постраничной выборки
$items = AmoAPI::getLeads([
'limit_rows' => 250,
'limit_offset' => 2000
]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Создание новой сделки
$lead1 = new AmoLead([
'name' => 'Заказ № 964023',
'responsible_user_id' => 12358394,
'pipeline' => [ 'id' => 45232121 ],
'status_id' => 142,
'sale' => 15000
]);
// Установка дополнительных полей
$lead1->setCustomFields([
'3434323' => 'Акционерное общество',
'3434327' => [ 1121, 1122, 1123 ]
]);
// Привязка контакта
$lead1->addContacts(12375435);
// Привязка компании
$lead1->addCompany(12364643);
// Установка элементов списка
$lead1->setCatalogElements([
93492 => [
9898 => 10,
9899 => 5
]
]);
// Добавление тега
$lead1->addTags('Акционер');
// Сохранение сделки и получение ее ID
$leadId = $lead1->save();
// Обновление существующей компании и получение ответа сервера amoCRM
$lead2 = new AmoLead([
'id' => 123057838,
'sale' => 175000
]);
$response = $lead2->save($returnResponse = true);
// Пакетное добавление и/или обновление сделок
$items = AmoAPI::saveObjects([ $lead1, $lead2 ]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Заполнение модели сделки по ID
$lead3 = new AmoLead();
$lead3->fillById(12328958);
// Отвязка контакта от сделки
$lead3->removeContacts(12345678);
// Отвязка компании от сделки
$lead3->removeCompany(12345671);
// Получение параметров сделки из модели
print_r($lead3->getParams());
// Получение дополнительных полей сделки по ID полей
print_r($lead3->getCustomFields([ 123456, 123467, 2390423 ]));
// Получение первого значения дополнительного поля сделки по ID поля
print_r($lead3->getCustomFieldValueById(2390423));
// Получение всех значений дополнительного поля сделки по ID поля
print_r($lead3->getCustomFieldValueById(2390423, $returnFirst = false));
// Получение всех ENUM дополнительного поля сделки по ID поля
print_r($lead3->getCustomFieldValueById(2390423, $returnFirst = true, $returnValue = 'enum'));
// -------------------------------------------------------------------------
$leads = AmoAPI::getLeads([
'responsible_user_id' => 12358394
]);
// Пакетная привязка компании к сделкам
$leads = [];
foreach ($items as $item) {
$leads[] = (new AmoLead($item))->addCompany(12380925);
}
// Пакетное сохранение сделок
AmoAPI::saveObjects($leads);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoNote, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка ВСЕХ событий, привязанных к сделкам, с возможностью фильтрации
$generator = AmoAPI::getAllNotes([
'type' => 'lead',
'note_type' => AmoNote::COMMON_NOTETYPE
]);
foreach ($generator as $items) {
foreach ($items as $item) {
print_r($item);
}
}
// Загрузка событий, привязанных к контактам, с возможностью фильтрации и постраничной выборки
$items = AmoAPI::getLeads([
'type' => 'contact',
'limit_rows' => 250,
'limit_offset' => 2000
]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Создание нового события типа "обычное примечание", привязанного к сделке
$note = new AmoNote([
'element_id' => 12328687,
'note_type' => AmoNote::COMMON_NOTETYPE,
'element_type' => AmoNOTE::LEAD_TYPE,
'text' => 'Текст примечания к сделке'
]);
// Сохранение события и получение его ID
$noteId = $note->save();
// Обновление существующего события
$note2 = new AmoNote([
'id' => 12300958,
'text' => 'Обновленный текст события'
]);
// Заполнение модели события по ID и изменение текста события
$note3 = new AmoNote();
$note3->fillById(12347842);
$note3->text = 'Новый тест события';
// Получение параметров события из модели
print_r($note3->getParams());
// Пакетное сохранение событий
AmoAPI::saveObjects([ $note2, $note3 ]);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoTask, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка ВСЕХ задач, привязанных к сделкам, с возможностью фильтрации
$generator = AmoAPI::getAllTasks([
'type' => 'lead',
'filter' => [
'task_type' => [ AmoTask::CALL_TASKTYPE, AmoTask::MAIL_TASKTYPE ]
]
]);
foreach ($generator as $items) {
foreach ($items as $item) {
print_r($item);
}
}
// Загрузка задач, с возможностью фильтрации и постраничной выборки
$items = AmoAPI::getTasks([
'responsible_user_id' => 12381202,
'limit_rows' => 100,
'limit_offset' => 800
]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Создание новой задачи типа "написать письмо", привязанной к контакту
$task = new AmoTask([
'task_type' => AmoTASK::MAIL_TASKTYPE,
'element_type' => AmoTask::CONTACT_TYPE,
'element_id' => 12367433,
'text' => 'Необходимо написать письмо',
'complete_till_at' => 1508706000
]);
// Сохранение задачи и получение её ID
$taskId = $task->save();
// Обновление существующей задачи
$task2 = new AmoTask([
'id' => 12311954,
'text' => 'Обновленный текст задачи'
]);
// Привязка сделки к задаче по ID
$task2->addLead(12389536);
// Заполнение модели задачи по ID и изменение текста задачи
$task3 = new AmoTask();
$task3->fillById(12327872);
$task3->text = 'Новый тест события';
// Получение параметров задачи из модели
print_r($task3->getParams());
// Пакетное сохранение задач
AmoAPI::saveObjects([ $task2, $task3 ]);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoCatalog, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка перечня списков с возможностью фильтрации
$items = AmoAPI::getCatalogs();
foreach ($items as $item) {
print_r($item);
}
// Создание нового списка
$catalog = new AmoCatalog([
'name' => 'Товары на складе'
]);
// Сохранение списка и получение его ID
$catalogId = $catalog->save();
// Обновление существующего списка
$catalog2 = new AmoCatalog([
'id' => 7185,
'name' => 'Не товары'
]);
// Заполнение модели списка по ID и изменение названия списка
$catalog3 = new AmoCatalog();
$catalog3->fillById(7187);
$catalog3->name = 'Актуальные товары';
// Получение параметров списка из модели
print_r($catalog3->getParams());
// Пакетное сохранение списков
AmoAPI::saveObjects([ $catalog2, $catalog3 ]);
// Пакетное удаление списков
AmoAPI::deleteObjects([ $catalog2, $catalog3 ]);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use AmoCRM\{AmoAPI, AmoCatalogElement, AmoAPIException};
try {
// Авторизация
$subdomain = 'testsubdomain';
AmoAPI::oAuth2($subdomain);
// Загрузка ВСЕХ элементов заданного списка с возможностью фильтрации
$generator = AmoAPI::getAllCatalogElements([
'catalog_id' => 4422,
'term' => 'Маркер'
]);
foreach ($generator as $items) {
foreach ($items as $item) {
print_r($item);
}
}
// Загрузка элементов заданного списка с фильтрацией с постраничной выборкой
$items = AmoAPI::getCatalogElements([
'catalog_id' => 4422,
'term' => 'Фломастер',
'page' => 21
]);
foreach ($items as $item) {
print_r($item);
}
// -------------------------------------------------------------------------
// Создание нового элемента каталога
$element = new AmoCatalogElement([
'catalog_id' => 4422,
'name' => 'Ручка гелевая'
]);
// Установка дополнительных полей
$element->setCustomFields([
'20423' => 'Артикул 14567323',
'24233' => 120
]);
// Сохранение элемента списка и получение его ID
$elementId = $element->save();
// Обновление существующего элемента списка
$element2 = new AmoCatalogElement([
'id' => 12312312,
'text' => 'Ручка перьевая'
]);
// Заполнение модели элемента списка по ID и изменение имени элемента
$element3 = new AmoCatalogElement();
$element3->fillById(12398096);
$element3->name = 'Карандаш';
// Получение параметров элемента списка из модели
print_r($element3->getParams());
// Пакетное сохранение элементов
AmoAPI::saveObjects([ $element2, $element3 ]);
// Пакетное удаление элементов
AmoAPI::deleteObjects([ $element2, $element3 ]);
} catch (AmoAPIException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}