Amocrm api добавление сделки

Для добавления сделки через API amoCRM необходимо, обратиться к методу POST leads/set в документации и в массиве данных отправить
$leads[‘request’][‘leads’][‘add’] . В самом массиве нам потребуется связать сделку с добавленным контактом, который инициировал обращение.

Но, перед этим, нам необходимо авторизоваться в API AMOCRM, для это нужно знать свой логин в системе и хеш-авторизации, который находится в настройках профиля.

Авторизация

Далее мы формируем запрос к API для авторизации

Далее сам процесс создания сделки в AMO CRM из данных с формы нашего сайта. (В нашем случае сайт был на CMS ModX, но принципиальной разницы от выбранной CMS нет).

И далее снова запрос к API как и показано было выше, только теперь обращаемся к скрипту сделок

Последний шаг, это создание контакта и связывание его со сделкой, чтобы в личном кабинете, при поступлении заявки, сразу формировался новый контакт из данных формы и задача в сделках была связанна с этим контактом.

И далее снова запрос к API AmoCRM к скрипту добавление контактов

При создании в AMO после заявки с формы сразу сущности leads с заполненными полями для API версии 2.0, у которого немного изменилась структура массива, который отправляется в CURL, запрос надо видоизменить

Если вы не поняли всё равно в итоге, как добавлять сделку в Amo CRM, то мы можем помочь вам в интеграции форм AMOCRM и автоматизировать добавление сделки в личный кабинет AmoCRM с вашего сайта.
Стоимость интеграции

Последние события

Управление проектами — правильный путь для начинающих. Новая книга Петра Дикого

27.08.2019
Создание новостного портала Науки и Техники

Клиенту был нужен новостной блог под рекламу и продвижение продукта, мы быстро и профессионально организовали сайт Science & Tech.

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

В ней есть метод авторизации, метод запросов, свойство авторизован или нет и служебный метод для вывода дампа с форматированием.

Рабочий пример авторизации в апи AmoCRM и запрос на последние сделки по api.
require_once(‘hamtim-amocrm.php’);
$amo = new HamtimAmocrm(‘test@email.com’/*логин*/, ‘API’/*api ключ*/, ‘SUBDOMAIN’/*субдомен*/);

if(!$amo->auth) die(‘Нет соединения с amoCRM’);

//все примеры запросов на https://developers.amocrm.ru/rest_api/
//получаем список сделок в работе
$path = ‘/private/api/v2/json/leads/list’;

//формируем дату -1 день
$ifModifiedSince = date(‘D, d M Y H:i:s’, (time()-1*24*3600));

//если передается пустой массив fields, то данные post не передаются в заголовке запроса
$fields = array();

//делаем запрос
$leads = $amo->q($path, $fields, $ifModifiedSince);

if(!$leads) die(‘Сделок в работе не найдено’);

//выводим дамп с сделками из ответа
print_r($leads);

Как видите достаточно сложный запрос легко сделать с помощью моей библиотеки.

Создание сделки с помощью api AmoCRM
//создаем новую сделку
$path = ‘/private/api/v2/json/leads/set’;
$fields[‘request’][‘leads’][‘add’]=array(
array(
‘name’=>’Название сделки’,
‘status_id’=>12345,#id статуса, обязательное поле
//’responsible_user_id’=>12345,#id Отвественного
‘tags’ => ‘создано с помощью hamtim.ru’, #Теги
)
);
$leadAnswer = $amo->q($path, $fields);

Как работать с библиотекой (по шагам)

  1. Подключаем с помощью require или include
  2. Создаем объект с параметрами авторизации $amo = new HamtimAmocrm(‘test@email.com’/*логин*/, ‘API’/*api ключ*/, ‘SUBDOMAIN’/*субдомен*/);
  3. Авторизуемся
    if(!$amo->auth) die(‘Нет соединения с amoCRM’);
  4. Делаем запросы к aпи амоцрм

Вопросы, предложения и благодарности пишите в комментариях.
Нужна разработка? Свяжитесь со мной.

// amo
// ПРЕДОПРЕДЕЛЯЕМЫЕ ПЕРЕМЕННЫЕ
$responsible_user_id = 7292136 ; // id ответственного по сделке, контакту, компании
$lead_name = ‘ Заявка с сайта ‘ ; // Название добавляемой сделки
$lead_status_id = ‘ 11331793 ‘ ; // id этапа продаж, куда помещать сделку
$contact_name = $cname ; // Название добавляемого контакта
$contact_phone = $cphone ; // Телефон контакта
$contact_email = $cemail ; // Емейл контакта
// АВТОРИЗАЦИЯ
$user = array (
‘ USER_LOGIN ‘ => ‘ ### ‘ , # Ваш логин (электронная почта)
‘ USER_HASH ‘ => ‘ ### ‘ # Хэш для доступа к API (смотрите в профиле пользователя)
);
$subdomain = ‘ ### ‘ ;
# Формируем ссылку для запроса
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/auth.php?type=json ‘ ;
$curl = curl_init (); # Сохраняем дескриптор сеанса cURL
# Устанавливаем необходимые опции для сеанса cURL
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $curl , CURLOPT_USERAGENT , ‘ amoCRM-API-client/1.0 ‘ );
curl_setopt ( $curl , CURLOPT_URL , $link );
curl_setopt ( $curl , CURLOPT_POST , true );
curl_setopt ( $curl , CURLOPT_POSTFIELDS , http_build_query ( $user ));
curl_setopt ( $curl , CURLOPT_HEADER , false );
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , 0 );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYHOST , 0 );
$out = curl_exec ( $curl ); # Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo ( $curl , CURLINFO_HTTP_CODE ); # Получим HTTP-код ответа сервера
curl_close ( $curl ); # Завершаем сеанс cURL
$Response = json_decode ( $out , true );
// echo ‘Авторизация:‘; echo »;
// ПОЛУЧАЕМ ДАННЫЕ АККАУНТА
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/v2/json/accounts/current ‘ ; # $subdomain уже объявляли выше
$curl = curl_init (); # Сохраняем дескриптор сеанса cURL
# Устанавливаем необходимые опции для сеанса cURL
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $curl , CURLOPT_USERAGENT , ‘ amoCRM-API-client/1.0 ‘ );
curl_setopt ( $curl , CURLOPT_URL , $link );
curl_setopt ( $curl , CURLOPT_HEADER , false );
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , 0 );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYHOST , 0 );
$out = curl_exec ( $curl ); # Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo ( $curl , CURLINFO_HTTP_CODE );
curl_close ( $curl );
$Response = json_decode ( $out , true );
$account = $Response [ ‘ response ‘ ][ ‘ account ‘ ];
// echo ‘Данные аккаунта:‘; echo »;
// ПОЛУЧАЕМ СУЩЕСТВУЮЩИЕ ПОЛЯ
$amoAllFields = $account [ ‘ custom_fields ‘ ]; // Все поля
$amoConactsFields = $account [ ‘ custom_fields ‘ ][ ‘ contacts ‘ ]; // Поля контактов
// echo ‘Поля из амо:‘; echo »;
// ФОРМИРУЕМ МАССИВ С ЗАПОЛНЕННЫМИ ПОЛЯМИ КОНТАКТА
// Стандартные поля амо:
$sFields = array_flip ( array (
‘ PHONE ‘ , // Телефон. Варианты: WORK, WORKDD, MOB, FAX, HOME, OTHER
‘ EMAIL ‘ // Email. Варианты: WORK, PRIV, OTHER
)
);
// Проставляем id этих полей из базы амо
foreach ( $amoConactsFields as $afield ) <
if ( isset ( $sFields [ $afield [ ‘ code ‘ ]])) <
$sFields [ $afield [ ‘ code ‘ ]] = $afield [ ‘ >’ ];
>
>
// ДОБАВЛЯЕМ СДЕЛКУ
$leads [ ‘ request ‘ ][ ‘ leads ‘ ][ ‘ add ‘ ] = array (
array (
‘ name ‘ => $lead_name ,
‘ status_ >’ => $lead_status_id , // id статуса
‘ responsible_user_ >’ => $responsible_user_id , // id ответственного по сделке
// ‘date_create’=>1298904164, //optional
// ‘price’=>300000,
// ‘tags’ => ‘Important, USA’, #Теги
// ‘custom_fields’=>array()
)
);
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/v2/json/leads/set ‘ ;
$curl = curl_init (); # Сохраняем дескриптор сеанса cURL
# Устанавливаем необходимые опции для сеанса cURL
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $curl , CURLOPT_USERAGENT , ‘ amoCRM-API-client/1.0 ‘ );
curl_setopt ( $curl , CURLOPT_URL , $link );
curl_setopt ( $curl , CURLOPT_CUSTOMREQUEST , ‘ POST ‘ );
curl_setopt ( $curl , CURLOPT_POSTFIELDS , json_encode ( $leads ));
curl_setopt ( $curl , CURLOPT_HTTPHEADER , array ( ‘ Content-Type: application/json ‘ ));
curl_setopt ( $curl , CURLOPT_HEADER , false );
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , 0 );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYHOST , 0 );
$out = curl_exec ( $curl ); # Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo ( $curl , CURLINFO_HTTP_CODE );
$Response = json_decode ( $out , true );
// echo ‘Новая сделка:‘; echo »;
if ( is_array ( $Response [ ‘ response ‘ ][ ‘ leads ‘ ][ ‘ add ‘ ]))
foreach ( $Response [ ‘ response ‘ ][ ‘ leads ‘ ][ ‘ add ‘ ] as $lead ) <
$lead_id = $lead [ " >" ]; // id новой сделки
>;
// ДОБАВЛЯЕМ СДЕЛКУ — КОНЕЦ
// ДОБАВЛЕНИЕ КОНТАКТА
$contact = array (
‘ name ‘ => $contact_name ,
‘ linked_leads_ >’ => array ( $lead_id ), // id сделки
‘ responsible_user_ >’ => $responsible_user_id , // id ответственного
‘ custom_fields ‘ => array (
array (
‘ >’ => $sFields [ ‘ PHONE ‘ ],
‘ values ‘ => array (
array (
‘ value ‘ => $contact_phone ,
‘ enum ‘ => ‘ MOB ‘
)
)
),
array (
‘ >’ => $sFields [ ‘ EMAIL ‘ ],
‘ values ‘ => array (
array (
‘ value ‘ => $contact_email ,
‘ enum ‘ => ‘ WORK ‘
)
)
)
)
);
$set [ ‘ request ‘ ][ ‘ contacts ‘ ][ ‘ add ‘ ][] = $contact ;
# Формируем ссылку для запроса
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/v2/json/contacts/set ‘ ;
$curl = curl_init (); # Сохраняем дескриптор сеанса cURL
# Устанавливаем необходимые опции для сеанса cURL
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $curl , CURLOPT_USERAGENT , ‘ amoCRM-API-client/1.0 ‘ );
curl_setopt ( $curl , CURLOPT_URL , $link );
curl_setopt ( $curl , CURLOPT_CUSTOMREQUEST , ‘ POST ‘ );
curl_setopt ( $curl , CURLOPT_POSTFIELDS , json_encode ( $set ));
curl_setopt ( $curl , CURLOPT_HTTPHEADER , array ( ‘ Content-Type: application/json ‘ ));
curl_setopt ( $curl , CURLOPT_HEADER , false );
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , 0 );
curl_setopt ( $curl , CURLOPT_SSL_VERIFYHOST , 0 );
$out = curl_exec ( $curl ); # Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo ( $curl , CURLINFO_HTTP_CODE );
CheckCurlResponse( $code );
$Response = json_decode ( $out , true );
// ДОБАВЛЕНИЕ КОНТАКТА — КОНЕЦ
// amo
? >

This comment has been minimized.

Copy link Quote reply

rustamgaliev commented Mar 31, 2018

а как добавлять сделку в неразобранное?

This comment has been minimized.

Copy link Quote reply

jackillman commented Apr 11, 2018

Можешь подсказать, как сюда добавить переменную "город"?

This comment has been minimized.

Copy link Quote reply

jackillman commented Apr 11, 2018

Очень нужно, помоги пож

This comment has been minimized.

Copy link Quote reply

webag commented Apr 11, 2018

Если раскомментить 68 строку, то в ответ в консоли получим все кастомные поля контакта. отсюда узнаем id нужного поля.
Затем когда формируем массив на создание контакта добавляем новое значение типа того:
‘custom_fields’=>array( array( ‘id’ => $sFields[‘PHONE’], ‘values’ => array( array( ‘value’ => $contact_phone, ‘enum’ => ‘MOB’ ) ) ), array( ‘id’ => $sFields[‘EMAIL’], ‘values’ => array( array( ‘value’ => $contact_email, ‘enum’ => ‘WORK’ ) ) ) , array( ‘id’ => ****ID_НУЖНОГО_ПОЛЯ****, ‘values’ => array( array( ‘value’ => ***Значение из вашей формы или откуда-то еще***, ) ) ) )


[an error occurred while processing the directive]
Карта сайта