TrackApi (Трасса)¶
Обзор¶
Интеграция с Трасса — API для управления топливными картами на АЗС Трасса.
Клиент¶
TrackApiClient¶
Расположение: FuelProcessing/TrackApi/Client/TrackApiClient.cs
Низкоуровневый клиент для взаимодействия с API Трасса. Использует RestHelper для выполнения HTTP-запросов.
RestHelper¶
Расположение: FuelProcessing/TrackApi/Client/RestHelper.cs
Вспомогательный класс для выполнения HTTP-запросов через RestSharp.
Базовые URL:
- Legacy: http://lkcard.trassagk.ru:8080/pws/
- API v1: https://account.trassagk.ru/api/v1/
- API v2: https://account.trassagk.ru/
Аутентификация¶
| Поле | Тип | Описание |
|---|---|---|
ApiPassword |
string (зашифрован) | Пароль API |
ApiLogin |
string | Логин API |
TrackApiLogin |
string | Логин для токена |
TrackApiPassword |
string | Пароль для токена |
IdContractTrack |
string? | ID контракта (сохраняется) |
Token |
string | Bearer токен для запросов |
ApiToken |
string | Токен аутентификации |
Особенности¶
Пагинация при получении карт (page/limit)
HTML-парсинг баланса через regex
Асинхронная установка лимитов
Максимальный лимит: 99999
Двойственная реализация: старая логика и Swagger Integration
Методы TrackApiClient¶
Класс содержит методы двух регионов: OldLogic (устаревшая реализация) и Swagger Integration (современная реализация).
Region: OldLogic¶
GetToken(string apiPass, string apiRecordKey)¶
Получение токена аутентификации.
Параметры:
- apiPass — пароль API
- apiRecordKey — ключ записи (логин)
Возвращает: LoginResponse с токеном
Endpoint: POST /api/v1/user/login
GetCompany()¶
Получение информации о компании.
Возвращает: CompanyResponse с данными компании
Endpoint: GET /user/accounts
GetCards(CardRequest request)¶
Получение списка карт (устаревший метод).
Параметры:
- request.CompanyTrackId — ID компании
- request.page — номер страницы
- request.limit — лимит записей
Возвращает: CardResponse
Endpoint: GET /companies/{CompanyTrackId}/cards?page={page}&limit={limit}
BlockCard(BlockRequest request, Action<string, string, string> logAction = null)¶
Блокировка карты (устаревший метод).
public HttpStatusCode BlockCard(BlockRequest request, Action<string, string, string> logAction = null)
Параметры:
- request.CompanyTrackId — ID компании
- request.CardTrackId — ID карты
- logAction — опциональный callback для логирования
Возвращает: HttpStatusCode
Endpoint: PUT /companies/{CompanyTrackId}/cards/{CardTrackId}/block
UnblockCard(UnblockRequest request, Action<string, string, string> logAction = null)¶
Разблокировка карты (устаревший метод).
public HttpStatusCode UnblockCard(UnblockRequest request, Action<string, string, string> logAction = null)
Параметры:
- request.CompanyTrackId — ID компании
- request.CardTrackId — ID карты
- logAction — опциональный callback для логирования
Возвращает: HttpStatusCode
Endpoint: PUT /companies/{CompanyTrackId}/cards/{CardTrackId}/unblock
GetTransactionsOld(DateTime start, DateTime end)¶
Получение транзакций (устаревший синхронный метод).
Параметры:
- start — начальная дата
- end — конечная дата
Возвращает: TransactionResponse
Endpoint: POST /public-api/transactions.do
GetTransactions(DateTime start, DateTime end)¶
Получение транзакций с пагинацией (асинхронный метод).
Параметры:
- start — начальная дата
- end — конечная дата
Возвращает: FinanceTransactionReponse со списком транзакций
Особенности: - Автоматическая пагинация с задержкой 30 секунд между страницами - Фильтрация транзакций по датам
Endpoint: GET /integration/v1/transactions
GetBalance()¶
Получение баланса аккаунта.
Возвращает: HTML-страница с балансом (парсится через regex)
Endpoint: POST /login.do?oper=logon
Region: Swagger Integration¶
GET Methods¶
GetTransactions(int page = 1, string cardId = null, string dateFrom = null, string dateTo = null)¶
Получение транзакций с фильтрацией.
public IRestResponse GetTransactions(int page = 1, string cardId = null, string dateFrom = null, string dateTo = null)
Параметры:
- page — номер страницы (по умолчанию 1)
- cardId — фильтр по ID карты
- dateFrom — начальная дата (формат: yyyy-MM-dd HHss)
-
dateTo — конечная дата
Возвращает: IRestResponse
Endpoint: GET /integration/v1/transactions
GetCards(int page = 1, string cardNumber = null)¶
Получение списка карт.
Параметры:
- page — номер страницы (по умолчанию 1)
- cardNumber — фильтр по номеру карты
Возвращает: CardResponse
Endpoint: GET /integration/v1/cards
GetWallets(int page = 1)¶
Получение списка кошельков.
Параметры:
- page — номер страницы (по умолчанию 1)
Возвращает: IRestResponse
Endpoint: GET /integration/v1/wallets
GetServices(int page = 1, Action<string, string, string> logAction = null)¶
Получение списка сервисов.
Параметры:
- page — номер страницы (по умолчанию 1)
- logAction — опциональный callback для логирования
Возвращает: RootServiceModel или null при ошибке
Endpoint: GET /integration/v1/service
GetCardCosts(string cardId)¶
Получение затрат по карте.
Параметры:
- cardId — ID карты
Возвращает: IRestResponse
Endpoint: GET /integration/v1/card/{cardId}/costs
GetCardLimits(string cardId)¶
Получение лимитов карты.
Параметры:
- cardId — ID карты
Возвращает: CardLimitsResponse с данными лимитов
Endpoint: GET /integration/v1/cards/{cardId}/limits
PUT Methods¶
BlockCard(string cardId, Action<string, string, string> logAction = null)¶
Блокировка карты.
public async Task<(HttpStatusCode, string)> BlockCard(string cardId, Action<string, string, string> logAction = null)
Параметры:
- cardId — ID карты
- logAction — опциональный callback для логирования
Возвращает: Кортеж (HttpStatusCode, string) со статусом и контентом ответа
Особенности: - Задержка 6 секунд после выполнения - Логирование статуса и пути запроса
Endpoint: PUT /integration/v1/cards/{cardId}/block
UnblockCard(string cardId, Action<string, string, string> logAction = null)¶
Разблокировка карты.
public async Task<(HttpStatusCode, string)> UnblockCard(string cardId, Action<string, string, string> logAction = null)
Параметры:
- cardId — ID карты
- logAction — опциональный callback для логирования
Возвращает: Кортеж (HttpStatusCode, string) со статусом и контентом ответа
Особенности: - Задержка 6 секунд после выполнения - Логирование статуса и пути запроса
Endpoint: PUT /integration/v1/cards/{cardId}/unblock
POST Methods¶
SetCardLimit(string cardId, LimitRequest limitRequest, Action<string, string, string> logAction = null)¶
Установка лимита на карту.
public SetCardLimitResponse SetCardLimit(string cardId, LimitRequest limitRequest, Action<string, string, string> logAction = null)
Параметры:
- cardId — ID карты
- limitRequest — объект с параметрами лимита
- logAction — опциональный callback для логирования
Возвращает: SetCardLimitResponse
При ошибке: Возвращает ответ с Result = false и сообщением "Неизвестная ошибка при выполнении запроса."
Endpoint: POST /integration/v1/cards/{cardId}/limit
Методы TrackApiService¶
GetToken¶
Получение токена аутентификации.
private string GetToken()
{
var response = _restClient.Execute<TokenRequest>(...);
return response.Token;
}
GetCompany¶
Получение информации о компании.
GetFuelList¶
Синхронизация типов топлива с маппингом названий.
Синхронизация¶
| Операция | Интервал | Описание |
|---|---|---|
| Cards | 2 часа | Пагинация по страницам |
| Transactions | 35 мин | С фильтрацией по датам |
| Balance | 20 мин | Извлечение из HTML |
Пример запроса¶
# Получение карт
GET https://api.track.ru/cards?page=1&limit=100
Authorization: Bearer {token}
# Получение баланса
GET https://api.track.ru/balance
Authorization: Bearer {token}
Troubleshooting¶
| Проблема | Решение |
|---|---|
| Лимит не устанавливается | Проверьте значение <= 99999 |
| Баланс не парсится | Проверьте regex-шаблон |