'rewrite', 'filial' => 'rewrite', 'description' => 'add', 'notice' => 'rewrite', ); //Пример вводимых данных. Вы будете получать их из $_REQUEST своих форм на сайте, либо из других мест. Например, из своей уже имеющейся бд на сайте //названия полей и их типы - http://lightschool.tallanto.com/index.php?entryPoint=infoDataCapture&module=Contact $params = array( 'last_name' => 'Федорчуков', 'first_name' => 'Иван',//Имя обязательный параметр, если у вас нет, тогда необходимо прописать любое название для идентификации в ЦРМ, например, "Человек с сайта" 'phone_mobile' => '+7 495 66522-6-7', 'email1' => 'tefdsfsd@mail.ru', //если передаем email проверка на дубликат производится всегда, отключить ее нельзя 'send_sms' => 'На мобильный', //Можно использовать русский язык, при условии что он у вас является языком по умолчанию в системе 'skype_c' => 'my.Fedorchuk', 'sex_c' => 'муж.', 'filial' => array( 'Марьино', 'Рублёвка', //А это переменная "многие из", значение такой переменной задается в виде массива ), 'description' => 'А тут допустим у вас есть дополнительные параметры. Например, когда человек хочет посещать ваши занятия. Их можно прописать в это поле, которое запишется в описание', ); //Допустим нам так же надо записать человека на занятие(или группу), тогда можно использовать следующие параметры: (описание в документации по ссылке выше) //most_class_abonements, most_class_certificates, most_class_contacts_cost, most_class_contacts_duration, most_class_contacts_id, most_class_contacts_reserve, most_class_contacts_status, most_class_discounts, most_class_user_id, need_remind, notice //чтобы записаться в группу, вместо most_class_contacts_id используем - most_courses_contacts_id //$params['most_class_contacts_id'] = '36cde4e7-2e11-ad60-3134-54d095d574a6';//ID занятия //$params['notice'] = 'Этот ученик записался на занятие через форму сайта...'; //Если нужно купить абонемент, необходимо передать следующие параметры: //$params['template_abonement_id'] = '36cde4e7-2e11-ad60-3134-54d095d574a6';//ID шаблона абонемента, по которому будет создан абонемент //$params['abonement_start_date'] = '22.11.2022';//Дата начала абонемента в формате День.Месяц.Год, если дата не указана, будет установлена завтрашняя дата //purchase_abonement_link - получаемый при отправке запроса параметр, в котором содержится ссылка для покупки абонемента if (isset($check_duplicate_by) AND !empty($check_duplicate_by)) $params['check_duplicate_by'] = $check_duplicate_by; if (isset($update_duplicate_info) AND !empty($update_duplicate_info)) $params['update_duplicate_info'] = $update_duplicate_info; $resultContact = senderToTallanto($module, $params); //Все дальше идет стандартный код, который вам просто необходимо себе скопировать. //Но также надо понимать что вся передача данных должна быть в UTF-8, если у вас на сайте кодировка Windows-1251 , вам надо самостоятельно позаботится о конвертации данных function senderToTallanto($module, $params) { $crm_url = 'http://lightschool.tallanto.com'; $url = $crm_url . '/index.php?entryPoint=dataCapture&module=' . $module; $key = 'a066dbd117db7b8f051726279adc48ba752251b9';//ваш сгенерированный ключ для подписи(его изменять не надо) uksort($params, "strcasecmp"); $values = ""; foreach ($params as $name => $value) { if (is_array($value) && count($value) === 0) continue; if (is_array($value)) { $values .= 'Array';//Элементы массива второй и более вложенностей в данном случае не играют важной роли и не участвуют в подписи } else { $values .= $value; } } $params['crc'] = md5($values . $key); //Пример кода для передачи данных(Передачу данных можно делать методом POST с помощью любого способа(например, curl или http_post_fields) //В примере использована самая простая реализация: file_get_contents + stream_context_create $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($params), ), ); try { $context = stream_context_create($options); $serverRes = file_get_contents($url, false, $context); //Здесь можно произвести обработку запроса $result = json_decode($serverRes, true); if (json_last_error()) { //Тут нам с сервера пришла ошибка. Проверим, может какие то параметры не те послали... echo $serverRes; } elseif ($result['result'] == false) { //Если в $result['result'] - То это ошибка, например, не передали обязательные поля или какие то другие. в $result['message'] в таком случае ошибка echo $result['message']; } else { //все ок, если что можно взять сообщение об успешном добавление, а так же id созданной/обновленной в бд записи echo 'ID ' . $result['id'] . '; MSG ' . $result['message'] . '; '; if ($result['duplicate'] == true) echo 'Duplicate was found in database and successful update or rewrite'; //echo "Купить абонемент"; //получаемый параметр, в котором содержится ссылка для покупки абонемента } } catch (Exception $e) { //здесь какая то серверная ошибка(например, internal server error 500) или еще что-то, можно попытаться определить проблему. В $e->getMessage() - ошибка echo $e->getMessage(); } return $result; } /* * Конец стандартного кода. * Пример, кода для ОРГАНИЗАЦИЙ. Абсолютно тоже самое, вомзможные поля смотрим здесь: http://lightschool.tallanto.com/index.php?entryPoint=infoDataCapture&module=Account */ $resultAccount = senderToTallanto('Account', array( 'name' => 'Лаборатория Жучков',//название обязательный параметр 'website' => 'http://bugsss.no', 'billing_address_country' => 'Туркмения', 'billing_address_city' => 'Ашхабад', 'billing_address_street' => 'Жучколова 23, оф.6', 'email1' => 'no.reply@bugsss.no', //если передаем email проверка на дубликат производится всегда, отключить ее нельзя 'phone_office' => '+7 948 3453454', 'send_sms' => 'Офисный', 'skype_c' => 'mr.bugsss.no', 'filial' => array( 'Марьино', 'Рублёвка', //А это переменная "многие из", значение такой переменной задается в виде массива ), 'industry' => 'Технологии', 'description' => 'А тут дополнительно пишем любой комментарий, все чего душа пожелает', //проверка на дубликаты 'check_duplicate_by' => array( 'name', 'phone', 'skype_c', 'website', ), //Обновить поля в случае нахождения дубликата 'update_duplicate_info' => array( 'send_sms' => 'rewrite', 'filial' => 'rewrite', 'billing_address_country' => 'rewrite', 'billing_address_city' => 'rewrite', 'billing_address_street' => 'rewrite', 'description' => 'add', ), )); /* * Пример, кода для ЗАЯВОК. Возможные поля смотрим здесь: http://lightschool.tallanto.com/index.php?entryPoint=infoDataCapture&module=Request */ senderToTallanto('Request', array( 'name' => 'Заявка на занятие йогой вечером 22 числа',//название обязательный параметр //ID ученика обязательный параметр //если вы только добавили ученика, то в вашем массиве $resultContact есть его id 'contact_id' => $resultContact['id'], 'status' => 'Не начата',//Статус обязательный параметр 'parent_name' => 'most_class',//Связать с занятием 'parent_id' => '36cde4e7-2e11-ad60-3134-54d095d574a6',//ID занятия 'priority' => 'Высокий', 'source' => 'Сайт', 'type' => 'Занятие', 'description' => 'А тут пишем любой комментарий. Все чего душа пожелает', )); /* * Пример, кода для ФИНАНСОВЫХ ОПЕРАЦИЙ. Возможные поля смотрим здесь: http://lightschool.tallanto.com/index.php?entryPoint=infoDataCapture&module=most_finances */ senderToTallanto('most_finances', array( 'name' => '900 рублей на посещение пробного занятия',//Называем фин операцию как хотим 'contact_id' => $resultContact['id'], 'cost' => '900', 'most_class_id' => '36cde4e7-2e11-ad60-3134-54d095d574a6',//ID занятия 'date_payment' => date('Y-m-d'),//сегодняшняя дата 'direction' => 'Поступление на баланс',//оплата занятия, поэтому поступление на баланс 'type' => 'Безналичный расчет', 'description' => 'А тут пишем любой комментарий. Все чего душа пожелает', 'create_link_with_class' => 1,//записать ученика на занятие и обновить его статус записи(на полную предоплату или аванс), при этом занятие должно быть еще не закрытое. Указывать 0 чтобы не записывать на занятие, и не обновлять статус. )); /* * Пример, кода для Создания абонемента. Возможные поля смотрим здесь: http://lightschool.tallanto.com/index.php?entryPoint=infoDataCapture&module=most_abonements * Внимание. Обязательными полями являются template_id(id шаблона), contact_id(id ученика) и способ учета(number или hourly). Остальные поля (количество посещений, стоимость, тип и т.д.) в случае остсутствия загружаются из шаблона абонемента */ $module = 'most_abonements'; senderToTallanto('most_abonements', array( 'contact_id' => $resultContact['id'], 'template_id' => '1b48eea1-0e0d-ba47-c3a3-572c3941e03b',//ID шаблона абонемента 'start_date' => date('Y-m-d'),//сегодняшняя дата, можно указать любую в формате YYYY-mm-dd(например, 2018-02-24) 'recharge_money' => 0, //не пополнять баланс ученика, баланс уйдет в минус, либо 1 если ученик оплатил абонемент 'num_visit_type' => 'часов', //можно использовать так же системные значения number или hourly )); /* * Пример, кода для Создания счета. Возможные поля смотрим здесь: http://lightschool.tallanto.com/index.php?entryPoint=infoDataCapture&module=most_abonements * Внимание. В случае если parent_type равен most_template_abonements (произойдет автоматическое оформление абонемента, по шаблону ID которого вы узазаваете в поле parent_id * Внимание. В случае если parent_type равен most_class, произойдет автоматическая запись(если ученик не был записан на занятие), оплата занятия(и автоматическая смена статуса оплаты занятия - полная оплата либо аванс * В любом другом случае, после оплаты счета деньги попадают на личный счет ученика, никаких автоматических операций не выполняется */ $module = 'Invoice'; $resultInvoice = senderToTallanto('Invoice', array( 'cost' => 900, //обязательное поле, сумма счета 'contact_id' => $resultContact['id'], 'parent_type' => 'most_template_abonements',//Возможные варианты: most_class - Занятия, most_courses - Группы, most_abonements - Абонементы, most_template_abonements- Шаблоны абонементов 'parent_id' => '1b48eea1-0e0d-ba47-c3a3-572c3941e03b',//в данном случае, так как type - шаблон, указываем ID шаблона абонемента )); /* * в $resultInvoice['payment_link'] содержится ссылка на оплату данного счета. * Необходимо либо показать ее ученику для ручного перехода, либо совершить автоматический переход по данной ссылке для оплаты учеником. * Никакого автоматического письма с данной ссылкой не отправляется, поэтому если вам необходимо продублировать ссылку, например, на E-mail необходимо делать это самостоятельно. * После оплаты счета, ученик получает стандартное уведомление и E-mail от Талланто, не отличающееся от оплаты через наши формы */ echo $resultInvoice['payment_link'];