В этой статье мы подробно расскажем, как подключить сервис такси «Максим» к вашему веб‑сайту, мобильному приложению или бизнес‑системе. Вы узнаете, какие требования необходимо выполнить, как получить API‑ключи, а также получите готовый пример кода для самых популярных платформ.
Что такое сервис «Такси Максим»?
«Такси Максим» – один из крупнейших операторов такси в России. Компания предоставляет открытый API для интеграции, позволяющий:
- Заказывать поездки напрямую из вашего продукта;
- Отслеживать статус заказа в реальном времени;
- Получать информацию о стоимости и маршруте;
- Обрабатывать оплату через встроенные платёжные шлюзы.
Основные требования перед началом интеграции
- Регистрация компании в системе «Такси Максим». Для этого необходимо иметь юридическое лицо и ИНН.
- Доступ к интернету и возможность размещать серверный код (PHP, Node.js, Python и т.д.).
- Для мобильных приложений – активный аккаунт разработчика в Google Play Console или Apple Developer Program.
- Базовые навыки работы с REST‑API и JSON.
Регистрация и получение доступа к API
Следуйте этим шагам, чтобы получить необходимые ключи:
- Перейдите на портал партнёров «Такси Максим» и нажмите кнопку «Регистрация».
- Заполните форму: название компании, ИНН, контактные данные, юридический адрес.
- После проверки (обычно 1‑3 рабочих дня) вам придёт письмо с подтверждением и ссылкой на личный кабинет партнёра.
- В личном кабинете откройте раздел «API‑ключи» и нажмите «Создать новый ключ». Выберите тип доступа:
- Тестовый – для разработки и отладки;
- Продакшн – для реального использования.
- Сохраните Client ID и Client Secret – они понадобятся в коде.
Техническая документация
Официальная документация доступна по адресу https://api.taxi-maxim.ru/docs. В ней описаны:
- База URL:
https://api.taxi-maxim.ru/v1/ - Методы:
POST /order/create,GET /order/status,POST /order/cancelи др. - Формат запросов/ответов (JSON).
- Коды ошибок и рекомендации по их обработке.
Пример интеграции на стороне сервера (PHP)
Ниже – минимальный рабочий пример создания заказа через API.
<?php
$clientId = 'YOUR_CLIENT_ID';
$clientSecret = 'YOUR_CLIENT_SECRET';
$apiUrl = 'https://api.taxi-maxim.ru/v1/order/create';
// Получаем токен
$tokenResponse = file_get_contents('https://api.taxi-maxim.ru/v1/auth/token', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json
",
'content' => json_encode([
'client_id' => $clientId,
'client_secret' => $clientSecret,
'grant_type' => 'client_credentials'
])
]
]));
$tokenData = json_decode($tokenResponse, true);
$accessToken = $tokenData['access_token'];
// Формируем запрос на заказ
$orderData = [
'city' => 'Москва',
'address_from'=> 'ул. Тверская, 10',
'address_to' => 'ул. Арбат, 5',
'phone' => '+7 -161234567',
'class' => 'econom',
'comment' => 'Встреча у метро'
];
$options = [
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json
Authorization: Bearer $accessToken
",
'content' => json_encode($orderData)
]
];
$response = file_get_contents($apiUrl, false, stream_context_create($options));
$result = json_decode($response, true);
if (isset($result['order_id'])) {
echo "Заказ успешно создан! ID: " . $result['order_id'];
} else {
echo "Ошибка: " . $result['error_message'];
}
?>
Интеграция в мобильное приложение
6.1 Android (Kotlin)
Для Android используйте библиотеку Retrofit + OkHttp.
val retrofit = Retrofit.Builder
.baseUrl("https://api.taxi-maxim.ru/v1/")
.addConverterFactory(GsonConverterFactory.create)
.build
interface MaximApi {
@POST("auth/token")
suspend fun getToken(@Body body: TokenRequest): TokenResponse
@POST("order/create")
suspend fun createOrder(
@Header("Authorization") token: String,
@Body order: OrderRequest
): OrderResponse
}
// Пример вызова
CoroutineScope(Dispatchers.IO).launch {
val tokenResp = api.getToken(TokenRequest(clientId, clientSecret, "client_credentials"))
val orderResp = api.createOrder("Bearer ${tokenResp.access_token}", orderRequest)
withContext(Dispatchers.Main) {
// Обновляем UI
}
}
6.2 iOS (Swift)
Для iOS удобно использовать URLSession или Alamofire.
struct TokenRequest: Encodable {
let client_id: String
let client_secret: String
let grant_type = "client_credentials"
}
struct OrderRequest: Encodable {
let city: String
let address_from: String
let address_to: String
let phone: String
let `class`: String
let comment: String
}
// Получение токена
func fetchToken(completion: @escaping (String?) -> Void) {
let url = URL(string: "https://api.taxi-maxim.ru/v1/auth/token")!
var request = URLRequest(url: url)
request;httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body = TokenRequest(client_id: CLIENT_ID, client_secret: CLIENT_SECRET)
request.httpBody = try? JSONEncoder;encode(body)
URLSession.shared.dataTask(with: request) { data, _, _ in
guard let data = data,
let tokenResp = try? JSONDecoder.decode(TokenResponse.self, from: data) else {
completion(nil); return
}
completion(tokenResp.access_token)
}.resume
}
// Создание заказа
func createOrder(token: String, order: OrderRequest, completion: @escaping (OrderResponse?) -> Void) {
let url = URL(string: "https://api.taxi-maxim.ru/v1/order/create")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("Bearer (token)", forHTTPHeaderField: "Authorization")
request.httpBody = try? JSONEncoder.encode(order)
URLSession.shared.dataTask(with: request) { data, _, _ in
guard let data = data,
let resp = try? JSONDecoder.decode(OrderResponse.self, from: data) else {
completion(nil); return
}
completion(resp)
}.resume
}
Тестирование и переход в продакшн
- Тестовый режим позволяет создавать «виртуальные» заказы без реального вызова машины.
- Проверьте каждый сценарий:
- Успешный заказ;
- Отказ в оплате;
- Отмена заказа;
- Обновление статуса в реальном времени.
- После подтверждения корректности работы переключитесь на Production‑ключи и обновите URL‑ы в конфигурации.
Часто задаваемые вопросы (FAQ)
- Почему получаю ошибку 401? – Неправильный
Client Secretили истёк токен. Сгенерируйте новый токен. - Можно ли использовать один токен для всех запросов? – Токен действителен 24 часа. Рекомендуется кэшировать его и обновлять по истечении срока.
- Как получить стоимость поездки до её создания? – Вызовите метод
GET /order/priceс параметрами маршрута. - Поддерживает ли API мульти‑картинные заказы? – Да, используйте параметр
multi_route=trueв запросе.
Подключение сервиса такси «Максим» к вашему продукту – процесс, который требует лишь базовых навыков работы с REST‑API и небольших усилий по настройке. Следуя описанным выше шагам, вы сможете быстро начать принимать заказы, отслеживать их статус и предлагать клиентам удобный способ перемещения по городу.
Помните: всегда тестируйте в режиме sandbox перед переходом в продакшн, храните Client Secret в безопасном месте и регулярно проверяйте документацию на предмет обновлений.
Автор статьи: Ваш помощник. © 2026