Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- AddEventHandler('form', 'onBeforeResultAdd', 'IntegrationWebFormWithB24');
- function IntegrationWebFormWithB24($WEB_FORM_ID, &$arFields, &$arrVALUES, $email = ""){
- global $phone, $email, $FIO, $message, $title, $SOURCE_ID;
- function writeToLog($data, $title = '') {
- $log = "\n------------------------\n";
- $log .= date("Y.m.d G:i:s") . "\n";
- $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
- $log .= print_r($data, 1);
- $log .= "\n------------------------\n";
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_test_get.log', $log, FILE_APPEND);
- return true;
- }
- writeToLog($_GET, 'GET');
- writeToLog($_REQUEST, 'REQUEST');
- if(!empty($email)){
- $title = 'Заказ с сайта "Подписка"';
- $message = 'Клиент подписался на обновления';
- $SOURCE_ID = 'EMAIL';
- $FIO = "Подписавшийся Клиент";
- $phone = "";
- }elseif($arrVALUES['WEB_FORM_ID'] == 1){
- $phone = $arrVALUES["form_text_2"];
- $email = $arrVALUES["form_email_3"];
- $FIO = $arrVALUES["form_text_1"];
- $message = "Организация: ".$arrVALUES["form_text_4"]."\r\nСообщение:".$arrVALUES["form_textarea_5"];
- $title = 'Заказ с сайта "Заказ кофе в офис"';
- $SOURCE_ID = 'CALLBACK';
- }elseif($arrVALUES['WEB_FORM_ID'] == 2){
- $phone = $arrVALUES["form_text_6"];
- $email = $arrVALUES["BITRIX_SM_SENDER_SUBSCR_EMAIL"];
- $FIO = $arrVALUES["form_text_7"];
- $message = "Товар: ".$arrVALUES["form_hidden_10"];
- $title = 'Заказ с сайта "Быстрая покупка"';
- $SOURCE_ID = 'WEBFORM';
- }
- $check = true;
- $check_CONTACT = false;
- $comp = false;
- function curl($queryUrl, $queryData){
- $curl = curl_init();
- curl_setopt_array($curl, array(
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_POST => 1,
- CURLOPT_HEADER => 0,
- CURLOPT_RETURNTRANSFER => 1,
- CURLOPT_URL => 'https://portal.livecoffee.softmonster.ru/rest/1/s08k9eoh27dmzmtm/'.$queryUrl,
- CURLOPT_POSTFIELDS => http_build_query($queryData),
- ));
- $arData = curl_exec($curl);
- curl_close($curl);
- var_dump($arData);
- $arData = json_decode($arData, 1);
- return $arData;
- }
- function addDeal($title_name, $id_contact, $ASSIGNED_BY_ID){
- global $title, $message;
- $queryUrl = 'crm.livefeedmessage.add';
- $queryData = array(
- 'fields' =>array(
- 'POST_TITLE' => $title,
- 'MESSAGE' => $title."\r\n".$message,
- "ENTITYTYPEID" => 3,
- "ENTITYID" => $id_contact
- ));
- curl($queryUrl, $queryData);
- if($title != 'Заказ с сайта "Подписка"'){
- $queryUrl = 'crm.deal.add';
- $queryData = array(
- 'fields' => array(
- 'TITLE' => $title_name,
- 'CATEGORY_ID' => 1,
- 'STAGE_ID' => "C1:NEW",
- 'CONTACT_ID' => $id_contact,
- 'ASSIGNED_BY_ID' => $ASSIGNED_BY_ID,
- 'COMMENTS' => $title."<br>".$message,
- 'UF_CRM_1529483792' => ($title == 'Заказ с сайта "Заказ кофе в офис"') ? 51 : 50
- ));
- $d_id = curl($queryUrl, $queryData);
- if(!empty($d_id['result'])){
- $queryUrl = 'crm.deal.update';
- $queryData = array(
- 'id' => $d_id['result'],
- 'fields' => array(
- 'TITLE' => $d_id['result']." ".$title_name,
- ));
- curl($queryUrl, $queryData);
- }
- }
- }
- function addContact($ASSIGNED_BY_ID, $COMPANY_ID = "", $COMPANY_NAME = ""){
- global $FIO, $phone, $email, $SOURCE_ID;
- list($last_name, $name, $second_name) = explode(" ", $FIO);
- $queryUrl = 'crm.CONTACT.add';
- $queryData = array(
- 'fields' => array(
- 'NAME' => $name,
- 'LAST_NAME' => $last_name,
- 'SECOND_NAME' => $second_name,
- 'PHONE' => array(array("VALUE" => $phone, "VALUE_TYPE" => "WORK")),
- 'EMAIL' => array(array("VALUE" => $email, "VALUE_TYPE" => "WORK")),
- 'SOURCE_ID' => $SOURCE_ID,
- 'TYPE_ID' => "CLIENT",
- 'ASSIGNED_BY_ID' => $ASSIGNED_BY_ID,
- 'COMPANY_ID' => $COMPANY_ID,
- 'UF_CRM_1529045703' => 45
- ));
- $id_l = curl($queryUrl, $queryData);
- $title_name = empty($COMPANY_NAME) ? $last_name." ".$name." ".$second_name : $COMPANY_NAME;
- if(!empty($id_l['result'])){
- addDeal($title_name, $id_l['result'], $ASSIGNED_BY_ID);
- }
- }
- $queryUrl = 'crm.duplicate.findbycomm';
- $queryData = array(
- 'type' => "PHONE",
- 'values' => array($phone)
- );
- $arDubP = curl($queryUrl, $queryData);
- $arDubP = $arDubP["result"];
- if(isset($arDubP['CONTACT'][0]) && !empty($arDubP['CONTACT'][0])){
- $check_CONTACT = true;
- $arDub['CONTACT'][0] = $arDubP['CONTACT'][0];
- }else{
- $queryUrl = 'crm.duplicate.findbycomm';
- $queryData = array(
- 'type' => "EMAIL",
- 'values' => array($email)
- );
- $arDubE = curl($queryUrl, $queryData);
- $arDubE = $arDubE["result"];
- if(isset($arDubE['CONTACT'][0]) && !empty($arDubE['CONTACT'][0])){
- $check_CONTACT = true;
- $arDub['CONTACT'][0] = $arDubE['CONTACT'][0];
- }
- }
- if($check_CONTACT){
- $queryUrl = 'crm.CONTACT.get';
- $queryData = array('id' => $arDub['CONTACT'][0]);
- $CONTACT = curl($queryUrl, $queryData);
- $CONTACT = $CONTACT['result'];
- if(!empty($CONTACT['ID'])){
- $check = false;
- foreach($CONTACT['EMAIL'] as $key => $value){
- $con_e[$value['VALUE']] = 1;
- }
- foreach($CONTACT['PHONE'] as $key => $value){
- $con_p[$value['VALUE']] = 1;
- }
- if(empty($con_p[$phone])){
- $queryUrl = 'crm.CONTACT.update';
- $queryData = array('id' => $CONTACT['ID'], 'fields'=>array('PHONE' => array_merge($CONTACT['PHONE'], array(array('VALUE' => $phone, 'VALUE_TYPE' => 'WORK'))), 'UF_CRM_1529045703' => 46));
- curl($queryUrl, $queryData);
- }
- if(empty($con_e[$email])){
- $queryUrl = 'crm.CONTACT.update';
- $queryData = array('id' => $CONTACT['ID'], 'fields'=>array('EMAIL' => array_merge($CONTACT['EMAIL'], array(array('VALUE' => $email, 'VALUE_TYPE' => 'WORK'))), 'UF_CRM_1529045703' => 46));
- curl($queryUrl, $queryData);
- }
- if(!empty($CONTACT['COMPANY_ID'])){
- $queryUrl = 'crm.COMPANY.get';
- $queryData = array('id' => $CONTACT['COMPANY_ID']);
- $COMPANY = curl($queryUrl, $queryData);
- $COMPANY = $COMPANY['result'];
- }
- $title_name = empty($COMPANY['TITLE']) ? $CONTACT['LAST_NAME']." ".$CONTACT['NAME']." ".$CONTACT['SECOND_NAME'] : $COMPANY['TITLE'];
- addDeal($title_name, $CONTACT['ID'], $CONTACT['ASSIGNED_BY_ID']);
- }
- }else{
- if(isset($arDubP['COMPANY'][0]) && !empty($arDubP['COMPANY'][0])){
- $comp = true;
- $check = false;
- $arDub['COMPANY'][0] = $arDubP['COMPANY'][0];
- }elseif(isset($arDubE['COMPANY'][0]) && !empty($arDubE['COMPANY'][0])){
- $comp = true;
- $check = false;
- $arDub['COMPANY'][0] = $arDubE['COMPANY'][0];
- }
- }
- if($comp){
- $queryUrl = 'crm.COMPANY.get';
- $queryData = array('id' => $arDub['COMPANY'][0]);
- $COMPANY = curl($queryUrl, $queryData);
- $COMPANY = $COMPANY['result'];
- if(!empty($COMPANY['ID'])){
- addContact($COMPANY['ASSIGNED_BY_ID'], $COMPANY['ID'], $COMPANY['TITLE']);
- }
- }
- if($check){
- addContact(1);
- }
- }
- \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleOrderSaved', 'IntegrationOrderWithB24');
- function IntegrationOrderWithB24(\Bitrix\Main\Event $event)
- {
- function writeToLog($data, $title = '') {
- $log = "\n------------------------\n";
- $log .= date("Y.m.d G:i:s") . "\n";
- $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
- $log .= print_r($data, 1);
- $log .= "\n------------------------\n";
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_order.log', $log, FILE_APPEND);
- return true;
- }
- $order = $event->getParameter("ENTITY");
- $oldValues = $event->getParameter("VALUES");
- $isNew = $event->getParameter("IS_NEW");
- if($isNew == 1){
- $propertyCollection = $order->getPropertyCollection();
- $ar = $propertyCollection->getArray();
- $basket = $order->getBasket();
- $arProps['ACTION'] = "OrderSave";
- $arProps['auth_code'] = "jig3rF^%7867tqc3xnj4*Y324";
- $arProps['ID'] = $order->getId();
- foreach($ar['properties'] as $key => $value){
- $arProps[$value['CODE']] = empty($value['OPTIONS']) ? $value['VALUE'][0] : $value['OPTIONS'][$value['VALUE'][0]];
- }
- $arProps['DELIVERY_PRICE'] = $order->getDeliveryPrice();
- $arProps['COMMENTS'] = $order->getField("USER_DESCRIPTION");
- foreach ($basket as $basketItem) {
- $arBasket[($basketItem -> getProductId())] = array(
- 'PRICE' => $basketItem -> getPrice(),
- 'QUANTITY' => $basketItem -> getQuantity(),
- 'NAME' => $basketItem -> getField('NAME'),
- 'MEASURE_NAME' => $basketItem -> getField('MEASURE_NAME'),
- 'CURRENCY' => $basketItem -> getField('CURRENCY'),
- 'DISCOUNT_PRICE' => $basketItem -> getField('DISCOUNT_PRICE'),
- 'BASE_PRICE' => $basketItem -> getField('BASE_PRICE'),
- );
- $arProdID[] = $basketItem -> getProductId();
- }
- $arSelect = Array("ID", "IBLOCK_ID", "PROPERTY_MILLING", "PROPERTY_WEIGHT", "PROPERTY_VOLUME");
- $arFilter = Array("IBLOCK_ID"=>2, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "ID" => $arProdID);
- $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
- while($ob = $res->GetNext())
- {
- $arBasket[$ob['ID']]['MILLING'] = $ob['PROPERTY_MILLING_VALUE'];
- $arBasket[$ob['ID']]['WEIGHT'] = $ob['PROPERTY_WEIGHT_VALUE'];
- $arBasket[$ob['ID']]['VOLUME'] = $ob['PROPERTY_VOLUME_VALUE'];
- }
- $discountData = $order->getDiscount()->getApplyResult();
- $arProps['SKIDKA'] = (int)(($arBasket[$arProdID[0]]['DISCOUNT_PRICE'] * 100) / $arBasket[$arProdID[0]]['BASE_PRICE']);
- foreach($discountData['COUPON_LIST'] as $COUPON){
- $arProps['PROMOCOD'] = $COUPON['COUPON'];
- }
- $paymentIds = $order->getPaymentSystemId();
- $arProps['PAYMENT'] = $paymentIds[0];
- $arProps['BASKET'] = $arBasket;
- if(!empty($arProps['EMAIL']) || !empty($arProps['PHONE'])){
- $curl = curl_init();
- curl_setopt_array($curl, array(
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_POST => 1,
- CURLOPT_HEADER => 0,
- CURLOPT_URL => 'https://portal.livecoffee.softmonster.ru/__cust/integration_with_im.php',
- CURLOPT_POSTFIELDS => http_build_query($arProps)
- ));
- curl_exec($curl);
- curl_close($curl);
- }
- writeToLog($arProps, 'arProps');
- }
- }
- \Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSaleOrderPaid', 'IntegrationOrderPaidWithB24');
- function IntegrationOrderPaidWithB24(\Bitrix\Main\Event $event){
- $order = $event->getParameter("ENTITY");
- $orderId = $order->getId();
- /*$isPaid = $paymentCollection->isPaid(); // true, если все оплаты оплачены
- $hasPaidPayment = $paymentCollection->hasPaidPayment(); // true, если хотя бы одна оплата оплачена
- $getPaidSum = $paymentCollection->getPaidSum(); // оплаченная сумма
- $isExistsInnerPayment = $paymentCollection->isExistsInnerPayment(); // true, если осуществлена оплата с внутреннего счета
- function writeToLog($data, $title = '') {
- $log = "\n------------------------\n";
- $log .= date("Y.m.d G:i:s") . "\n";
- $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
- $log .= print_r($data, 1);
- $log .= "\n------------------------\n";
- file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/log_order_paid.log', $log, FILE_APPEND);
- return true;
- }
- writeToLog($isPaid, 'isPaid');
- writeToLog($hasPaidPayment, 'hasPaidPayment');
- $arProps['ACTION'] = "OrderPaid";
- $arProps['auth_code'] = "jig3rF^%7867tqc3xnj4*Y324";
- $arProps['ID'] = $orderId;
- $arProps['PAID_SUM'] = $getPaidSum;
- if(!empty($arProps['ID'])){
- $curl = curl_init();
- curl_setopt_array($curl, array(
- CURLOPT_SSL_VERIFYPEER => 0,
- CURLOPT_POST => 1,
- CURLOPT_HEADER => 0,
- CURLOPT_URL => 'https://portal.livecoffee.softmonster.ru/__cust/integration_with_im.php',
- CURLOPT_POSTFIELDS => http_build_query($arProps)
- ));
- curl_exec($curl);
- curl_close($curl);
- }
- writeToLog($arProps, 'arProps');
- */
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement