API Shell B2B Mobility pentru date privind tranzacțiile de taxare rutieră – Ghid de pornire rapidă
Versiunea API: 1.0.0 | Autentificare: OAuth 2.0 | Stare: Producție
Prezentare generală
API-ul Shell B2B Mobility pentru date privind tranzacțiile de taxare rutieră este un API bazat pe REST care oferă acces complet la înregistrările tranzacțiilor de taxare rutieră și la datele conexe pentru clienții Shell Mobility. Acest API permite dezvoltatorilor să preia, să filtreze, și să analizeze datele privind tranzacțiile de taxare rutieră prin intermediul programelor, în scopul reconcilierii conturilor, verificării facturării, gestionării cheltuielilor și respectării cerințelor de conformitate.
Caracteristici cheie
- Preluarea datelor privind tranzacțiile de taxare rutieră după numărul de cont
- Filtrarea tranzacțiilor după interval de date (date de început și de sfârșit)
- Căutare după starea facturii și VRN (numărul de înmatriculare al vehiculului)
- Funcții avansate de sortare pe mai multe câmpuri
- Suport pentru paginare în cazul seturilor mari de date
- Filtrare flexibilă pe câmpuri pentru optimizarea volumului de date al răspunsului
- Detalii complete privind taxele de drum, inclusiv punctele de intrare/ieșire
- Suport pentru mai multe rețele și operatori de taxare
Autentificare
OAuth 2.0 (metodă standard de autentificare)
API-ul Shell pentru date privind tranzacțiile de taxare rutieră utilizează fluxul de acreditări ale clientului OAuth 2.0 pentru autentificare securizată.
Fluxul OAuth 2.0
Pasul 1: Obținerea tokenului de acces
Solicitați un token de acces de la punctul final al tokenului OAuth:
POST /oauth/token Content-Type: application/x-www-form-urlencoded grant_type=client_credentials&client_id=your-client-id&client_secret=secretul-tău-de-client
Pasul 2: Utilizează tokenul de acces în solicitările API
Authorization: Bearer Content-Type: application/json RequestId: eb621f45-a543-4d9a-a934-2f223b263c42
Gestionarea tokenurilor
Cele mai bune practici de gestionare a tokenurilor:
- Tokenurile de acces au o durată de viață limitată (de obicei 15 minute)
- Implementați stocarea în cache a tokenurilor pentru a evita solicitările inutile de tokenuri
- Reîmprospătați tokenurile înainte de expirare pentru a asigura un serviciu neîntrerupt
- Nu partajați niciodată client_secret-ul și nu îl încorporați în codul de pe partea clientului
Mediile de execuție
API-ul este disponibil în două medii de execuție:
| Mediu | URL de bază | Scop |
|---|---|---|
| Producție | https://api.shell.com/toll-data/v1 | Mediu de producție live |
| Testare (UAT) | https://api-test.shell.com/toll-data/v1 | Mediu de testare și dezvoltare |
URL-uri pentru tokenuri OAuth:
| Mediu | URL token |
|---|---|
| Producție | https://api.shell.com/v2/oauth/token |
| Test (UAT) | https://api-test.shell.com/v2/oauth/token |
Sfat: Testați întotdeauna integrarea în mediul de testare înainte de a trece la producție.
Începere rapidă
1. Obțineți datele de autentificare OAuth
- Contactați Suportul tehnic Shell
- Solicitați datele de autentificare OAuth 2.0 (client_id și client_secret)
- Consultați termenii de utilizare
2. Obțineți un token de acces
Mai întâi, obțineți tokenul de acces OAuth:
Exemplu 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=ID-ul-tău-de-client&client_secret=secretul-tău-de-client"
Răspuns:
{
"access_token": "eyJhbGciOi*******5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 899
}3. Efectuați prima solicitare API
Exemplu: Căutarea tranzacțiilor de taxare
Exemplu 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
}'Răspuns de exemplu:
{
"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",
„Rețea”: „euroShell Consortio”,
„Țară de achiziție”: „Italia”,
„Cod țară de achiziție”: „IT”,
„Număr card”: „707737*******334272”,
„CardId”: 123456789,
„CardGroupName”: „Shell Fleet Solutions Consorzio”,
„VehicleRegistration”: „KN 00000”,
"Centru de cost": "100",
"Data introducerii în sistem": "20260123",
"Ora introducerii în sistem": "13:14:25",
"Data tranzacției": "20260120",
"Ora tranzacției": "10:30:00",
"Data înregistrării": "20260123",
"Ora înregistrării contabile": "00:00:00",
"Numărul plătitorului": "NL20016398",
"Numărul contului": "NL20027701",
"NumeleContului": "Numele contului de test",
"DataÎnceperii": "20260120",
"OraÎnceperii": "06:47:41",
"DataÎncheierii": "20260120",
"Ora de încheiere": "07:30:15",
"Intrare la punctul de taxare": "ROMA NORD",
"Ieșire la punctul de taxare": "BRENNERO",
"DistanceDriven": "71,6",
"RouteDescription": "ROMA NORD - BRENNERO",
"TransactionType": "Taxă rutieră",
"ProductCode": "14",
"ProductDescription": "Taxă rutieră",
"Suma netă a tranzacției": "127,1",
"Taxa tranzacției": "0,0",
"SumaBrutăTranzacție": "127,1",
"CodMonedăTranzacție": "EUR",
"StareTranzacție": "Raportare",
"NumărFactură": "8600397548”,
„Data facturii”: „20260125”,
„Starea facturii”: „Facturată”,
„Metoda de plată”: „Plată ulterioară”,
„Număr de serie OBU”: "00049000000836932426",
"EmissionClass": "Euro 6",
"ContractID": "fb75eb53-46eb-450b-862e-6045002c3fa8",
"ShellTransactionID": "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
"TollOperator": "Toll4Europe",
"TollDomain": "Toll4Europe",
"TariffRelevantInformation": "Clasa vehiculului: 2, Număr de axe: 2, Categoria drumului: Autostradă",
"AdditionalTransactionInfo": "Locație: 1",
"TCInvoiceNumber": "12343343",
"TCInvoiceDate": "20260123"
}
]
}Referință puncte finale API
Tranzacții de taxare
| Punct final | Metodă | Descriere |
|---|---|---|
| /toll-data/v1/transactions/search | POST | Recuperează datele tranzacțiilor de taxare cu filtrare și paginare flexibile |
Cazuri de utilizare comune:
- Recuperarea tranzacțiilor de taxare pe interval de date
- Filtrare după starea facturii (Facturate, Nefacturate, Toate)
- Căutare după numărul de înmatriculare al vehiculului (VRN)
- Filtrare după grupul de carduri
- Sortare tranzacții după mai multe criterii
- Selectați câmpuri specifice pentru a optimiza dimensiunea răspunsului
Cazuri de utilizare frecvente
Această secțiune corelează scenarii de afaceri frecvente cu modele de utilizare a API-ului, pentru a vă ajuta să identificați rapid modul în care puteți utiliza API-ul în funcție de nevoile dvs. specifice.
Caz de utilizare 1: Reconcilierea zilnică a tranzacțiilor de taxare rutieră
Scenariu: Trebuie să reconciliați zilnic toate tranzacțiile de taxare ale flotei dvs. în scopuri contabile.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: Acest punct de acces oferă detalii complete privind tranzacțiile de taxare rutieră, cu filtrare flexibilă după dată, acceptă atât tranzacțiile facturate, cât și cele nefacturate și include paginare pentru seturi mari de date. Este perfect pentru fluxurile de lucru de reconciliere zilnică.
Parametri cheie:
FromDateșiToDate- Setați la data de ieri pentru reconcilierea zilnicăSearch.InvoiceStatus- Utilizați „Toate” pentru a include atât tranzacțiile facturate, cât și cele nefacturatePageSize- Setați la 100 pentru o recuperare eficientă a datelorFiltru- Utilizați „Toate” pentru a obține detaliile complete ale tranzacției
Caz de utilizare 2: Validarea și verificarea facturilor
Scenariu: Ați primit o factură și trebuie să verificați toate detaliile tranzacțiilor de taxare rutieră și costurile aferente.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: API-ul oferă informații detaliate despre tranzacțiile de taxare rutieră, inclusiv numere de factură, date, sume, precum și detalii despre rețeaua de taxare. Este ideal pentru validarea facturilor, deoarece se potrivește cu structura facturii.
Parametri cheie:
Search.InvoiceStatus– Setați la „Invoiced” pentru a prelua numai tranzacțiile facturateFromDateșiToDate- Setați la datele perioadei de facturareFiltru- Specificați câmpuri precum „InvoiceNumber, InvoiceDate, TransactionGrossAmount” pentru o validare specifică
Caz de utilizare 3: Analiza utilizării taxelor de drum de către vehiculele din flotă
Scenariu: Trebuie să analizați modelele de utilizare a taxelor de drum pentru anumite vehicule din flota dvs. pentru a optimiza rutele și a reduce costurile cu taxele de drum.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: API-ul permite filtrarea după numărul de înmatriculare al vehiculului (VRN) și oferă informații detaliate despre traseu, inclusiv punctele de intrare/ieșire, distanța parcursă și taxele de drum. Perfect pentru analiza la nivel de vehicul.
Parametri cheie:
Search.VehicleRegistrationNumber– Specificați VRN-ul de analizatFromDateșiToDate– Setați perioada de analiză (de ex., ultimele 30 de zile)SortOption- Utilizați 1 (Data tranzacției în ordine crescătoare) pentru analiza cronologicăFiltru- Includeți câmpuri precum „RouteDescription, DistanceDriven, TollGateEntry, TollGateExit, TransactionGrossAmount”
Caz de utilizare 4: Urmărirea cheltuielilor pe grupuri de carduri
Scenariu: Gestionați mai multe grupuri de carduri și trebuie să urmăriți cheltuielile cu taxele de drum pe grup de carduri pentru alocarea bugetului și raportarea centrelor de cost.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: API-ul acceptă filtrarea pe grup de carduri și include informații despre centrele de cost, fiind astfel ideal pentru urmărirea cheltuielilor și raportarea la nivel de grup de carduri.
Parametri cheie:
Search.CardGroup- Specificați numele grupului de carduri sau utilizați „All” pentru toate grupurileFromDateșiToDate- Setați perioada de raportareFiltru- Includeți „CardGroupName, CostCenter, TransactionGrossAmount, TransactionNetAmount, TransactionTax”Opțiune de sortare- Utilizați 3 (Suma tranzacției în ordine crescătoare) pentru analiza cheltuielilor
Caz de utilizare 5: Raportare multi-Conturi de taxare
Scenariu: Gestionați mai multe conturi și trebuie să generați rapoarte consolidate privind taxele pentru toate conturile.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: API-ul permite interogarea mai multor conturi (se recomandă 2-5) într-o singură solicitare, reducând numărul de apeluri API și îmbunătățind performanța în scenariile cu mai multe conturi.
Parametri cheie:
AccountNumber- Furnizați numere de cont separate prin virgulă (maxim 2-5 pentru performanță optimă)FromDateșiToDate- Setați perioada de raportarePageSize- Utilizați dimensiuni mai mari ale paginii (de exemplu, 100-500) pentru o performanță mai bună
Caz de utilizare 6: Monitorizarea tranzacțiilor nefacturate
Scenariu: Doriți să monitorizați tranzacțiile de taxare nefacturate pentru a prognoza facturile viitoare și a gestiona fluxul de numerar.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: API-ul permite filtrarea în funcție de starea facturii, facilitând identificarea tranzacțiilor nefacturate și estimarea taxelor viitoare.
Parametri cheie:
Search.InvoiceStatus- Setați la „Nefacturat” pentru taxele în așteptareFromDateșiToDate- Setați la perioada de facturare curentăFiltru- Includeți „TransactionDate, TransactionGrossAmount, AccountNumber, VehicleRegistration”
Caz de utilizare 7: Analiza utilizării rețelelor cu taxă de drum
Scenariu: Trebuie să analizați care sunt rețelele cu taxă de drum și operatorii pe care flota dvs. îi utilizează cel mai frecvent pentru a negocia tarife mai bune sau pentru a optimiza rutele.
API recomandat: /toll-data/v1/transactions/search
De ce acest API: API-ul oferă informații detaliate despre rețelele cu taxă de drum, inclusiv descrierea rețelei, operatorul de taxare, codul de taxare și codul rețelei, fiind perfect pentru analiza utilizării rețelei.
Parametri cheie:
FromDateșiToDate- Setați la perioada de analiză (de exemplu, trimestrial)Filtru- Includeți „NetworkDescription, TollOperator, TollChargerCode, Network, TransactionGrossAmount”PageSize- Utilizați o dimensiune mai mare a paginii pentru extragerea completă a datelor
Exemple de utilizare
Exemplul 1: Căutarea tranzacțiilor de taxare în funcție de cont și interval de date
Solicitare:
POST /toll-data/v1/transactions/search
{
"Filters": {
"ColCoCode": 86,
"PayerNumber": "NL20016398",
"AccountNumber": "NL20027701",
"Filter": "All",
"FromDate": "2026-01-01",
"ToDate": "2026-01-31"
},
"Pagină": 1,
"Dimensiune pagină": 10
}Răspuns:
{
"ID cerere": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Stare": "SUCCES",
"Pagină": 1,
"Total înregistrări": 150,
"Total pagini": 15,
"Dimensiune pagină": 10,
"Date": [
{
"NetworkDescription": "Societa Autostradali",
"TollChargerCode": "410|610",
"DelcoCode": "714",
"DelcoName": "Shell Fleet Solutions Consorzio",
"NetworkCode": "TLI",
"Network": "euroShell Consortio",
„PurchasedInCountry”: „Italia”,
„PurchasedInCountryCode”: „IT”,
„CardNumber”: „707737*******334272”,
„CardId”: 123456789,
"CardGroupName": "Shell Fleet Solutions Consorzio",
"VehicleRegistration": "KN 00000",
"CostCenter": "100",
"SystemEntryDate": "20260123",
"Ora introducerii în sistem": "13:14:25",
"Data tranzacției": "20260120",
"Ora tranzacției": "10:30:00",
„Data înregistrării”: „20260123”,
„Ora înregistrării”: „00:00:00”,
„Numărul plătitorului”: „NL20016398”,
"AccountNumber": "NL20027701",
"AccountName": "Numele contului de test",
"StartDate": "20260120",
"StartTime": "06:47:41",
"Data de încheiere": "20260120",
"Ora de încheiere": "07:30:15",
"TollGateEntry": "ROMA NORD",
"TollGateExit": "BRENNERO",
"DistanceDriven": "71,6",
"DescriereTraseu": "ROMA NORD - BRENNERO",
"TipTranzacție": "Taxă rutieră",
"CodProdus": "14",
"DescriereProdus": "Taxă rutieră",
"Suma netă a tranzacției": "127,1",
"Taxa tranzacției": "0,0",
"Suma brută a tranzacției": "127,1",
"Codul monedei tranzacției": "EUR",
"Starea tranzacției": "Raportare",
"Număr factură": "8600397548",
"Data facturii": "20260125",
"Starea facturii": "Facturată",
"Metoda de plată": "Plată ulterioară",
"Număr de serie OBU": "00049000000836932426",
"Clasă de emisii": "Euro 6",
"ID contract": "fb75eb53-46eb-450b-862e-6045002c3fa8",
"ShellTransactionID": "04176c5c-e7b2-49c8-bcb3-23d07ba583f2",
"TollOperator": "Toll4Europe",
"TollDomain": "Toll4Europe",
„TariffRelevantInformation”: „Clasa vehiculului: 2, Număr de axe: 2, Categoria drumului: Autostradă”,
„AdditionalTransactionInfo”: „Locație: 1”,
"TCInvoiceNumber": "12343343",
"TCInvoiceDate": "20260123"
}
]
}Exemplul 2: Filtrarea tranzacțiilor după numărul de înmatriculare al vehiculului (VRN)
Solicitare:
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",
"Căutare": {
"Număr de înmatriculare": "KN 00000",
"Stare factură": "Toate"
}
},
"Pagină": 1,
"PageSize": 50
}Răspuns:
{
"RequestId": "9d2dee33-7803-485a-a2b1-2c7538e597ee",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 45,
"TotalPages": 1,
"PageSize": 50,
"Data": [
{
"VehicleRegistration": "KN 00000",
"RouteDescription": "ROMA NORD - BRENNERO",
"TransactionGrossAmount": "127,1",
„Data tranzacției”: „20260120”
},
{
„Număr de înmatriculare”: „KN 00000”,
„Descrierea traseului”: „MILANO EST - VERONA SUD”,
"SumaBrutăTranzacție": "85,4",
"DataTranzacției": "20260125"
}
]
}Exemplul 3: Căutare după grup de carduri
Solicitare:
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
}Răspuns:
{
"RequestId": "5f1bded6-416d-4478-ab7f-33905d7b5d4b",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 87,
"TotalPages": 3,
"PageSize": 30,
"Data": [
{
"CardGroupName": "Shell Fleet Solutions Consorzio",
"VehicleRegistration": "KN 00000",
"SumaBrutăTranzacție": "127,1",
"DataTranzacției": "20260120"
},
{
"NumeleGrupuluiDeCarduri": "Shell Fleet Solutions Consorzio",
"VehicleRegistration": "LM 11111",
"TransactionGrossAmount": "95,8",
"TransactionDate": "20260122"
}
]
}Exemplul 4: Conturi multiple cu câmpuri specifice
Solicitare:
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
}Răspuns:
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "SUCCESS",
"Page": 1,
"TotalRecords": 245,
"TotalPages": 3,
"PageSize": 100,
"Data": [
{
"AccountNumber": "NL20027701",
"NumeleContului": "Numele contului de test",
"DataTranzacției": "20260120",
"SumaBrutăATranzacției": "127,1",
"NumărDeÎnmatriculareVehicul": "KN 00000"
},
{
„AccountNumber”: „NL20027702”,
„AccountName”: „Numele celui de-al doilea cont”,
„TransactionDate”: „20260121”,
„TransactionGrossAmount”: „98,5”,
„VehicleRegistration”: „PQ 22222”
}
]
}Gestionarea erorilor
Coduri de eroare comune
| Stare HTTP | Cod de eroare | Descriere | Soluție |
|---|---|---|---|
| 200 | N/A | Stare: SUCCES | N/A |
| 400 | E0001 | Eroare de validare | Verificați parametrii cererii, asigurați-vă că câmpurile obligatorii sunt completate și valide |
| 401 | E0003 | Neautorizat | Verificați dacă tokenul OAuth este valid și nu a expirat |
| 404 | E0005 | Nu s-a găsit | Verificați dacă URL-ul punctului de capăt și resursa există |
| 500 | E0002 | Eroare necunoscută / Eroare internă a serverului | Contactați serviciul de asistență cu ID-ul cererii |
| 503 | E0012 | Serviciu indisponibil / Eroare de conectivitate | Încercați din nou după un timp; dacă problema persistă, contactați serviciul de asistență |
Exemplu de răspuns de eroare
Eroare de validare (E0001):
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "FAILED",
"Errors": [
{
"Code": "E0001",
"Title": "Eroare de validare",
"Detail": "Valori lipsă/nevalide pentru: ColCoCode",
"AdditionalInfo": null
}
]
}Eroare de neautorizare (E0003):
{
"RequestId": "eb621f45-a543-4d9a-a934-2f223b263c42",
"Status": "FAILED",
"Errors": [
{
"Code": "E0003",
"Title": "Neautorizat",
"Detail": "Datele de autentificare furnizate sunt nevalide sau utilizatorul nu are acces la operațiune",
"AdditionalInfo": null
}
]
}Cele mai bune practici
1. Utilizați autentificarea OAuth 2.0
IMPORTANT: Utilizați întotdeauna autentificarea OAuth 2.0. Implementați o gestionare corespunzătoare a tokenurilor:
- Stocați în cache tokenurile de acces și reutilizați-le până la expirare
- Reîmprospătați tokenurile înainte de expirare (se recomandă cu 60 de secunde înainte)
- Stocați datele de autentificare ale clientului în siguranță (utilizați variabile de mediu sau un manager de secrete)
- Nu înregistrați și nu expuneți niciodată tokenurile de acces în codul de pe partea clientului
2. Includeți întotdeauna un RequestId
Includeți întotdeauna un RequestId unic (în format UUID) în antet pentru trasabilitate de la un capăt la altul. Acest lucru este esențial pentru depanare și asistență.
3. Implementați gestionarea erorilor
Implementați o gestionare robustă a erorilor:
- Verificați câmpul Status în fiecare răspuns
- Înregistrați RequestId pentru depanare
- Implementați logica de reîncercare pentru erorile tranzitorii (503)
- Gestionați erorile de validare (E0001) verificând parametrii de intrare
Asistență și resurse
Asistență tehnică
- Asistență: Asistență tehnică Shell
- E-mail: api@shell.com
Documentație
Asistență
Când contactați serviciul de asistență, furnizați:
- ID-ul dvs. de client (nu divulgați niciodată secretul de client sau tokenurile de acces)
- ID-ul cererii din răspunsul API-ului
- Marca temporală a cererii
- Mediu (Producție/Testare)
- Coduri de eroare și mesaje primite
Ultima actualizare: 4 august 2026
Versiunea documentului: 1.0
Versiunea API: 1.0.0
