Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Вопрос на миллион долларов: вы от менеджера в личном письме получили секретный ключ?

Цитата с сайта:
Цитата:
В поле Секретный ключ укажите номер секретного ключа для работы с платежными системами и сверки платежей, который будет выслан вам в письме от менеджера
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос в Такси Мастер Сргкшдщ PHP 3 10.10.2021 01:50
перехватчик заказов такси. дениспапа Фриланс 2 17.05.2017 06:56
Расписание маршрутного такси... SwIm Фриланс 10 12.01.2010 18:42