API на Shell B2B Mobility за данни за транзакции по пътни такси – Ръководство за бързо стартиране
Версия на API: 1.0.0 | Удостоверяване: OAuth 2.0 | Статус: Производствена версия
Общ преглед
API-то на Shell B2B Mobility за данни за транзакции с пътни такси е API, базирано на REST, което осигурява изчерпателен достъп до записи за транзакции с пътни такси и свързани данни за клиентите на Shell Mobility. Този API позволява на разработчиците да извличат, филтрират и анализират данни за транзакциите за пътни такси чрез програмиране с цел съгласуване на сметки, проверка на фактури, управление на разходите и спазване на нормативните изисквания.
Основни функции
- Извличане на данни за транзакции за пътни такси по номер на сметка
- Филтриране на транзакциите по период (начална и крайна дата)
- Търсене по статус на фактурата и VRN (регистрационен номер на превозното средство)
- Разширени възможности за сортиране по няколко полета
- Поддръжка на разбиване на страници за големи масиви от данни
- Гъвкаво филтриране по полета за оптимизиране на обема на отговора
- Подробна информация за пътните такси, включително точки на влизане/излизане
- Поддръжка на множество мрежи за пътни такси и оператори
Удостоверяване
OAuth 2.0 (стандартен метод за удостоверяване)
API-то за данни за транзакции за пътни такси на Shell използва потока „Клиентски идентификационни данни“ на OAuth 2.0 за сигурно удостоверяване.
Процес на OAuth 2.0
Стъпка 1: Получаване на токен за достъп
Искане на токен за достъп от крайната точка за токени на OAuth:
POST /oauth/token Content-Type: application/x-www-form-urlencoded grant_type=client_credentials&client_id=your-client-id&client_secret=your-client-secret
Стъпка 2: Използване на токена за достъп в заявките към API
Authorization: Bearer Content-Type: application/json RequestId: eb621f45-a543-4d9a-a934-2f223b263c42
Управление на токени
Най-добри практики за управление на токени:
- Токените за достъп имат ограничен срок на валидност (обикновено 15 минути)
- Въведете кеширане на токените, за да избегнете ненужни заявки за токени
- Обновете токените преди изтичането на срока им, за да гарантирате непрекъсната услуга
- Никога не споделяйте client_secret и не го вграждайте в код от страна на клиента
Среди
API-то е достъпно в две среди:
| Среда | Базов URL | Цел |
|---|---|---|
| Производствена | https://api.shell.com/toll-data/v1 | Производствена среда на живо |
| Тестване (UAT) | https://api-test.shell.com/toll-data/v1 | Среда за тестване и разработка |
URL адреси на OAuth токени:
| Среда | URL на токена |
|---|---|
| Производствена среда | https://api.shell.com/v2/oauth/token |
| Тестова (UAT) | https://api-test.shell.com/v2/oauth/token |
Съвет: Винаги тествайте интеграцията си в тестовата среда, преди да преминете към производствена среда.
Бързо стартиране
1. Получете вашите OAuth идентификационни данни
- Свържете се с Техническата поддръжка на Shell
- Искане на идентификационни данни за OAuth 2.0 (client_id и client_secret)
- Преглед на условията за ползване
2. Получаване на токен за достъп
Първо, получите своя OAuth токен за достъп:
Пример с cURL:
curl -X POST https://api-test.shell.com/v2/oauth/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=your-client-id&client_secret=your-client-secret"
Отговор:
{
"access_token": "eyJhbGciOi*******5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 899
}3. Изпратете първото си API заявка
Пример: Търсене на транзакции за пътни такси
Пример с cURL:
curl -X POST https://api-test.shell.com/toll-data/v1/transactions/search \
-H "Authorization: Bearer eyJhbGci******NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-H "RequestId: eb621f45-a543-4d9a-a934-2f223b263c42" \
-d '{
"Filters": {
"ColCoCode": 86,
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"Filter": "All",
"FromDate": "2026-01-01",
"ToDate": "2026-01-31"
},
"Page": 1,
"PageSize": 10
}'Пример за отговор:
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 150,
"TotalPages": 15,
"PageSize": 10,
"Data": [
{
"NetworkDescription": "Societa Autostradali",
"TollChargerCode": "410|610",
"DelcoCode": "714",
"DelcoName": "Shell Fleet Solutions Consorzio",
"NetworkCode": "TLI",
"Network": "euroShell Consortio",
"PurchasedInCountry": "Италия",
"PurchasedInCountryCode": "IT",
"CardNumber": "707737*******334272",
"CardId": 123456789,
"CardGroupName": "Shell Fleet Solutions Consorzio",
"VehicleRegistration": "KN 00000",
"CostCenter": "100",
"SystemEntryDate": "20260123",
"Време на въвеждане в системата": "13:14:25",
"Дата на транзакцията": "20260120",
"TransactionTime": "10:30:00",
"PostingDate": "20260123",
"PostingTime": "00:00:00",
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"Име_на_сметката": "Име на тестова сметка",
"Дата_на_началото": "20260120",
"Час_на_началото": "06:47:41",
"Дата_на_края": "20260120",
"EndTime": "07:30:15",
"TollGateEntry": "ROMA NORD",
"TollGateExit": "BRENNERO",
"DistanceDriven": "71.6",
"Описание на маршрута": "ROMA NORD - BRENNERO",
"Тип на транзакцията": "Пътен данък",
"Код на продукта": "14",
"Описание на продукта": "Пътен данък",
"Нетна сума на транзакцията": "127,1",
"Данък по транзакцията": "0,0",
"Брутна сума на транзакцията": "127,1",
"Валутен код на транзакцията": "EUR",
"Статус на транзакцията": "Отчитане",
"Номер на фактурата": "8600397548",
"Дата на фактурата": "20260125",
"Статус на фактурата": "Фактурирана",
"Начин на плащане": "Плащане след доставка",
"Сериен номер на ОБУ": "00049000000836932426",
"EmissionClass": "Euro 6",
"ContractID": "fb75eb53-46eb-450b-862e-6045002c3fa8",
"ShellTransactionID": "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
"TollOperator": "Toll4Europe",
"TollDomain": "Toll4Europe",
"TariffRelevantInformation": "Клас на превозното средство: 2, Брой оси: 2, Категория на пътя: Магистрала",
"AdditionalTransactionInfo": "Местоположение: 1",
"TCInvoiceNumber": "12343343",
"TCInvoiceDate": "20260123"
}
]
}Справочник за API крайни точки
Транзакции за пътни такси
| Крайна точка | Метод | Описание |
|---|---|---|
| /toll-data/v1/transactions/search | POST | Извличане на данни за транзакции за пътни такси с гъвкаво филтриране и разбиване на страници |
Типични случаи на употреба:
- Извличане на транзакции за пътни такси по диапазон от дати
- Филтриране по статус на фактурата (Фактурирани, Нефактурирани, Всички)
- Търсене по регистрационен номер на превозното средство (VRN)
- Филтриране по група карти
- Сортиране на транзакциите по няколко критерия
- Изберете конкретни полета, за да оптимизирате размера на отговора
Често срещани случаи на употреба
В тази секция често срещаните бизнес сценарии са съпоставени с моделите на използване на API, за да ви помогнат бързо да определите как да използвате API за вашите конкретни нужди.
Сценарий на употреба 1: Ежедневно съгласуване на транзакциите за пътни такси
Сценарий: Трябва ежедневно да съгласувате всички транзакции за пътни такси от вашия автопарк за счетоводни цели.
Препоръчително API: /toll-data/v1/transactions/search
Защо този API: Този ендпойнт предоставя изчерпателни подробности за транзакциите за пътни такси с гъвкаво филтриране по дата, поддържа както фактурирани, така и нефактурирани транзакции и включва пагинация за големи масиви от данни. Идеален за ежедневни работни процеси по съгласуване.
Ключови параметри:
FromDateиToDate– Задайте вчерашната дата за ежедневно съгласуванеТърсене.InvoiceStatus- Използвайте „Всички“, за да включите както фактурираните, така и нефактурираните транзакцииРазмер на страницата– Задайте стойност 100 за ефективно извличане на данниФилтър- Използвайте „Всички“, за да получите пълни подробности за транзакциите
Пример за употреба 2: Проверка и потвърждаване на фактури
Сценарий: Получили сте фактура и трябва да проверите всички подробности и такси за транзакциите за пътни такси.
Препоръчително API: /toll-data/v1/transactions/search
Защо този API: API-то предоставя подробна информация за транзакциите за пътни такси, включително номера на фактури, дати, суми и подробности за мрежата за пътни такси. Идеално е за валидиране на фактури, тъй като съответства на структурата на фактурата.
Ключови параметри:
Search.InvoiceStatus- Задайте стойност „Invoiced“, за да извлечете само фактурираните транзакцииFromDateиToDate– Задайте датите на фактурирания периодFilter- Посочете полета като „InvoiceNumber, InvoiceDate, TransactionGrossAmount“ за целенасочена валидация
Пример за употреба 3: Анализ на използването на пътни такси за превозните средства от автопарка
Сценарий: Трябва да анализирате моделите на използване на пътни такси за конкретни превозни средства от автопарка си, за да оптимизирате маршрутите и да намалите разходите за пътни такси.
Препоръчително API: /toll-data/v1/transactions/search
Защо този API: API-то позволява филтриране по регистрационен номер на превозното средство (VRN) и предоставя подробна информация за маршрута, включително входни/изходни точки, изминато разстояние и такси за ползване на пътищата. Идеален за анализ на ниво превозно средство.
Ключови параметри:
Search.VehicleRegistrationNumber– Посочете VRN за анализFromDateиToDate- Задайте период за анализ (например последните 30 дни)SortOption- Използвайте 1 (Дата на транзакцията по възходящ ред) за хронологичен анализFilter- Включете полета като "RouteDescription, DistanceDriven, TollGateEntry, TollGateExit, TransactionGrossAmount“
Пример за употреба 4: Проследяване на разходите по групи карти
Сценарий: Управлявате няколко групи карти и трябва да проследявате разходите за пътни такси по групи карти с цел разпределение на бюджета и отчитане на разходните центрове.
Препоръчително API: /toll-data/v1/transactions/search
Защо този API: API-то поддържа филтриране по група карти и включва информация за разходните центрове, което го прави идеално за проследяване на разходите и отчитане на ниво група карти.
Ключови параметри:
Search.CardGroup– Посочете името на групата карти или използвайте „Всички“ за всички групиFromDateиToDate– Задайте отчетния периодФилтър– Включете „CardGroupName, CostCenter, TransactionGrossAmount, TransactionNetAmount, TransactionTax“Опция за сортиране– Използвайте 3 (Сума на транзакцията по възходящ ред) за анализ на разходите
Пример за употреба 5: Отчети за пътни такси за няколко сметки
Сценарий: Управлявате няколко сметки и трябва да генерирате консолидирани отчети за пътни такси за всички сметки.
Препоръчително API: /toll-data/v1/transactions/search
Защо този API: API-то поддържа търсене в няколко сметки (препоръчват се 2–5) в едно-единствено заявка, което намалява броя на API-извикванията и подобрява производителността при сценарии с няколко сметки.
Ключови параметри:
AccountNumber- Посочете номера на акаунти, разделени със запетая (максимум 2–5 за оптимална производителност)FromDateиToDate– Задайте ги според отчетния периодPageSize- Използвайте по-големи размери на страниците (например, 100–500) за по-добра производителност
Пример за употреба 6: Наблюдение на транзакции без фактура
Сценарий: Искате да наблюдавате транзакции за пътни такси без фактура, за да прогнозирате предстоящи фактури и да управлявате паричния поток.
Препоръчително API: /toll-data/v1/transactions/search
Защо това API: API-то позволява филтриране по статус на фактурата, което улеснява идентифицирането на транзакции без фактура и оценката на предстоящите такси.
Ключови параметри:
Search.InvoiceStatus- Задайте „Uninvoiced“ за предстоящи таксиFromDateиToDate- Задайте текущия отчетен периодФилтър- Включете „TransactionDate, TransactionGrossAmount, AccountNumber, VehicleRegistration“
Пример за употреба 7: Анализ на използването на мрежата за пътни такси
Сценарий: Трябва да анализирате кои мрежи за пътни такси и оператори вашият автопарк използва най-често, за да договорите по-изгодни тарифи или да оптимизирате маршрутите.
Препоръчително API: /toll-data/v1/transactions/search
Защо този API: API-то предоставя подробна информация за мрежите с пътни такси, включително описание на мрежата, оператор на пътните такси, код на събирача на таксите и код на мрежата, което го прави идеален за анализ на използването на мрежите.
Ключови параметри:
FromDateиToDate- Задайте периода на анализ (например тримесечен)Филтър- Включете "NetworkDescription, TollOperator, TollChargerCode, Network, TransactionGrossAmount"Размер на страницата- Използвайте по-голям размер на страницата за изчерпателно извличане на данни
Примери за употреба
Пример 1: Търсене на транзакции за пътни такси по сметка и период
Заявка:
POST /toll-data/v1/transactions/search
{
"Filters": {
"ColCoCode": 86,
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"Filter": "All",
"FromDate": "2026-01-01",
"ToDate": "2026-01-31"
},
"Page": 1,
"PageSize": 10
}Отговор:
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 150,
"TotalPages": 15,
"PageSize": 10,
"Data": [
{
"NetworkDescription": "Societa Autostradali",
"TollChargerCode": "410|610",
"DelcoCode": "714",
"DelcoName": "Shell Fleet Solutions Consorzio",
"NetworkCode": "TLI",
"Network": "euroShell Consortio",
"Страна на покупка": "Италия",
"Код на страната на покупка": "IT",
"Номер на картата": "707737*******334272",
"Идентификационен номер на картата": 123456789,
"CardGroupName": "Shell Fleet Solutions Consorzio",
"VehicleRegistration": "KN 00000",
"CostCenter": "100",
"SystemEntryDate": "20260123",
"SystemEntryTime": "13:14:25",
"TransactionDate": "20260120",
"TransactionTime": "10:30:00",
"PostingDate": "20260123",
"PostingTime": "00:00:00",
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"AccountName": "Име на тестова сметка",
"StartDate": "20260120",
"StartTime": "06:47:41",
"EndDate": "20260120",
"EndTime": "07:30:15",
"TollGateEntry": "ROMA NORD",
"TollGateExit": "BRENNERO",
"DistanceDriven": "71.6",
"RouteDescription": "ROMA NORD - BRENNERO",
"TransactionType": "Пътен данък",
"Код на продукта": "14",
"Описание на продукта": "Пътен такс",
"Нетна сума на транзакцията": "127,1",
"Данък върху транзакцията": "0,0",
"Брутна сума на транзакцията": "127,1",
"Код на валутата на транзакцията": "EUR",
"Статус на транзакцията": "Отчитане",
"Номер на фактурата": "8600397548",
"Дата на фактурата": "20260125",
„Статус на фактурата“: „Фактурирано“,
„Начин на плащане“: „Плащане след доставка“,
„Сериен номер на ОВ“: „00049000000836932426“,
"EmissionClass": "Euro 6",
"ContractID": "fb75eb53-46eb-450b-862e-6045002c3fa8",
"ShellTransactionID": "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
"TollOperator": "Toll4Europe",
"TollDomain": "Toll4Europe",
"TariffRelevantInformation": "Клас на превозното средство: 2, Брой оси: 2, Категория на пътя: Магистрала",
"AdditionalTransactionInfo": "Местоположение: 1",
"TCInvoiceNumber": "12343343",
"TCInvoiceDate": "20260123"
}
]
}Пример 2: Филтриране на транзакции по регистрационен номер на превозното средство (VRN)
Заявка:
POST /toll-data/v1/transactions/search
{
"Filters": {
"ColCoCode": 86,
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"Filter": "VehicleRegistration, RouteDescription, TransactionGrossAmount, TransactionDate",
"FromDate": "2026-01-01",
"ToDate": "2026-03-31",
"Search": {
"VehicleRegistrationNumber": "KN 00000",
"InvoiceStatus": "All"
}
},
"Page": 1,
"PageSize": 50
}Отговор:
{
"RequestId": "9d2dee33-7803-485a-a2b1-2c7538e597ee",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 45,
"TotalPages": 1,
"PageSize": 50,
"Data": [
{
"VehicleRegistration": "KN 00000",
"Описание на маршрута": "ROMA NORD - BRENNERO",
"Брутна сума на транзакцията": "127.1",
"Дата на транзакцията": "20260120"
},
{
"VehicleRegistration": "KN 00000",
"RouteDescription": "MILANO EST - VERONA SUD",
"TransactionGrossAmount": "85.4",
"TransactionDate": "20260125"
}
]
}Пример 3: Търсене по група карти
Заявка:
POST /toll-data/v1/transactions/search
{
"Filters": {
"ColCoCode": 86,
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"Filter": "CardGroupName, VehicleRegistration, TransactionGrossAmount, TransactionDate",
"FromDate": "2026-01-01",
"ToDate": "2026-01-31",
"Search": {
"CardGroup": "Shell Fleet Solutions Consorzio",
"InvoiceStatus": "All"
}
},
"Page": 1,
"PageSize": 30
}Отговор:
{
"RequestId": "5f1bded6-416d-4478-ab7f-33905d7b5d4b",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 87,
"TotalPages": 3,
"Размер на страницата": 30,
"Данни": [
{
"Име на групата на картите": "Shell Fleet Solutions Consorzio",
"Регистрационен номер на превозното средство": "KN 00000",
"TransactionGrossAmount": "127.1",
"TransactionDate": "20260120"
},
{
"CardGroupName": "Shell Fleet Solutions Consorzio",
"VehicleRegistration": "LM 11111",
"TransactionGrossAmount": "95.8",
"TransactionDate": "20260122"
}
]
}Пример 4: Няколко сметки с конкретни полета
Заявка:
POST /toll-data/v1/transactions/search
{
"Filters": {
"ColCoCode": 86,
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701, NL20027702",
"Filter": "AccountNumber, AccountName, TransactionDate, TransactionGrossAmount, VehicleRegistration",
"FromDate": "2026-01-01",
"ToDate": "2026-01-31"
},
"Page": 1,
"PageSize": 100
}Отговор:
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 245,
"TotalPages": 3,
"PageSize": 100,
"Data": [
{
"AccountNumber": "NL20027701",
"AccountName": "Име на тестова сметка",
"TransactionDate": "20260120",
"TransactionGrossAmount": "127.1",
"VehicleRegistration": "KN 00000"
},
{
"AccountNumber": "NL20027702",
"AccountName": "Име на втора сметка",
"TransactionDate": "20260121",
"TransactionGrossAmount": "98.5",
"VehicleRegistration": "PQ 22222"
}
]
}Обработка на грешки
Често срещани кодове за грешки
| HTTP статус | Код на грешката | Описание | Решение |
|---|---|---|---|
| 200 | Н/Д | Статус: УСПЕХ | Н/Д |
| 400 | E0001 | Грешка при валидиране | Проверете параметрите на заявката, уверете се, че задължителните полета са попълнени и са валидни |
| 401 | E0003 | Няма разрешение | Уверете се, че OAuth токенът е валиден и не е изтекъл |
| 404 | E0005 | Не е намерено | Уверете се, че URL адресът на крайната точка и ресурсът съществуват |
| 500 | E0002 | Неизвестна грешка / Вътрешна грешка на сървъра | Свържете се с отдела за поддръжка, като посочите RequestId |
| 503 | E0012 | Услугата е недостъпна / Грешка в свързаността | Опитайте отново след известно време; ако проблемът продължава, свържете се с поддръжката |
Пример за отговор при грешка
Грешка при валидиране (E0001):
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "FAILED",
"Errors": [
{
"Code": "E0001",
"Title": "Грешка при валидиране",
"Detail": "Липсващи / невалидни стойности за: ColCoCode",
"AdditionalInfo": null
}
]
}Грешка за липса на разрешение (E0003):
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "FAILED",
"Errors": [
{
"Code": "E0003",
"Title": "Липса на разрешение",
"Detail": "Предоставените идентификационни данни са невалидни или потребителят няма достъп до операцията",
"AdditionalInfo": null
}
]
}Най-добри практики
1. Използвайте удостоверяване по OAuth 2.0
ВАЖНО: Винаги използвайте удостоверяване по OAuth 2.0. Прилагайте подходящо управление на токените:
- Съхранявайте токените за достъп в кеш и ги използвайте повторно до изтичане на валидността им
- Обновете токените преди изтичането на валидността им (препоръчително 60 секунди преди това)
- Съхранявайте клиентските идентификационни данни по сигурен начин (използвайте променливи на средата или мениджър на тайни)
- Никога не записвайте и не разкривайте токени за достъп в кода на клиентската
2. Винаги включвайте RequestId
Винаги включвайте уникален RequestId (в UUID формат) в заглавката за проследяемост от край-до-край. Това е от решаващо значение за отстраняването на проблеми и поддръжката.
3. Внедрете обработка на грешки
Внедрете надеждна обработка на грешки:
- Проверявайте полето „Status“ във всеки отговор
- Записвайте RequestId за отстраняване на проблеми
- Внедрете логика за повторен опит при временни грешки (503)
- Обработка на грешки при валидиране (E0001) чрез проверка на входните параметри
Поддръжка и ресурси
Техническа поддръжка
- Поддръжка: Техническа поддръжка на Shell
- Имейл: api@shell.com
Документация
Получаване на помощ
Когато се свързвате с отдела за поддръжка, посочете:
- Вашия client_id (никога не споделяйте client_secret или токените за достъп)
- RequestId от отговора на API-то
- Времева марка на заявката
- Среда (Производствена/Тестова)
- Получени кодове за грешки и съобщения
Последно актуализирано: 4 август 2026 г.
Версия на документа: 1.0
Версия на API: 1.0.0
