Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2021, 12:20   #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'
));
Сргкшдщ вне форума Ответить с цитированием
Старый 09.10.2021, 13:49   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 3,863
По умолчанию

И нафига куча кода этого?
Вам апи отвечает чего не нравится, это и смотрите. Может он вообще json не воспринимает
В любом случае нужно смотреть описание api, без него гадание на кофейной гуще
ADSoft вне форума Ответить с цитированием
Старый 09.10.2021, 21:09   #3
Сргкшдщ
 
Регистрация: 05.10.2021
Сообщений: 4
По умолчанию

Как программисты Такси Мастер подсоединяют секретный ключ к параметрам в формате json в API не описано, хитрецы требуют за это дополнительную оплату. Я ссылку дал на API, можно посмотреть. Нужен тот кто занимался этой программой тогда этот код не покажется слишком большим
Сргкшдщ вне форума Ответить с цитированием
Старый 10.10.2021, 01:50   #4
Streletz
Старожил
 
Регистрация: 02.01.2014
Сообщений: 2,871
По умолчанию

Цитата:
Сообщение от Сргкшдщ Посмотреть сообщение
хитрецы требуют за это дополнительную оплату
Бесплатный сыр бывает только сами знаете где.
Streletz вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват заказа такси. Vadim87 Фриланс 1 23.03.2019 23:57
Позиционирование машин Такси iskurt Помощь студентам 6 28.03.2014 21:58
Расписание маршрутного такси... SwIm Фриланс 10 12.01.2010 18:42