![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 05.10.2021
Сообщений: 4
|
![]()
В программе Такси мастер есть пример запроса к базе данных где параметры передаются в формате application/x-www-form-urlencode, но нет примера запроса в формате json, внизу мой пример запроса в json отрабатывает с ошибкой "Неправильный секретный ключ" чтобы я не пытался сделать. Что-то в коде не так написано, может кто имел дело с Такси Мастер
http://help.taximaster.ru/index.php/...B0.D0.B7.D0.B0 <?php /** * ВНИМАНИЕ * Для работы с API на сервере должны быть установлены расширения Curl и JSON */ $connect = array( 'ip' => '192.168.0.100', //IP адрес Вашего сервера Такси-Мастер 'port' => '8089', //Порт, который указан в настройках ТМ API 'secret' => '123', //Cекретный ключ, который указан в настройках ТМ 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[] = 'Сервис недоступен. Проверьте настройки подключения.'; } ?> Мой запрос отрабатывающий с ошибкой "Неверный секретный ключ": $value=$_POST['summ']; $id=$_POST['id']; $connect = array( 'ip' => '192.168.0.100', //IP адрес Вашего сервера Такси-Мастер 'port' => '8089', //Порт, который указан в настройках ТМ API 'secret' => '123', //Cекретный ключ, который указан в настройках ТМ API 'method' => 'create_driver_operation' ); 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, 13 ); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Signature: ' . md5( $requestArgs . $connect['secret'] ), 'Content-Type: application/json' )); $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 PayDriver($connect,$driver_id,$out_ summ) { $requestArgs = getArgs(array( 'driver_id' => $driver_id, 'oper_sum' => $out_summ, 'oper_type' => 'receipt')); $dataString = json_encode($requestArgs); $ch = curl_init( "https://".$connect['ip'].":".$connect['port']."/common_api/1.0/create_driver_operation"); curl_setopt( $ch, CURLOPT_POST, TRUE ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString ); 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($dataString.$connect['secret']), 'Content-Type: application/json', 'Content-Length:99' )); |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
И нафига куча кода этого?
Вам апи отвечает чего не нравится, это и смотрите. Может он вообще json не воспринимает В любом случае нужно смотреть описание api, без него гадание на кофейной гуще |
![]() |
![]() |
![]() |
#3 |
Регистрация: 05.10.2021
Сообщений: 4
|
![]()
Как программисты Такси Мастер подсоединяют секретный ключ к параметрам в формате json в API не описано, хитрецы требуют за это дополнительную оплату. Я ссылку дал на API, можно посмотреть. Нужен тот кто занимался этой программой тогда этот код не покажется слишком большим
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
![]()
Бесплатный сыр бывает только сами знаете где.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перехват заказа такси. | Vadim87 | Фриланс | 1 | 23.03.2019 23:57 |
Позиционирование машин Такси | iskurt | Помощь студентам | 6 | 28.03.2014 22:58 |
Расписание маршрутного такси... | SwIm | Фриланс | 10 | 12.01.2010 18:42 |