-
Vadim TsukanovРазработчик
-
Дата публикации03.03.2021
-
КатегорияWordpress
Какие красивые лозунги! Однако интеграция превратилась в не пойми что…
Итак, имеется логин/пароль от CRM системы, пока надо создавать клиента при отправке формы с сайта. Итак, поехали.
1.Идем в настройки CRM. берем все позывные для получения токена впервые
function getFirstTokenCRM()
{
$args = array(
'client_id' => '',
'client_secret' => '',
'grant_type' => "authorization_code",
'code' => '',
'redirect_uri' => 'https://app.pachca.com/'
);
$ch = curl_init('https://api.pachca.com/api/shared/v1/oauth/token');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response);
if(!empty($response->access_token)){
insertTokens($response->access, $response->refresh);
update_option('access_token', $response->access_token);
update_option('refresh_token', $response->refresh_token);
}
}
В массив $args пишем свои позывные, взятые из CRM, получаем токены и сохраняем их. У меня сайт на wordpress поэтому я использовал update_option, чтобы сохранить эти значения. Также есть метод insertTokens, который записывает в БД все, так как сайт на мультисайтовости и update_option будет работать только для 1 сайта.
2. Получили токены, однако по апишке их надо обновлять, поэтому пилим метод для получения и обновления, который мы будем использовать всегда
function refreshPachkaTokens(){
$tokens = getTokens();
$args = array(
'client_id' => '',
'client_secret' => '',
'grant_type' => "refresh_token",
'refresh_token' => $tokens->refresh,
'redirect_uri' => 'https://app.pachca.com/'
);
$ch = curl_init('https://api.pachca.com/api/shared/v1/oauth/token');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response);
if(!empty($response->access_token)){
insertTokens($response->access_token, $response->refresh_token);
update_option('access_token', $response->access_token);
update_option('refresh_token', $response->refresh_token);
}
}
Данный метод будет использоваться при каждом обращении к API
3. Создаем пользователя в Пачке
function sendClientToCRM($arUser){
refreshPachkaTokens();
$tokens = getTokens();
$args = array (
'client' =>
array (
'full_name' => $arUser['name'],
'phones' => $arUser['phone'],
'emails' => $arUser['email'],
'address' => $arUser['email'],
'additional' => $arUser['message'],
'list_tags' =>
array (
'byfancy.cc',
),
'custom_properties' =>
array (
array (
'id' => 5117,
'value' => $arUser['company'],
),
),
),
);
$json = json_encode($args);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.pachca.com/api/shared/v1/clients',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $json,
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer '.$tokens->access,
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
}
Сначала получаем токены, потом пилим остальное. По сути дальше — проще, просто берем необходимый метод и шлем на пачку, согласно их инструкциям, самая проблема — получить токены, ну и почему-то данные в json