Skip to main content
HjemBloggLeveringsstatus for Shipping API: statuskoder, webhooks og varsler om avvik

Leveringsstatus for Shipping API: statuskoder, webhooks og varsler om avvik

17TRACK

En leveringsstatus fra et frakt-API beskriver en pakkes fremdrift, ikke om en API-forespørsel var vellykket. For å bygge pålitelig sporing bør du holde HTTP-svarkoder atskilt fra forsendelsesstatuser, behandle webhooks uten å anta at de kommer én gang eller i riktig rekkefølge, og gjøre handlingsrettede unntak om til varsler med tydelig ansvar. For team innen utvikling og netthandel er målet en forsendelsespost som forblir pålitelig når transportøroppdateringer er forsinket, duplisert eller korrigert.

Shipping API Delivery Status Status Codes Webhooks and Exception Alerts

Denne veiledningen forklarer hvordan du strukturerer denne posten, håndterer innkommende sporingshendelser og skiller et leveringsproblem fra et problem med sporingsintegrasjonen.

Skill mellom HTTP-koder, API-resultater og forsendelsesstatuser

Uttrykket «statuskode» kan vise til tre forskjellige lag. Hvis de blandes sammen, oppstår misvisende dashbord og unødvendige kundemeldinger.

LagHva det forteller degEksempel på tolkning
HTTP-svarResultatet av HTTP-forespørselenEt 200-svar viser suksess på HTTP-nivå; det betyr ikke at pakken er levert.
API-forretningsresultatOm den forespurte operasjonen lyktes i henhold til leverandørens applikasjonsreglerSvarteksten kan opplyse at en sporingsregistrering ble avvist, også i et vellykket HTTP-svar dersom API-et er utformet slik.
ForsendelsesstatusDen rapporterte fysiske eller operative tilstanden til pakkenUnder transport, venter på henting eller levert.

Standarden for HTTP-semantikk definerer betydningen av HTTP-svar. For eksempel betyr 202 Accepted at en forespørsel er akseptert for behandling, men behandlingen er ikke nødvendigvis ferdig. Det er ikke et bevis på at en transportør har akseptert en pakke.

På samme måte beviser ikke en mislykket sporingsforespørsel at en forsendelse har sluttet å bevege seg. Applikasjonen din kan midlertidig miste innsyn mens den fysiske leveringen fortsetter normalt. Overvåk disse lagene uavhengig av hverandre.

Opprett en statusmodell uten å forkaste transportørdetaljer

Det finnes ingen universell numerisk kode for leveringsstatus som deles av alle frakt-API-er og transportører. En verdi fra én integrasjon bør ikke tolkes ved hjelp av en annen leverandørs mapping. Bruk dokumentasjonen for den spesifikke API-versjonen du implementerer.

En praktisk intern modell kombinerer et lite sett normaliserte statuser med den opprinnelige transportørhendelsen. Normalisering gir konsekvent rapportering, mens den opprinnelige hendelsen bevarer detaljene som trengs for undersøkelser.

Illustrerende intern statusBetydningOperativ forsiktighet
Informasjon mottattElektronisk forsendelsesinformasjon finnes.Ikke betrakt opprettelse av en etikett som bekreftet fysisk overlevering.
Under transportSporingsposten viser bevegelse gjennom leveringsnettverket.Denne brede kategorien kan omfatte ulike transportstadier.
Ute til leveringPakken er rapportert å være på en leveringsrute.Ikke gjør dette om til en ubetinget leveringsgaranti.
Venter på hentingMottakeren forventes å hente pakken.Ta bare med henteinstruksjoner eller frister når kilden støtter dem.
LevertSporingskilden rapporterer levering.En leveringsskanning løser ikke i seg selv kundens påstand om manglende mottak.
UnntakEn hendelse kan kreve oppmerksomhet eller avbryte normal fremdrift.Bevar årsaken i stedet for å behandle hvert unntak som tapt.
Retur pågår eller returnertPakken er på vei tilbake eller har en rapportert fullført retur.Hold returprosessen atskilt fra levering til den opprinnelige mottakeren.
UkjentDen tilgjengelige informasjonen kan ikke mappes på en pålitelig måte.Undersøk mappingen eller datamangelen i stedet for å finne på en leveringstilstand.

Disse betegnelsene er en foreslått applikasjonsmodell, ikke en offisiell 17TRACK-kodeliste. Bevar leverandørens statuskode, understatur, beskrivelse, hendelsestidspunkt, tidssoneinformasjon, sted og mottakstidspunkt der dette er tilgjengelig. Bevar også mapping-versjonen slik at senere endringer kan revideres.

For en implementering med flere transportører er 17TRACK Tracking API et relevant integrasjonsalternativ. Bruk den offisielle API-dokumentasjonen til å fastsette implementasjonsavtalen i stedet for å kopiere illustrerende betegnelser inn i leverandørspesifikke felt. Bekreft gjeldende statusdefinisjoner, webhook-konfigurasjon, autentiseringskrav og betydningen av svarene før du bygger adapteren.

Bygg webhook-håndtering rundt varig mottak

En webhook er en HTTP-forespørsel som sendes til endepunktet ditt for å rapportere en hendelse. Den kan redusere behovet for gjentatt polling, men bør ikke behandles som en garanti for umiddelbar, ordnet eller nøyaktig én-gangs levering. Utform mottakeren slik at den tåler nye forsøk, avbrudd og uventede nyttelaster, med mindre leverandøren uttrykkelig garanterer noe annet.

  1. Autentiser forespørselen. Bruk leverandørens dokumenterte bekreftelsesmetode. Hvis signaturer støttes, valider dem med den angitte algoritmen og de rå forespørselsbytene. Ikke finn på et signaturhode eller anta at alle tjenester bruker HMAC.
  2. Valider nyttelasten. Kontroller obligatoriske felt, typer, nyttelastens størrelse og tilknytningen til en forsendelse som kontoen din administrerer. Håndter ukjente valgfrie felt uten å bryte fremoverkompatibiliteten unødvendig.
  3. Vedvar før du bekrefter. Lagre den aksepterte hendelsen eller legg den i en varig kø før du sender det dokumenterte suksessvaret. Hvis lagringen mislykkes, skal du ikke bekrefte hendelsen som trygt mottatt.
  4. Behandle asynkront. Utfør statusmapping, ordreoppdateringer og beslutninger om varsler utenfor forespørselshåndtereren når det er praktisk.
  5. Gjør bieffekter idempotente. En gjentatt hendelse skal ikke opprette enda en supportsak eller sende en ny kopi av den samme kundemeldingen.

Den nøyaktige bekreftelseskoden, tidsavbruddet, planen for nye forsøk og oppførselen ved avspilling avhenger av leverandøren. Kontroller disse detaljene uttrykkelig. En generell instruks om å «returnere 200» erstatter ikke webhook-avtalen.

Bruk HTTPS og hold legitimasjon utenfor URL-er og vanlige logger. Bruk tilgangskontroller på lagrede nyttelaster fordi sporingsdata kan inneholde personopplysninger. OWASP REST Security Cheat Sheet gir relevant veiledning om transportbeskyttelse, validering av inndata og endepunktsikkerhet.

Dedupliser hendelser uten å undertrykke reelle oppdateringer

Foretrekk en dokumentert og stabil hendelsesidentifikator når en slik finnes. Ellers kan du utlede en dedupliseringsnøkkel fra en nøye valgt kombinasjon av forsendelsesidentitet, hendelsestidspunkt, hendelseskode og sted. Test denne tilnærmingen mot faktiske nyttelaster: to legitime hendelser kan ha samme tidsstempel, og den samme hendelsen kan komme med litt ulik beskrivende tekst.

Bruk separate dedupliseringskontroller for hendelsesinntak og nedstrøms handlinger. En statusoppdatering kan måtte lagres på nytt som en korrigering, mens kundemeldingen bør forbli undertrykt. Gi hvert varsel eller hver sakshandling sin egen varige identitet.

Hold hendelsestidspunkt atskilt fra mottakstidspunkt

Anta at en hendelse om transport når systemet ditt etter en hendelse om «ute til levering», men at transportørens tidsstempel er tidligere. Lagre den i historikken uten automatisk å endre gjeldende status tilbake til «under transport».

Tidsstempelrekkefølge alene er ikke tilstrekkelig i alle tilfeller. Manglende tidssoner, korrigerte skanninger og motstridende kilder krever uttrykkelige regler. Bevar tidsstempelpresisjon og forskyvninger, registrer når systemet ditt mottok hver hendelse, og bruk dokumentert sekvensinformasjon fra leverandøren der dette finnes. Ikke innfør en rigid statusstige som bare går fremover: leveringsforsøk, omdirigeringer, returer og korrigeringer kan skape legitime overganger som ser ut til å gå bakover.

Gjør unntak om til handlinger med tydelig ansvar

Et unntaksvarsel bør forklare hva som skjedde, hvilken handling som kreves, og hvem som har ansvar for neste steg. En generell melding om «forsendelsesunntak» overlater den samme undersøkelsen til driftspersonalet og kan skremme kunder uten å hjelpe dem.

Start med en liten rutingspolicy:

  • Adresse- eller tilgangsproblem: Send saken til kundestøtte for å bekrefte problemet og undersøke transportørens tilgjengelige korrigeringsprosess. Ikke lov en adresseendring før du har bekreftet at det er mulig.
  • Henting kreves: Varsle mottakeren når kilden gir en brukbar henteinstruksjon. Bevar alle bekreftede frister.
  • Tollhandling kreves: Tildel saken etter hvem som må levere de etterspurte dokumentene eller opplysningene. En tollrelatert hendelse alene fastslår ikke at betaling forfaller.
  • Mislykket leveringsforsøk: Kontroller det rapporterte neste steget før du anbefaler ny levering eller henting.
  • Returneres til avsender: Åpne en operativ gjennomgang. Ikke utsted automatisk refusjon utelukkende basert på en bred sporingsetikett, med mindre policyen din uttrykkelig tillater det.
  • Tap eller skade rapportert av transportøren: Send saken til den som har ansvar for krav, og bevar hendelsesbevisene. Hold beslutninger om krav atskilt fra generell forsinkelsesdeteksjon.

Hvert varsel bør inneholde en forsendelsesidentifikator, ordrehenvisning, hendelsesårsak, kildens tidsstempel, sist kjente tilstand, tildelt ansvarlig og neste handling. Inkluder en lenke til den relevante interne posten i stedet for å eksponere unødvendige kundedetaljer i delte meldingskanaler.

Behandle «ingen oppdatering» som en separat tilstand

En forsendelse uten nylig skanning er ikke automatisk tapt. Den kan være mellom kontrollpunkter, vente på sin første fysiske skanning eller være berørt av et innsynsproblem.

Definer inaktivitetsterskler etter tjeneste, rute, fraktstadium og forretningsforpliktelse i stedet for å bruke én universell tidsgrense. Skill mellom en pakke som aldri har fått en mottaksskanning, og en som sluttet å oppdatere etter at den kom inn i nettverket. Hvis historiske bevis er begrensede, bør terskelen utløse en undersøkelse, ikke en erklæring om tap.

Undertrykk gjentatte varsler mens en uendret sak fortsatt er åpen. Eskaler når nye bevis oppstår, en avtalt oppfølging uteblir eller kundens leveringsforpliktelse krever inngrep.

Overvåk integrasjonens helse separat fra leveringsytelsen

API-overvåking svarer på om sporingsintegrasjonen fungerer. Leveringsovervåking svarer på hva som skjer med forsendelsene. Et sunt endepunkt kan motta foreldede transportørdata, mens et utilgjengelig endepunkt kan gå glipp av oppdateringer for pakker som beveger seg normalt.

  • Forespørselshelse: Følg med på autentiseringsfeil, tidsavbrudd, svar ved hastighetsbegrensning, serverfeil og avvisninger på applikasjonsnivå.
  • Webhook-helse: Følg med på bekreftelsesfeil, latenstid for bekreftelser, lagringsfeil, dupliserte leveringer og behandlingsfeil.
  • Behandlingshelse: Overvåk køalder, ubehandlede hendelser, mappingfeil og varselfeil.
  • Sporingsferskhet: Mål tiden siden den siste kildehendelsen separat fra tiden siden siste vellykkede inntak.
  • Operative resultater: Følg med på uløste unntak, tid til tildeling av ansvar og forfalte oppfølginger.

Ved nye forsøk på forespørsler bør du følge leverandørens veiledning om hastighetsbegrensning og nye forsøk. Unngå å gjenta operasjoner blindt når de kan opprette dupliserte registreringer eller andre bieffekter; bruk dokumenterte idempotensmekanismer der de finnes.

Der det støttes, bør du bruke en avstemmingsprosess for å hente den nyeste sporingsposten etter driftsavbrudd eller ved mistanke om tapte hendelser. Sett frekvensen innenfor kontrakts- og hastighetsgrensene. Webhooks og avstemming har ulike formål: den ene leverer endringer, mens den andre bidrar til å oppdage og reparere hull.

Test feilsituasjoner før du aktiverer kundemeldinger

Start med behandling som bare er intern, og undersøk representative forsendelser før statusendringer får sende kundemeldinger. Test mer enn den normale utviklingen fra «under transport» til «levert».

  • En duplisert webhook oppretter én tiltenkt kundemelding.
  • En eldre hendelse som kommer sent, erstatter ikke gjeldende tilstand feilaktig.
  • En ukjent status bevares og flagges i stedet for å mappes stille til «levert».
  • En mislykket varig lagring fører ikke til en vellykket bekreftelse.
  • Et midlertidig nedstrømsavbrudd gjør hendelser tilgjengelige for nye forsøk.
  • En levert hendelse etterfulgt av en korrigering forblir etterprøvbar.
  • En ordre med flere pakker blir ikke markert som fullstendig levert når bare én pakke er levert.
  • Et API-avbrudd varsler utviklingsteamet uten automatisk å fortelle kundene at pakkene deres er forsinket.

Utgivelseskriteriet bør være operativ konsistens: forsendelsesposten, kundemeldingen og supporthandlingen må samsvare med de samme underliggende bevisene. Et vellykket webhook-svar alene viser ikke at leveringsopplevelsen fungerer.

Vanlige spørsmål

Betyr HTTP 200 at pakken er levert?

Nei. Det viser suksess på HTTP-nivå for forespørselen. Les API-ets forretningsresultat og feltene for forsendelsesstatus separat. For en webhook gjelder en vellykket bekreftelse mottak av varslingen, ikke fysisk levering av pakken.

Bør jeg bruke webhooks eller polling for sporingsoppdateringer?

Bruk webhooks for hendelsesdrevne oppdateringer når leverandøren støtter dem. Der det støttes og er operativt begrunnet, bør du legge til begrenset avstemmingspolling for å hente inn manglende data. Polling alene kan være riktig når webhooks ikke er tilgjengelige, men frekvensen må respektere leverandørens grenser og kravene til ferskhet.

Hvorfor kan sporingsstatusen endres etter «levert»?

En kilde kan korrigere en hendelse, eller integrasjonen din kan motta forsinket eller motstridende informasjon. Bevar historikken og vurder de nyere bevisene i stedet for å behandle «levert» som teknisk uforanderlig. En rapportert levering og kundens bekreftelse på mottak er også to forskjellige fakta.

Hvor raskt bør et unntaksvarsel sendes?

Basér hastverket på handlingen som kreves og eventuelle bekreftede frister. Et problem som krever handling fra mottakeren, bør håndteres annerledes enn en informativ forsinkelse. Behandlingshastighet kan ikke kompensere for en transportørhendelse som ble publisert sent, så bevar både kilde- og mottakstidspunkt.

Bør kundene se transportørens råstatus?

Vanligvis har kunder mer nytte av en tydelig forklaring og et støttet neste steg enn av en uforklart kode. Bevar rådetaljene for support- og revisjonsformål. Forenkle aldri en status til et sterkere løfte enn den underliggende hendelsen støtter.

Kilder

Loading