Такси-Мастер — это система автоматизации службы такси. Т.е. это инструмент позволяющий быстро и качественно оперировать заказами, строить аналитические данные.
У нас достаточно часто спрашивают возможна ли интеграция Такси-Мастер на сайте. Сегодня рассмотрим вариант внедрения приема заказов с лендинга на Платформе LP.
Здравствуйте! А можем мы форму заявки настроить на свою CRM? Возможна ли интеграция Такси-Мастер на сайте созданном через Платформу LP? Можно скрипт для этого написать и в конструктор вставить? — Сергей Стародубцев, г. Воронеж
Ответ: Да, разумеется это возможно сделать. Однако есть свои нюансы.
К счастью, разработчики с Такси-Мастер написали подробную документацию по работе с системой через API: http://help.taximaster.ru/index.php/TM_API.
В конце документации даже есть готовый пример, в котором заменив данные подключения на свои можно начать работать. Но не все так сладко на стороне конструктора. К сожалению, Платформа Landing Page не позволяет на своем хостинге размещать php-скрипты, да и вообще нет доступа по FTP — что тоже логично.
Способы интеграции Такси-Мастер на сайте
Здесь есть 3 варианта для Платформы LP:
- Категорически не рекомендуется! Отправлять данные через JavaScript прямо с лендинга. Нельзя такой вариант использовать потому, что вы засветите свой API ключ. Злоумышленник завладев им, может серьезно насолить вашей компании. Описал я этот метод, потому как некоторые думают, что это допустимый вариант. Забудьте! =)
- Сложный способ. У вас есть домен site.ru? Остается привязать поддомен к другому хостингу. На стороне Платформы LP создаете поддомен (например, lib.site.ru) и просите техподдержку сменить/добавить для него запись A с серверами вашего стороннего хостинга (допустим, ns1.hosting.reg.ru, ns2.hosting.reg.ru). Выигрыш лишь в том, что все под одним доменом.
- Простой вариант. Использовать любой существующий домен на стороннем хостинге. Создать в подкаталоге необходимые php-скрипты и сослаться на них.
Мы остановились по некоторым причинам на 4-ом варианте. =)
Был у нас один «лишний» домен. Докупили к нему хостинг и положили все файлы туда.
Скрипты для интеграции Такси-Мастер
Алгоритм теперь у нас такой:
Клиент попадает на сайт -> Заполняет форму и отправляет -> Платформа LP пересылает данные с формы в наш PHP-скрипт -> PHP-скрипт отправляет данные в систему Такси-Мастер.
Шаг 1. Настройка формы
Через конструктор Платформы LP вставляем любую форму и выбираем действие после отправки «Сообщение + Вставка HTML».
1 |
<script>call("<%= name %>","<%= phone %>","<%= fields['Откуда Вас забрать?'] %>","<%= fields['Куда поедем?'] %>","<%= fields['Заказ ко времени? Укажите здесь дату и время'] %>","<%= fields['Примечание к заказу'] %>")</script> |
Шаг2. Скрипт аякс отправки формы в тег BODY
Добавляем следующий скрипт в настройках лендинга перед закрывающимся тегом </body>:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<script type="text/javascript" language="javascript"> function call(fname,phone,address,dest,sourcetime,comment) { $.ajax({ type: 'POST', url: 'ВАША-ССЫЛКА-К-СКРИПТУ/zakaz_taxi.php', data: { 'OrderClientName': fname, 'Number': phone, 'OrderSourceAddress': address, 'OrderDestAddress': dest, 'OrderComment': 'Дата и время: ' + sourcetime + ' | ' + comment }, success: function(data) { }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); } </script> |
Обратите внимание! Дата и время доставки приписываются к примечанию. Это сделано потому, что Платформа LP не имеет возможности добавлять поле input с типом даты и времени.
Шаг 3. PHP-обработчик на хостинге
Осталось настроить скрипт на нашем стороннем хостинге.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
<?php /** * ВНИМАНИЕ * Для работы с API на сервере должны быть установлены расширения Curl и JSON */ header("Access-Control-Allow-Origin: http://ВАШ-ЛЕНДИНГ-С-ФОРМОЙ"); $connect = array( 'ip' => 'ВАШ_IP', 'port' => '8089', 'secret' => 'ВАШ_API_КЛЮЧ', 'method' => 'create_order' ); function serviceIsAvailable( $connect ) { $requestArgs = getArgs(); $ch = curl_init( "https://".$connect['ip'].":".$connect['port']."/common_api/1.0/get_tariffs_list?" . $requestArgs ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_TIMEOUT, 3 ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Signature: ' . md5( $requestArgs . $connect['secret'] ), 'Content-Type: application/x-www-form-urlencode' )); $response = json_decode(curl_exec( $ch )); $error_code = curl_errno($ch); curl_close($ch); return ( $response->code == 0 ) && ( !empty($response->data->tariffs) ) && ( $error_code == 0); } function getArgs( $extra = array() ) { return http_build_query(array_merge( array( 'pay_system_type' => '0', 'account' => '123400542',//'004700-000003', 'oper_id' => '20120813182430',//'20120813182430', 'sum' => '1', 'oper_time' => '20120813182430', 'test' => '1' ) , $extra) ); } function addOperation( $connect, $phone, $address, $customer, $comment ) { $requestArgs = getArgs(array( 'phone' => $phone, 'source' => $address, 'source_time' => date('YmdHis'), 'customer' => $customer, 'comment' => $comment )); $ch = curl_init( "https://".$connect['ip'].":".$connect['port']."/common_api/1.0/".$connect['method'] ); curl_setopt( $ch, CURLOPT_POST, TRUE ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $requestArgs ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_TIMEOUT, 3 ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Signature: ' . md5( $requestArgs . $connect['secret'] ), 'Content-Type: application/x-www-form-urlencode' )); $response = json_decode(curl_exec( $ch )); $error_code = curl_errno($ch); curl_close($ch); if( $response->code == 0 && !empty($response->data->order_id) && ( $error_code == 0) ) { return true; } else { return $response->descr; } } $result = array(); $errorMessage = array(); if( !function_exists('curl_init') ) { $errorMessage[] = 'не установлен curl'; } if ( !function_exists('json_encode') ) { $errorMessage[] = 'не установлен json'; } if( empty( $_POST['Number'] ) || empty( $_POST['OrderSourceAddress'] ) ) { $errorMessage[] = 'не указан обязательный параметр.'; } if( serviceIsAvailable( $connect ) ) { $subResult = addOperation( $connect, $_POST['Number'], $_POST['OrderSourceAddress'], $_POST['OrderClientName'], $_POST['OrderComment'] ); if( $subResult === true ) { $result = 'Заказ успешно принят.'; } else { $errorMessage[] = $subResult; } } else { $errorMessage[] = 'Сервис недоступен. Проверьте настройки подключения.'; } ?> |
ВАШ-ЛЕНДИНГ-С-ФОРМОЙ — в эту строку вписываете адрес вашего сайта откуда приходят заявки, т.е. сайт, где ваша форма. Эта строка разрешает принимать аякс-запросы с этого домена.
1 2 3 4 5 6 |
$connect = array( 'ip' => 'ВАШ_IP', 'port' => '8089', 'secret' => 'ВАШ_API_КЛЮЧ', 'method' => 'create_order' ); |
Здесь должны содержаться ваши данные подключения к системе Такси-Мастер.
На этом реализация завершается. Все сделали правильно? Тогда смело отправляйте тестовые заказы вашим диспетчерам. Они будут этому безумно рады! =)
А еще проще и быстрее предоставить эту работу мне -> Оставить заявку