API интеграции — Обзор
Обзор системы интеграций
FuelProcessing интегрирована с 11 внешними топливными сервисами (ВИНКами) для синхронизации карт, транзакций, лимитов и балансов.
Архитектура
graph TB
subgraph "FuelProcessing"
EXECUTOR[ApiExecutor<br/>Coordinator]
FACTORY[ApiServiceFactory<br/>Factory Pattern]
end
subgraph "API Clients (11)"
TRACK[Track]
TATNEFT[Tatneft]
GAZPROM[Gazprom]
LUKOIL[Lukoil]
ROSNEFT[Rosneft]
VEZDEHOD[Vezdehod]
NATCAR[NatCar]
INFORKOM[Inforkom]
SOFT[SoftEngineering]
TAIF[TaifNK]
GLOBAL[Globaltruck]
end
EXECUTOR --> FACTORY
FACTORY --> TRACK
FACTORY --> TATNEFT
FACTORY --> GAZPROM
FACTORY --> LUKOIL
FACTORY --> ROSNEFT
FACTORY --> VEZDEHOD
FACTORY --> NATCAR
FACTORY --> INFORKOM
FACTORY --> SOFT
FACTORY --> TAIF
FACTORY --> GLOBAL
Общий интерфейс
Все API клиенты реализуют IApiService:
public interface IApiService
{
List<Card> GetCards(int directContractWithVendorId);
void GetTransactions();
void GetGasStations();
void GetBalance();
List<SimpleRepeatItem> AddLimitsToCards(List<Limit> limit);
void BlockCard(CardBlockRepeat cardInfo);
IEnumerable<ApiLimitInfo> GetLimits(string cardNumber);
}
Сравнение ВИНК
| ВИНК |
Auth |
Cards |
Transactions |
Limits |
Balance |
Features |
| Track |
Login+Pass |
 |
 |
 |
 |
Пагинация, HTML parse |
| Tatneft |
REST+SOAP |
 |
 |
 |
 |
VPN, отчёты |
| Gazprom |
Key+Bearer |
 |
 |
 |
 |
Ночные отчёты |
| Lukoil |
Certificate |
 |
 |
 |
 |
Cert auth |
| Rosneft |
Login+Pass |
 |
 |
 |
 |
Авто-бренды |
| Vezdehod |
Key+Login |
 |
 |
 |
 |
Простой API |
| NatCar |
Login+Pass |
 |
 |
 |
 |
Ограничен |
| Inforkom |
Login+Pass |
 |
 |
 |
 |
36 месяцев |
| SoftEng |
Key+Login |
 |
 |
 |
 |
— |
| TaifNK |
Login+Pass |
 |
 |
 |
 |
Token auth |
| Globaltruck |
User+Pass |
 |
 |
 |
 |
Microservices |
Расписание синхронизации
gantt
title Расписание синхронизации с ВИНК
dateFormat HH:mm
axisFormat %H:%M
section Балансы
Sync Balance :a1, 00:00, 20m
section Карты
Sync Cards :a2, 00:00, 2h
section Транзакции
Sync Transactions :a3, 00:00, 35m
section АЗС
Sync GasStations :a4, 00:00, 48h
Обработка ошибок
ApiResponseCodes
| Код |
Значение |
Описание |
| 0 |
Success |
Успешно |
| 1 |
NoProxy |
Нет прокси |
| 2 |
Timeout |
Таймаут |
| 3 |
NetworkError |
Ошибка сети |
| 4 |
InvalidResponse |
Невалидный ответ |
| 5 |
MaxRetriesExceeded |
Превышен лимит попыток |
| 6 |
ServerError |
Ошибка сервера |
Retry стратегия
// Защита от частых запросов
if (typeSync == VinkApiTypeSync.Cards)
{
var lastSync = apiMonitoring.SyncDateTime;
if (DateTime.Now - lastSync < TimeSpan.FromHours(2))
return; // Пропуск
}
// При ошибке
apiMonitoring.ErrorCount++;
Log.Error(e, "API Error: {VinkType} - {TypeSync}", vinkType, typeSync);
Мониторинг
ApiMonitoring entity
| Поле |
Тип |
Описание |
CompanyId |
int |
ID компании |
VinkName |
VinkType |
ВИНК |
VinkApi |
VinkApiTypeSync |
Тип синхронизации |
InProcess |
bool |
В процессе |
SyncResult |
bool |
Результат |
SyncDateTime |
DateTime |
Начало |
SyncDateTimeEnd |
DateTime |
Окончание |
ErrorCount |
int |
Счётчик ошибок |
Документация по ВИНК
Назад к обзору