-- В магазине должны храниться постоянно актуальные менеджеры из КП ( причём в пользователи их записывать не рекомендовалось )
-- В CRM должна осуществляться привязка к менеджерам, создание лидов/компаний и контактов
Что имеем:
Корпоративный портал
Список менеджеров в КП ( группа "Отдел продаж" ), которые имеют mail, icq, phone
Битрикс - Бизнес с 2000 товарами, после покупки человек должен видеть к какому менеджеру он привязан, а сам клиент должен закрепляться за своим менеджером в CRM с суммой заказа и тд.
Что делаем:
Выгрузим всех менеджеров на сайт-магазин, но так, чтобы информация на сайте сразу же обновлялась: добавление/удаление/обновление.
Долго думал, как передать запрос.
Был использован эмулятор-браузера в init.php(лишнее убрал):
Код
function get_page_as_browser($url, $with_timeout = 30, $with_cookies = false, $with_redirects = true)
{
$url=str_replace(" ", "_", $url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
if ($with_cookies)
{
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookiefile');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookiefile');
}
if ($with_redirects) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $with_timeout);
curl_setopt($ch, CURLOPT_USERAGENT, get_random_user_agent());
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$ret = trim(curl_exec($ch));
curl_close($ch);
return $ret;
}
function get_random_user_agent()
{
$uas = array(
'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)',
'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.0.3705)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; bgft)',
'Mozilla/4.5b1 [en] (X11; I; Linux 2.0.35 i586)',
'Mozilla/5.0 (compatible; Konqueror/2.2.2; Linux 2.4.14-xfs; X11; i686)',
'Mozilla/5.0 (Macintosh; U; PPC; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1',
'Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1',
'Mozilla/5.0 (X11; U; Linux 2.4.2-2 i586; en-US; m18) Gecko/20010131 Netscape6/6.01',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.3) Gecko/20010801',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Epiphany/1.2.1',
'Opera/9.0 (Windows NT 5.1; U; en)',
'Opera/8.51 (Windows NT 5.1; U; en)',
'Opera/7.21 (Windows NT 5.1; U)',
'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',
'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060928 Firefox/1.5.0.6',
'Opera/9.02 (Windows NT 5.1; U; en)',
'Opera/8.54 (Windows NT 5.1; U; en)'
);
return $uas[rand(0, count($uas)-1)];
}
Также сама выгрузка пользователей ( например, при обновлении/добавлении ):
Код
AddEventHandler("main", "OnAfterUserAdd", Array("UserAdd", "UserAddMSota"));
AddEventHandler("main", "OnAfterUserUpdate", Array("UserAdd", "UserAddMSota"));
class UserAdd
{
// создаем обработчик события "OnAfterUserAdd"
function UserAddMSota(&$arFields)
{
foreach ($arFields["GROUP_ID"] as $GROUP):
if ($GROUP["GROUP_ID"]=="#ID группы менеджеров#"):
get_page_as_browser("#YOUR_SITE#/add_managers.php?LOGIN=".$arFields["LOGIN"].
"&EMAIL=".$arFields["EMAIL"].
"&ID=".$arFields["ID"].
"&NAME=".$arFields["NAME"].
"&LAST_NAME=".$arFields["LAST_NAME"].
"&ADD_MANAGERS=Y"); // Отсылаем запрос, в REQUEST идут данные
endif;
endforeach;
}
}
Итого мы получаем постоянно актуальный список менеджеров.
При заказе/покупке и тд операция аналогичная ( в init.php формируем запрос и отсылаем файлу-приёмнику в КП).
NB: в КП нужно разрешить доступ неавторизованного пользователя к файлу + в CRM прописать, что добавлять/обновлять лиды/контакты/компании неавторизованные пользователи.
В моём случае, чтобы не было лишних запросов и тд применяется шифрование данных в качестве проверки сервер должен сверить ГОД:МЕСЯЦ:ДЕНЬ ЧАС:МИНУТА в запросе и на сервере.
В принципе, решение универсальное для связки двух разных сайтов.
Не совсем внешняя авторизация. Суть тут в том, чтобы в Битриксе Сайте ( Бизнес ) всегда были актуальные менеджеры с актуальными данными ( которое есть только в CRM ), а в CRM клиенты купившие что-либо отмечались в качестве лидов и контактов с теми суммами, на которую они заказали