AMO CRM - решение бага с получением токена авторизации.

Первое получение токена авторизации к компоненте AMO CRM пожалуй самый распространенная проблема, с которой сталкиваются все пользователи компонента.

Да действительно механизм первого подключения сайта к AMO CRM получился неудачным, еще на стадии архитектуры. Когда-нибудь я обязательно выпущу обновление, а пока хотел бы поделиться скриптом упрощающим жизнь.

Чтобы гарантировано подключиться к AMO CRM вам необходимо выполнить всего два пункта.

1. Корректно заполнить все системные настройки, указав все данные для интеграции. Это подробно описано в документации

2. Установите компонент modalConsole для выполнения PHP кода в админке и запустите один раз вот такой скрипт

$amocrm = $modx->getService('amocrm', 'amoCRM', MODX_CORE_PATH . 'components/amocrm/model/amocrm/');


$link = $amocrm->tools->prepareLink('/oauth2/access_token');
$data = [
    'client_id' => $amocrm->tools->config['client_id'],
    'client_secret' => $amocrm->tools->config['client_secret'],
    'code' => $amocrm->tools->config['client_code'],
    'grant_type' => 'authorization_code',
    'redirect_uri' => $amocrm->tools->config['site_url']
];

$accessToken = $amocrm->tools->sendCURL($link, $data, 'POST');

if ($accessToken) {
    $accessToken['expires_in'] = time() + $accessToken['expires_in'];
    $lifetime = strtotime('3 month');
    $accessToken['refresh_token_lifetime'] = $lifetime;
    
    $setting = $modx->getObject('modSystemSetting', array('key' => 'amocrm_token_field'));
    $setting->set('value', json_encode($accessToken));
    $setting->save();
    
    $setting = $modx->getObject('modSystemSetting', array('key' => 'amocrm_client_code'));
    $setting->set('value', '');
    $setting->save();
}

Этот код обменивает код авторизации (который выдается на 20 минут) на постоянный токен авторизации, которым впоследствии будут подписаны все запросы в CRM.

Собственно на этом все. Система должна нормально работать. Заказы отправляются в CRM. А для отправки форм вам нужно добавтиь несколько параметров для ajaxForm согласно документации
Николай Савин
12 июня 2023, 21:37
modx.pro
4
441
+8
Поблагодарить автора Отправить деньги

Комментарии: 3

Дмитрий Касаткин
23 июня 2023, 22:52
+1
Спасибо большое, Николай, за решение! О нем мечтали, его ждали, про него спрашивали, потом его просили, и вот оно здесь!

P.S Столько обновлений здесь в последнее время, аж глаза разбегаются и такую ценную заметку банально не заметил… А может, потому что картинки в анонсе нет!? Но это не в укор, а просто попытка самоанализа.

P.S.2 А просто Console не подойдет? Просто он почти везде уже есть…
    Николай Савин
    23 июня 2023, 22:57
    +1
    Дим, лично для тебя разрешаю Console. Сам не пользуюсь ей давно.
    Сергей
    05 сентября 2023, 14:44
    0
    Доброго времени суток! Вопрос по компоненту — amocrm.
    у меня работает в режиме хука для Formit — ajaxform.
    Проблема — не создается контакт в вмо, телефон пишется просто в доп полях, он приходит но контакта нет.
    Создается на сколько я понял, только когда авторизован в modx.
    Поковырял исходники. Там вроде как контакт создается на событие — OnUserFormSave (создание, обновление юзера).
    Мне надо бы для анонимов сделать.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3