На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Начало работы с API от AmoCRM на PHP



Довольно долгое время уже выполняю задачи, связанные с работой с AmoCRM, с внешним к ней взаимодействием через API. Ниже в заметке расскажу о впечатлении и порядке работы с ней, подключении.

Плюсы

Сначала много хорошего

  • Шустрая CRM
  • Много документации
  • Пробный период
  • Пытающаяся помочь техподдержка
  • После запуска и отладки проблем обычно нет
  • Информативные сообщения по ошибкам
Минусы

Есть и недостатки

  • Лимиты
  • Иногда недоступна
  • Много версий API
  • Много документации
  • Неочевидные вещи
  • Не самая простая первоначальная настройка
Подключение

Давайте с последнего минуса и начнем. Не самый большой минус, но все же. Итак, для начала надо перейти в amoMarket и вверху в меню выбрать «Создать интеграцию». Я довольно много времени потратил на поиск, для того кто видит в первый раз это не очевидно.



Дальше выбираем "Внешняя интеграция" – так как нам нужно только взаимодействие по апи. Обратите внимание на еще один момент. Хотя интеграции в одной крм будут видны всем пользователям, которым положено её видеть, но создавайте интеграцию только под тем пользователем, который вы не собираетесь удалять. Так как после удаления пользователя она хоть и останется, но просто прекратит работу. Также не очень очевидный для меня момент, но видимо разработчикам AmoCRM виднее.

При создании необходимо будет добавить и запомнить (сохранить) ссылку для перенаправления – это один из необходимых параметров для апи. После создания у вас будет еще три основных параметра.



Эти параметры сохраните в такую табличку и добавьте туда еще и субдомен. Поля для токенов создайте, но оставьте пустыми



Дальше надо написать три функции. Достаем данные из базы

 
function get_all_val_amo(){
	global $conn;
	$ret = Array();
	$query3 ="SELECT * FROM `amo_settings`";
	if ($result3 = $conn->query($query3)) {	
		while ($row3 = $result3->fetch_assoc()) {
			$ret[$row3['komm']] = $row3['val'];
		}
	}
	return $ret;
}
Обновляем данные в базе

 
function set_settings_amo($arr){
	global $conn;

	foreach ($arr as $komm=>$val){
		$query3 = "UPDATE `amo_settings` SET `val` = '$val' WHERE `komm` = '$komm'";
		mysqli_query($conn, $query3) or die (mysqli_error($conn));
	}		
}
И самая главная – которая получает эти самые данные от амо крм

 
function update_amo_tokens() {
	$all_val = get_all_val_amo();

	$client_id = $all_val['client_id'];
	$client_secret = $all_val['client_secret'];
	$refresh_token = $all_val['refresh_token'];
	$redirect_uri = $all_val['redirect_uri'];
	$subdomain = $all_val['subdomain'];

	$link = 'https://' . $subdomain . '.amocrm.ru/oauth2/access_token'; 
	$data = [
		'client_id' => $client_id,
		'client_secret' => $client_secret,
		'grant_type' => 'refresh_token',
		'refresh_token' => $refresh_token,
		'redirect_uri' => $redirect_uri,
	];

	$curl = curl_init(); //Сохраняем дескриптор сеанса cURL
	curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
	curl_setopt($curl,CURLOPT_URL, $link);
	curl_setopt($curl,CURLOPT_HTTPHEADER,['Content-Type:application/json']);
	curl_setopt($curl,CURLOPT_HEADER, false);
	curl_setopt($curl,CURLOPT_CUSTOMREQUEST, 'POST');
	curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data));
	curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
	curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
	$out = curl_exec($curl); 
	$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
	curl_close($curl);

	$code = (int)$code;
	$errors = [
		400 => 'Bad request',
		401 => 'Unauthorized',
		403 => 'Forbidden',
		404 => 'Not found',
		500 => 'Internal server error',
		502 => 'Bad gateway',
		503 => 'Service unavailable',
	];

	try
	{
		if ($code < 200 || $code > 204) {
			throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undefined error', $code);
		}
	}
	catch(\Exception $e)
	{
		die('Ошибка: ' . $e->getMessage() . PHP_EOL . 'Код ошибки: ' . $e->getCode());
	}


	$response = json_decode($out, true);

	If ($response) {
	set_settings_amo($response);
}
}
Теперь надо создать файл PHP с этими функциями прямо в нем например и вызовом последней:

 
<?php
update_amo_tokens();
?>
И вызывать его один раз из браузера в течении 20 минут после создания или изменения интеграции. А потом поставить на выполнение по крону раз в сутки, например в 3 часа утра. Это был первый этап подключения к апи, теперь у вас всегда есть актуальный токен и можно писать функции поиска и выгрузки в амокрм, которые весьма интересны и отличаются в разных версиях апи. Чем мы и займемся в следующих статьях.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, api, amocrm, crm





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Урок 3. Добавление Vue в проект и создание приложения
Введение в 3D графику для новичков


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.