|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.10.2021, 17:45 | #1 |
Регистрация: 05.10.2021
Сообщений: 4
|
Запрос в Такси Мастер
В программе Такси мастер есть пример запроса к базе данных где параметры передаются в формате application/x-www-form-urlencode, но нет примера запроса в формате json, внизу мой пример запроса в json отрабатывает с ошибкой "Неправильный секретный ключ" чтобы я не пытался сделать. Что-то в коде не так написано, может кто имел дело с Такси Мастер
Ссылка на API http://help.taximaster.ru/index.php/...B0.D0.B7.D0.B0 Вот запрос где параметры в формате application/x-www-form-urlencode. Этот запрос взят с этого API. Запись в базу данных осуществляется с параметрами в формате json, пример которого нет в API. Есть какая-то особенность в коде, реализовать не удаётся, ответ "Не совпадает секретный ключ". <?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' )); |
12.10.2021, 01:39 | #2 | |
Недо
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,394
|
Вопрос на миллион долларов: вы от менеджера в личном письме получили секретный ключ?
Цитата с сайта: Цитата:
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрос в Такси Мастер | Сргкшдщ | PHP | 3 | 10.10.2021 01:50 |
перехватчик заказов такси. | дениспапа | Фриланс | 2 | 17.05.2017 06:56 |
Расписание маршрутного такси... | SwIm | Фриланс | 10 | 12.01.2010 18:42 |