TM API: различия между версиями
(Новая страница: «'''TMAPI''' - специальный набор инструментов Такси-Мастер, который позволит объединить сис…») |
Нет описания правки |
||
| Строка 167: | Строка 167: | ||
"id":2, | "id":2, | ||
"name":"CREW_GROUP2" | "name":"CREW_GROUP2" | ||
} | |||
] | |||
} | } | ||
} | |||
</pre> | </pre> | ||
| Строка 456: | Строка 456: | ||
|Целое | |Целое | ||
|ИД службы ЕДС | |ИД службы ЕДС | ||
|} | |||
Специальные возвращаемые коды: | |||
{| | |||
!Код | |||
!Описание | |||
|- | |||
|100 | |||
|Заказ с такими параметрами уже создан | |||
|} | |||
Возвращаемые данные в случае успешного выполнения запроса: | |||
{| | |||
!Параметр | |||
!Тип | |||
!Описание | |||
|- | |||
|order_id | |||
|Целое | |||
|ИД созданного заказа | |||
|} | |||
Пример: | |||
<pre> | |||
Запрос: | |||
POST https://ip:port/common_api/1.0/create_order HTTP/1.1 | |||
Signature: <...> | |||
Content-Type: application/x-www-form-urlencoded | |||
Content-Length: 127 | |||
phone=89123456789&source=SOURCE&source_time=20120501100000&dest=DEST&customer=CUSTOMER& | |||
comment=COMMENT&crew_group_id=1&uds_id=1 | |||
Ответ: | |||
{ | |||
"code":0, | |||
"descr":"OK", | |||
"data":{ | |||
"order_id":12345 | |||
} | |||
} | |||
</pre> | |||
=== Расчет суммы заказа === | |||
Метод: GET | |||
Название запроса: calc_order_cost | |||
Параметры: | |||
{| | |||
!Параметр | |||
!Тип | |||
!Описание | |||
|- | |||
!colspan="3"|Обязательные параметры | |||
|- | |||
|tariff_id | |||
|Целое | |||
|ИД тарифа | |||
|- | |||
!colspan="3"|Необязательные параметры | |||
|- | |||
|source_time | |||
|ГГГГММДДччммсс | |||
|Время подачи | |||
|- | |||
|is_prior | |||
|true или false | |||
|Предварительный заказ | |||
|- | |||
|client_id | |||
|Целое | |||
|ИД клиента | |||
|- | |||
|discount_id | |||
|Целое | |||
|ИД скидки | |||
|- | |||
|disc_card_id | |||
|Целое | |||
|ИД дисконтной карты | |||
|- | |||
|source_zone_id | |||
|Целое | |||
|ИД района подачи | |||
|- | |||
|dest_zone_id | |||
|Целое | |||
|ИД района назначения | |||
|- | |||
|distance_city | |||
|Дробное | |||
|Километраж по городу | |||
|- | |||
|distance_country | |||
|Дробное | |||
|Километраж за городом | |||
|- | |||
|source_distance_country | |||
|Дробное | |||
|Километраж до подачи за городом | |||
|- | |||
|is_country | |||
|true или false | |||
|Загородный заказ | |||
|- | |||
|waiting_minutes | |||
|Целое | |||
|Время ожидания посадки клиента в минутах | |||
|- | |||
|is_hourly | |||
|true или false | |||
|Почасовой заказ | |||
|- | |||
|hourly_minutes | |||
|Целое | |||
|Длительность почасового заказа в минутах | |||
|- | |||
|is_prize | |||
|true или false | |||
|Призовой заказ | |||
|- | |||
|back_way | |||
|true или false | |||
|Обратный путь за городом | |||
|- | |||
|services | |||
|Строка | |||
|Список ИД услуг через точку с запятой, пример: «1;2;3» | |||
|} | |} | ||
Версия от 11:26, 20 августа 2012
TMAPI - специальный набор инструментов Такси-Мастер, который позволит объединить систему с вашим сайтом и различными полезными сервисами. Он предоставляется вам на свободных условиях.
Благодаря этому набору вы сможете:
- Создать механизм приема заказов через интернет.
- Сделать ваш сайт более информативным: публиковать полезную для клиентов информацию прямо из системы - список ближайших экипажей, предварительный расчет стоимости поездки, мониторинг движения автомобиля такси в процессе выполнения заказа, карты города и контактную информацию.
- Расширить возможности своей службы за счет популярного онлайн-сервиса Яндекс Такси.
Общее описание протокола
Формат запроса
TMWeb принимает входящие запросы по протоколу HTTPS. В URI запроса после ip адреса и порта, который будет слушать TMWeb, должно идти название API (common_api) и версия API. Пример:
GET https://ip:port/common_api/1.0/get_crew_groups_list HTTP/1.1
Для получения данных из БД используются запросы типа GET. Для записи данных в базу данных используются запросы типа POST. В запросе типа GET параметры запроса передаются в URI. Пример:
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10 HTTP/1.1 Signature: <...>
В запросе типа POST параметры передаются в теле запроса в формате application/x-wwwform-urlencoded. Пример:
POST https://ip:port/common_api/1.0/create_order HTTP/1.1 Signature: <...> Content-Type: application/x-www-form-urlencoded Content-Length: 118 phone=89123456789&source=SOURCE&source_time=20120501100000&dest=DEST&customer=CUSTOMER& comment=COMMENT&crew_group_id=1
В любом запросе обязательно должен быть заголовок Signature. В нем передается MD5 хэш, рассчитанный для строки, которая получается сцеплением строки параметров запроса с секретным ключом. Секретный ключ задается в настройках модуля TMWeb в ТМ2. Пример:
Запрос:
GET https://ip:port/common_api/1.0/calc_order_cost?tariff_id=1&distance_city=10 HTTP/1.1
Секретный ключ:
1234567890
Signature = MD5("tariff_id=1&distance_city=10" + "1234567890") = d7b8fb11b5499b64d750b8efe53e2877
Формат ответа
TMWeb всегда возвращает HTTP код 200 ОК. Результат выполнения запроса содержится в теле ответа в формате JSON. Общий вид возвращаемого результата:
{
"code":<Числовой код результата>,
"descr":"<Строковое описание результата>",
"data":{<Дополнительная информация>}
}
Существуют общие для всех запросов коды результатов:
| Код | Описание |
|---|---|
| 0 | Успешное выполнение запроса |
| 1 | Неизвестная ошибка |
| 2 | Неизвестный тип API |
| 3 | API отключено в настройках TMWeb |
| 4 | Не совпадает секретный ключ |
| 5 | Неподдерживаемая версия API |
| 6 | Неизвестное название запроса |
| 7 | Неверный тип запроса GET/POST |
| 8 | Не хватает входного параметра (в доп. информации ответа будет название отсутствующего параметра) |
| 9 | Некорректный входной параметр (в доп. информации ответа будет название некорректного параметра) |
| 10 | Внутренняя ошибка обработки запроса |
Описание запросов
Запрос-пинг
Для данного запроса не проверяется версия API, секретный ключ и тип запроса GET/ POST. Метод: GET или POST Название запроса: ping Параметры: нет Специальные возвращаемые коды: нет Возвращаемые данные в случае успешного выполнения запроса: нет Пример:
Запрос:
GET https://ip:port/common_api/1.0/ping HTTP/1.1
Ответ:
{
"code":0,
"descr":"OK",
"data":{}
}
Запрос списка групп экипажей
Метод: GET Название запроса: get_crew_groups_list Параметры: нет Специальные возвращаемые коды: нет Возвращаемые данные в случае успешного выполнения запроса:
| Параметр | Тип | Описание |
|---|---|---|
| crew_groups | Массив | Список групп экипажей |
| id | Целое | ИД группы экипажей |
| name | Строка | Название группы экипажей |
Пример:
Запрос:
GET https://ip:port/common_api/1.0/get_crew_groups_list HTTP/1.1
Signature: <...>
Ответ:
{
"code":0,
"descr":"OK",
"data":{
"crew_groups":[
{
"id":1,
"name":"CREW_GROUP1"
},
{
"id":2,
"name":"CREW_GROUP2"
}
]
}
}
Запрос списка служб ЕДС
Метод: GET Название запроса: get_uds_list Параметры: нет Специальные возвращаемые коды: нет Возвращаемые данные в случае успешного выполнения запроса:
| Параметр | Тип | Описание |
|---|---|---|
| uds | Массив | Список служб ЕДС |
| id | Целое | ИД службы ЕДС |
| name | Строка | Название службы ЕДС |
Пример:
Запрос:
GET https://ip:port/common_api/1.0/get_uds_list HTTP/1.1
Signature: <...>
Ответ:
{
"code":0,
"descr":"OK",
"data":{
"uds":[
{
"id":1,
"name":"UDS1"
},
{
"id":2,
"name":"UDS2"
}
]
}
}
Запрос списка тарифов
Метод: GET Название запроса: get_tariffs_list Параметры: нет Специальные возвращаемые коды: нет Возвращаемые данные в случае успешного выполнения запроса:
| Параметр | Тип | Описание |
|---|---|---|
| tariffs | Массив | Список тарифов |
| id | Целое | ИД тарифа |
| name | Строка | Название тарифа |
Пример:
Запрос:
GET https://ip:port/common_api/1.0/get_tariffs_list HTTP/1.1
Signature: <...>
Ответ:
{
"code":0,
"descr":"OK",
"data":{
"tariffs":[
{
"id":1,
"name":"TARIFF1"
},
{
"id":2,
"name":"TARIFF2"
}
]
}
}
Запрос списка услуг
Метод: GET Название запроса: get_services_list Параметры: нет Специальные возвращаемые коды: нет Возвращаемые данные в случае успешного выполнения запроса:
| Параметр | Тип | Описание |
|---|---|---|
| services | Массив | Список услуг |
| id | Целое | ИД услуги |
| name | Строка | Название услуги |
| sum | Дробное | Абсолютна сумма услуги, руб |
| percent | Дробное | Процент услуги от стоимости заказа, % |
Пример:
Запрос:
GET https://ip:port/common_api/1.0/get_services_list HTTP/1.1
Signature: <...>
Ответ:
{
"code":0,
"descr":"OK",
"data":{
"services":[
{
"id":1,
"name":"SERVICE1",
"sum":100,
"percent":0
},
{
"id":2,
"name":"SERVICE2"
"sum":0,
"percent":10
}
]
}
}
Запрос списка скидок
Метод: GET Название запроса: get_discounts_list Параметры: нет Специальные возвращаемые коды: нет Возвращаемые данные в случае успешного выполнения запроса:
| Параметр | Тип | Описание |
|---|---|---|
| services | Массив | Список скидок |
| id | Целое | ИД скидки |
| name | Строка | Название скидки |
| sum | Дробное | Абсолютна сумма скидки, руб |
| percent | Дробное | Процент скидки от стоимости заказа, % |
Пример:
Запрос:
GET https://ip:port/common_api/1.0/get_discounts_list HTTP/1.1
Signature: <...>
Ответ:
{
"code":0,
"descr":"OK",
"data":{
"discounts":[
{
"id":1,
"name":"DISCOUNT1",
"sum":100,
"percent":0
},
{
"id":2,
"name":"DISCOUNT2"
"sum":0,
"percent":10
}
]
}
}
Создание нового заказа
Метод: POST Название запроса: create_order Параметры:
| Параметр | Тип | Описание |
|---|---|---|
| Обязательные параметры | ||
| phone | Строка, <= 16 символов | Номер телефона |
| source | Строка | Адрес подачи |
| source_time | ГГГГММДДччммсс | Время подачи |
| Необязательные параметры | ||
| dest | Строка | Адрес назначения |
| customer | Строка | Заказчик |
| comment | Строка | Комментарий |
| crew_group_id | Целое | ИД группы экипажей |
| uds_id | Целое | ИД службы ЕДС |
Специальные возвращаемые коды:
| Код | Описание |
|---|---|
| 100 | Заказ с такими параметрами уже создан |
Возвращаемые данные в случае успешного выполнения запроса:
| Параметр | Тип | Описание |
|---|---|---|
| order_id | Целое | ИД созданного заказа |
Пример:
Запрос:
POST https://ip:port/common_api/1.0/create_order HTTP/1.1
Signature: <...>
Content-Type: application/x-www-form-urlencoded
Content-Length: 127
phone=89123456789&source=SOURCE&source_time=20120501100000&dest=DEST&customer=CUSTOMER&
comment=COMMENT&crew_group_id=1&uds_id=1
Ответ:
{
"code":0,
"descr":"OK",
"data":{
"order_id":12345
}
}
Расчет суммы заказа
Метод: GET Название запроса: calc_order_cost Параметры:
| Параметр | Тип | Описание |
|---|---|---|
| Обязательные параметры | ||
| tariff_id | Целое | ИД тарифа |
| Необязательные параметры | ||
| source_time | ГГГГММДДччммсс | Время подачи |
| is_prior | true или false | Предварительный заказ |
| client_id | Целое | ИД клиента |
| discount_id | Целое | ИД скидки |
| disc_card_id | Целое | ИД дисконтной карты |
| source_zone_id | Целое | ИД района подачи |
| dest_zone_id | Целое | ИД района назначения |
| distance_city | Дробное | Километраж по городу |
| distance_country | Дробное | Километраж за городом |
| source_distance_country | Дробное | Километраж до подачи за городом |
| is_country | true или false | Загородный заказ |
| waiting_minutes | Целое | Время ожидания посадки клиента в минутах |
| is_hourly | true или false | Почасовой заказ |
| hourly_minutes | Целое | Длительность почасового заказа в минутах |
| is_prize | true или false | Призовой заказ |
| back_way | true или false | Обратный путь за городом |
| services | Строка | Список ИД услуг через точку с запятой, пример: «1;2;3» |