Янв
31

Первый раз интегрировал сайт и интернет-магазин на 1с битрикс с amoCRM. Нужно было передавать в амоцрм, как множество форм, так и заказы со всей информацией, корзиной.

Сначала хотел сделать модуль, но использовал другую возможность расширить сайт — специально задуманный файл для разработчиков init.php в папке /bitrix/php_interface/

Чтобы не загромождать, прописал лишь одну строчку

include_once('/home/l/test/test.ru/public_html/test_amocrm/require.php'); //интеграция amocrm by hamtim.ru

А в скрипте require.php добавил хук на события битрикса, в хуке собрал, и подготовил данные и как обычно подключил свой скрипт интеграции integrator-amokit.

AddEventHandler("sale", "OnOrderNewSendEmail", "HamtimAmokitSaleMails"); function HamtimAmokitSaleMails($orderID, &$eventName, &$arFields) { $arOrder = CSaleOrder::GetByID($orderID); $order_props = CSaleOrderPropsValue::GetOrderProps($orderID); $_REQUEST['phone']=$_POST['post']=""; $_REQUEST['email']=$_POST['email']=htmlspecialchars($arFields["EMAIL"]); $_REQUEST['ORDER_USER']=$_POST['ORDER_USER']=htmlspecialchars($arFields["ORDER_USER"]); $_REQUEST['PRICE']=$_POST['PRICE']=htmlspecialchars(strip_tags($arFields["PRICE"])); $_REQUEST['DELIVERY_PRICE']=$_POST['DELIVERY_PRICE']=htmlspecialchars($arFields["DELIVERY_PRICE"]); $_REQUEST['ORDER_LIST']=$_POST['ORDER_LIST']=strip_tags($arFields["ORDER_LIST"]); $_REQUEST['ORDER_LIST2']=$_POST['ORDER_LIST2']=$arFields["ORDER_LIST"]; $_REQUEST["ORDER_DESCRIPTION"]=$_POST["ORDER_DESCRIPTION"] = $arOrder["USER_DESCRIPTION"]; $_REQUEST['orderID']=$_POST['orderID']='Заказ №'.$orderID; $index = ""; $country_name = ""; $_REQUEST['city']=$_POST['city'] = ""; $address = ""; while ($arProps = $order_props->Fetch()) { if ($arProps["CODE"] == "PHONE") { $_REQUEST['phone']=$_POST['post'] = htmlspecialchars($arProps["VALUE"]); } if ($arProps["CODE"] == "LOCATION") { $arLocs = CSaleLocation::GetByID($arProps["VALUE"]); $country_name = $arLocs["COUNTRY_NAME_ORIG"]; $_REQUEST['city']=$_POST['city'] = $arLocs["CITY_NAME_ORIG"]; } } //-- получаем название службы доставки $arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]); $delivery_name = ""; if ($arDeliv) { $_REQUEST['delivery_name']=$_POST['delivery_name'] = $arDeliv["NAME"]; } //-- получаем название платежной системы $arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]); $pay_system_name = ""; if ($arPaySystem) { $_REQUEST['pay_system_name']=$_POST['pay_system_name'] = $arPaySystem["NAME"]; } #подключение интегратора amokit.ru include_once('send.php'); }

 

Для обработки форм в этот же файл require.php добавил условие:

if(isset($_REQUEST['web_form_submit'])) { if($_REQUEST['web_form_submit']) { #подключение интегратора amokit.ru include_once('integrator-amokit/send.php'); } }

В результате формы на сайте и интернет магазин полностью интегрированы с amoCRM.