240 lines
9.0 KiB
PHP
240 lines
9.0 KiB
PHP
<?php
|
|
|
|
namespace integration;
|
|
|
|
class AMOCRM{
|
|
public static $AMO_SUBDOMAIN = "";
|
|
public static $AMO_LOGIN = "";
|
|
public static $AMO_HASH = "";
|
|
|
|
public static $AMO_TAGS = "";
|
|
public static $AMO_PRICE = "0";
|
|
public static $AMO_NAME = "";
|
|
|
|
|
|
|
|
const TO_CONTACT = 1;
|
|
const TO_DEAL = 2;
|
|
const TO_COMPANY = 3;
|
|
const TO_TASK = 4;
|
|
const TO_BUYER = 12;
|
|
|
|
|
|
const NOTE_TYPE_DEAL_CREATED = 1;//"DEAL_CREATED";
|
|
const NOTE_TYPE_CONTACT_CREATED = 2;//"CONTACT_CREATED";
|
|
const NOTE_TYPE_DEAL_STATUS_CHANGED = 3;//"DEAL_STATUS_CHANGED";
|
|
const NOTE_TYPE_COMMON = 4;//"COMMON";
|
|
const NOTE_TYPE_COMPANY_CREATED = 12;//"COMPANY_CREATED ";
|
|
const NOTE_TYPE_TASK_RESULT = 13;//"TASK_RESULT";
|
|
const NOTE_TYPE_SYSTEM = 25;//"SYSTEM";
|
|
const NOTE_TYPE_SMS_IN = 102;//"SMS_IN";
|
|
const NOTE_TYPE_SMS_OUT = 103;//"SMS_OUT";
|
|
|
|
|
|
static function init($subdomain,$login,$hash){
|
|
self::$AMO_SUBDOMAIN = $subdomain;
|
|
self::$AMO_LOGIN = $login;
|
|
self::$AMO_HASH = $hash;
|
|
}
|
|
|
|
public static function link($link = ''){
|
|
return 'https://'.self::$AMO_SUBDOMAIN.'.amocrm.ru/private/api/'.$link;
|
|
}
|
|
public static function publicLink($link = ''){
|
|
return 'https://'.self::$AMO_SUBDOMAIN.'.amocrm.ru/api/'.$link;
|
|
}
|
|
public static function auth(){
|
|
$data = array(
|
|
'USER_LOGIN'=>self::$AMO_LOGIN,
|
|
'USER_HASH' =>self::$AMO_HASH
|
|
);
|
|
$link = self::link('auth.php?type=json');
|
|
self::query($link,$data);
|
|
}
|
|
|
|
public static function addNote($data){
|
|
|
|
$notes['request']['notes']['add']=array(
|
|
//$notes['add']=array(
|
|
array(
|
|
'element_id' => $data['oid'],
|
|
'element_type' => $data['to'],
|
|
'note_type' => $data['note_type'],
|
|
'created_at' => time(),
|
|
'text'=>$data['text'],
|
|
)
|
|
);
|
|
$link = self::link('v2/json/notes/set');
|
|
return self::query($link,$notes);
|
|
}
|
|
|
|
public static function updateLeads($leads){
|
|
//$data['request']['leads']['update']=$leads;
|
|
//$link = self::link('v2/json/leads/set');
|
|
$data['update']=$leads;
|
|
$link = self::publicLink('v2/leads');
|
|
return self::query($link,$data);
|
|
}
|
|
|
|
public static function getLeadByID($id){
|
|
$link = self::link('v2/json/leads/?id='.$id);
|
|
return self::query($link,[],'GET');
|
|
}
|
|
|
|
public static function addLead($data){
|
|
/*
|
|
$leads['request']['leads']['add']=array(
|
|
array(
|
|
'name' =>$data['name']?$data['name']:'Аноним',
|
|
'tags' =>$data['tags']?$data['tags']:self::$AMO_TAGS,
|
|
'price' =>$data['price']?$data['price']:self::$AMO_PRICE,
|
|
'status_id' =>$data['status_id']?$data['status_id']:null,
|
|
'pipeline_id' =>$data['pipeline_id']?$data['pipeline_id']:null,
|
|
'custom_fields'=>$data['custom_fields']?$data['custom_fields']:[],
|
|
'catalog_elements_id'=>$data['catalog_elements_id']?$data['catalog_elements_id']:[],
|
|
)
|
|
);
|
|
$link = self::link('v2/json/leads/set');
|
|
/**/
|
|
|
|
|
|
$leads['add']=array(
|
|
array(
|
|
'name' =>$data['name']?$data['name']:'Аноним',
|
|
'tags' =>$data['tags']?$data['tags']:self::$AMO_TAGS,
|
|
'price' =>$data['price']?$data['price']:self::$AMO_PRICE,
|
|
'status_id' =>$data['status_id']?$data['status_id']:null,
|
|
'pipeline_id' =>$data['pipeline_id']?$data['pipeline_id']:null,
|
|
'custom_fields'=>$data['custom_fields']?$data['custom_fields']:[],
|
|
'catalog_elements_id'=>$data['catalog_elements_id']?$data['catalog_elements_id']:[],
|
|
)
|
|
);
|
|
$link = self::publicLink('v2/leads');
|
|
|
|
return self::query($link,$leads);
|
|
}
|
|
|
|
public static function getContacts($a){
|
|
// https://developers.amocrm.ru/rest_api/contacts_list.php
|
|
$s = array();
|
|
foreach ($a as $k=>$v)
|
|
$s[] = $k.'='.$v;
|
|
$link = self::link('v2/json/contacts/list?'.implode('&',$s));
|
|
return self::query($link,$a,'GET');
|
|
}
|
|
|
|
public static function linkPost($a){
|
|
// https://developers.amocrm.ru/rest_api/links/set.php
|
|
$arr['request']['links']['link'] = $a;
|
|
$link = self::link('v2/json/links/set');
|
|
return self::query($link,$arr,'POST');
|
|
}
|
|
|
|
|
|
public static function getCurrent(){
|
|
$link = self::link('v2/json/accounts/current');
|
|
return self::query($link,array(),'');
|
|
}
|
|
|
|
|
|
public static function addTask($lead_id,$user_id){
|
|
/*
|
|
$contacts['request']['tasks']['add']=array(
|
|
array(
|
|
'element_id'=>$lead_id,
|
|
'responsible_user_id'=>$user_id,
|
|
'element_type'=>2,
|
|
'task_type'=>1,
|
|
'text'=>'Позвонить по сделке',
|
|
'complete_till'=>time()+60*60*12,
|
|
)
|
|
);
|
|
//echo '<pre>'.print_r($contacts).'</pre>';
|
|
$link = self::link('v2/json/tasks/set');
|
|
return $res = self::query($link,$contacts);
|
|
/**/
|
|
}
|
|
public static function addContact($data){
|
|
$contacts['request']['contacts']['add']=array(
|
|
array(
|
|
'name'=>$data['name'],
|
|
'tags'=>self::$AMO_TAGS,
|
|
'linked_leads_id'=>$data['linked_leads_id']?$data['linked_leads_id']:array(),
|
|
'responsible_user_id'=>$data['who']?$data['who']:'',
|
|
//'company_name'=>'SuperStar',
|
|
'custom_fields'=>$data['custom_fields']?$data['custom_fields']:
|
|
// kadigarden..
|
|
[
|
|
array(
|
|
#Телефоны
|
|
'id'=>413859, #Уникальный индентификатор заполняемого дополнительного поля
|
|
'values'=>array(
|
|
array(
|
|
'value'=>$data['phone']?$data['phone']:'-',
|
|
'enum'=>'WORK' #Мобильный
|
|
),
|
|
)
|
|
),
|
|
array(
|
|
#E-mails
|
|
'id'=>413861,
|
|
'values'=>array(
|
|
array(
|
|
'value'=>$data['email']?$data['email']:'-',
|
|
'enum'=>'WORK', #Рабочий
|
|
),
|
|
)
|
|
),
|
|
]
|
|
)
|
|
);
|
|
//echo '<pre>'.print_r($contacts).'</pre>';
|
|
$link = self::link('v2/json/contacts/set');
|
|
return $res = self::query($link,$contacts);
|
|
//var_dump($res);
|
|
}
|
|
|
|
|
|
public static function getCatalogElements($term='',$page=0){
|
|
$link = self::publicLink('v2/catalog_elements/?page='.$page.'&term='.$term);
|
|
return self::query($link,array(['page'=>$page]),'GET');
|
|
}
|
|
|
|
static function addCatalogElements($items=[]){
|
|
$link = self::publicLink('v2/catalog_elements');
|
|
return self::query($link,['add'=>$items]);
|
|
}
|
|
|
|
|
|
static function query($link, $data=array(),$custom_request="POST")
|
|
{
|
|
//echo "<br/>".$link."<br/>";
|
|
|
|
$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);
|
|
if ($custom_request) curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $custom_request);
|
|
if ($data) curl_setopt($curl, CURLOPT_POSTFIELDS, je($data));
|
|
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); #Получим HTTP-код ответа сервера
|
|
curl_close($curl); #Завершаем сеанс cURL
|
|
$out = json_decode($out);
|
|
$out = je($out);
|
|
$out = json_decode($out);
|
|
return $out;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|