Перейти к содержанию

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 Счётчик ошибок

Документация по ВИНК

Назад к обзору