Степан Прищепенко

Степан Прищепенко

С нами с 09 апреля 2013; Место в рейтинге пользователей: #66
Андрей Степаненко
06 августа 2018, 12:51
1
+2
3 дня назад доработал приложение msOneClick для исправления этого недуга.

Не обязательное поле email

Если сделать поле email не обязательным и при отправке поле оказывается пустым, то minishop не даст создать заказа.
Для этого была добавлена дополнительная возможность для автоматической генерации нового email адреса. Либо можно указать свой email адрес на который будут создаваться все заказа.
Ilya Ev
24 июня 2015, 12:03
1
+1
Вот писал на скорую руку для себя, лучше подредактировать ибо криво)

на событие msOnCreateOrder

<?php
switch($modx->event->name) {
case 'msOnCreateOrder':
// CRM server conection data
define('CRM_HOST', ''); // your CRM domain name
define('CRM_PORT', '443'); // CRM server port
define('CRM_PATH', '/crm/configs/import/lead.php'); // CRM server REST service path

// CRM server authorization data
define('CRM_LOGIN', ''); // login of a CRM user able to manage leads
define('CRM_PASSWORD', ''); // password of a CRM user
// OR you can send special authorization hash which is sent by server after first successful connection with login and password
//define('CRM_AUTH', ''); // authorization hash

/********************************************************************************************/

// POST processing
//$leadData = $_POST['DATA'];
$leadData=$order->get();
$leadCost=$order->getcost(true,true);
$leadNum='имя сайта-'.$order->getnumer();
$ledContact=explode(" ", $leadData['receiver']);
	// get lead data from the form
	$postData = array(
		'TITLE' => $leadNum,
		'COMPANY_TITLE' => 'Сайт',
		'NAME' => $ledContact[0],
		'LAST_NAME' => $ledContact[1],
		'COMMENTS' => $leadData['comment'],
		'OPPORTUNITY' => $leadCost,
		'CURRENCY_ID' => 'RUR',
		'ADDRESS' => 'дом 18 к5',
		'PHONE_WORK' => $leadData['phone'],
		'WEB_WORK' => 'сайт',
		'SOURCE_ID' => 'WEB',
		'EMAIL_WORK' => $leadData['email'] 
	);

	// append authorization data
	if (defined('CRM_AUTH'))
	{
		$postData['AUTH'] = CRM_AUTH;
	}
	else
	{
		$postData['LOGIN'] = CRM_LOGIN;
		$postData['PASSWORD'] = CRM_PASSWORD;
	}

	// open socket to CRM
	$fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
	if ($fp)
	{
		// prepare POST data
		$strPostData = '';
		foreach ($postData as $key => $value)
			$strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);

		// prepare POST headers
		$str = "POST ".CRM_PATH." HTTP/1.0\r\n";
		$str .= "Host: ".CRM_HOST."\r\n";
		$str .= "Content-Type: application/x-www-form-urlencoded\r\n";
		$str .= "Content-Length: ".strlen($strPostData)."\r\n";
		$str .= "Connection: close\r\n\r\n";

		$str .= $strPostData;

		// send POST to CRM
		fwrite($fp, $str);
/*
		// get CRM headers
		$result = '';
		while (!feof($fp))
		{
			$result .= fgets($fp, 128);
		}
		fclose($fp);

		// cut response headers
		$response = explode("\r\n\r\n", $result);

		$output = '<pre>'.print_r($response[1], 1).'</pre>';
*/
	}
	else
	{
		//echo 'Connection Failed! '.$errstr.' ('.$errno.')';
$modx->log(modX::LOG_LEVEL_INFO, print_r('Ошибка передачи в битрикс', 1));
	}


}