Интеграция с Пачка CRM

  • Vadim Tsukanov
    Разработчик
  • Дата публикации
    03.03.2021
  • Категория
    Wordpress
Задача:Интегрировать форму сайта с CRM Пачка

Какие красивые лозунги! Однако интеграция превратилась в не пойми что…

Итак, имеется логин/пароль от 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

Еще нет коммментариев. Будь первым!

Оформить заказ в Devstages