Skip to main content
StartBlogStatus dostawy w API wysyłkowym: kody statusu, webhooki i alerty dotyczące wyjątków

Status dostawy w API wysyłkowym: kody statusu, webhooki i alerty dotyczące wyjątków

17TRACK

Status dostawy w API wysyłkowym opisuje postęp przesyłki, a nie to, czy żądanie API zakończyło się powodzeniem. Aby zbudować niezawodne śledzenie, oddziel kody odpowiedzi HTTP od statusów przesyłek, przetwarzaj webhooki bez zakładania, że dotrą tylko raz lub we właściwej kolejności, oraz przekształcaj wyjątki wymagające działania w alerty z jasno określonymi osobami odpowiedzialnymi. Dla zespołów inżynieryjnych i operacyjnych ecommerce celem jest rekord przesyłki, który pozostaje wiarygodny, gdy aktualizacje przewoźnika są opóźnione, zduplikowane lub skorygowane.

Status dostawy Shipping API, kody statusu, webhooki i alerty wyjątków

Ten przewodnik wyjaśnia, jak strukturyzować taki rekord, obsługiwać przychodzące zdarzenia śledzenia oraz odróżniać problem z dostawą od problemu z integracją śledzenia.

Oddziel kody HTTP, wyniki API i statusy przesyłek

Wyrażenie „kod statusu” może odnosić się do trzech różnych warstw. Ich mieszanie prowadzi do mylących pulpitów nawigacyjnych i niepotrzebnych powiadomień dla klientów.

WarstwaCo informujePrzykładowa interpretacja
Odpowiedź HTTPWynik żądania HTTPOdpowiedź 200 oznacza powodzenie na poziomie HTTP; nie oznacza, że przesyłka została dostarczona.
Wynik biznesowy APICzy żądana operacja zakończyła się powodzeniem zgodnie z zasadami aplikacji dostawcyTreść odpowiedzi może informować, że rejestracja śledzenia została odrzucona, także w ramach pomyślnej odpowiedzi HTTP, jeśli API działa według takiego modelu.
Status przesyłkiZgłoszony fizyczny lub operacyjny stan przesyłkiW transporcie, oczekuje na odbiór lub dostarczona.

Standard semantyki HTTP definiuje znaczenie odpowiedzi HTTP. Na przykład 202 Accepted oznacza, że żądanie zostało przyjęte do przetwarzania, ale przetwarzanie niekoniecznie zostało zakończone. Nie jest to dowód, że przewoźnik przyjął przesyłkę.

Podobnie nieudane żądanie śledzenia nie dowodzi, że przesyłka przestała się przemieszczać. Aplikacja może tymczasowo utracić widoczność, podczas gdy dostawa fizyczna przebiega normalnie. Monitoruj te warstwy niezależnie.

Utwórz model statusów bez odrzucania szczegółów przewoźnika

Nie istnieje uniwersalny numeryczny kod statusu dostawy wspólny dla każdego API wysyłkowego i przewoźnika. Wartości z jednej integracji nie należy interpretować przy użyciu mapowania innego dostawcy. Korzystaj z dokumentacji konkretnej wersji API, którą wdrażasz.

Praktyczny model wewnętrzny łączy niewielki zestaw znormalizowanych statusów z oryginalnym zdarzeniem przewoźnika. Normalizacja umożliwia spójne raportowanie, a oryginalne zdarzenie zachowuje szczegóły potrzebne do analizy.

Przykładowy status wewnętrznyZnaczenieUwaga operacyjna
Otrzymano informacjeIstnieją elektroniczne informacje o przesyłce.Nie traktuj utworzenia etykiety jako potwierdzonego fizycznego przekazania przesyłki.
W transporcieRekord śledzenia wskazuje przemieszczanie się przesyłki w sieci dostawy.Ta szeroka kategoria może obejmować różne etapy transportu.
Wydana do doręczeniaZgłoszono, że przesyłka znajduje się na trasie doręczenia.Nie zamieniaj tego w bezwarunkową gwarancję dostawy.
Oczekuje na odbiórOczekuje się, że odbiorca odbierze przesyłkę.Dodawaj instrukcje odbioru lub terminy tylko wtedy, gdy są potwierdzone przez źródło.
DostarczonaŹródło śledzenia zgłasza dostarczenie przesyłki.Sam skan doręczenia nie rozstrzyga roszczenia klienta dotyczącego nieotrzymania przesyłki.
WyjątekZdarzenie może wymagać uwagi lub zakłócać normalny przebieg.Zachowaj przyczynę, zamiast traktować każdy wyjątek jako zagubienie przesyłki.
Zwrot w toku lub zwróconaPrzesyłka wraca lub zgłoszono zakończenie jej zwrotu.Oddziel postęp zwrotu od dostawy do pierwotnego odbiorcy.
NieznanyDostępnych informacji nie można wiarygodnie zmapować.Zbadaj mapowanie lub brak danych, zamiast wymyślać stan dostawy.

Etykiety te są sugerowanym modelem aplikacji, a nie oficjalną listą kodów 17TRACK. Zachowuj kod statusu dostawcy, podstatus, opis, czas zdarzenia, informacje o strefie czasowej, lokalizację oraz czas otrzymania, jeśli są dostępne. Zachowuj również wersję mapowania, aby późniejsze zmiany mapowania można było poddać audytowi.

W przypadku wdrożenia obejmującego wielu przewoźników 17TRACK Tracking API jest odpowiednią opcją integracji. Korzystaj z jego oficjalnej dokumentacji API, aby ustalić umowę implementacyjną, zamiast kopiować przykładowe etykiety do pól właściwych dla dostawcy. Przed zbudowaniem adaptera potwierdź obowiązujące definicje statusów, konfigurację webhooków, wymagania uwierzytelniania i semantykę odpowiedzi.

Zbuduj obsługę webhooków wokół trwałego odbioru

Webhook to żądanie HTTP wysyłane do punktu końcowego w celu zgłoszenia zdarzenia. Może ograniczyć potrzebę wielokrotnego odpytywania, ale nie należy traktować go jako gwarancji natychmiastowego, uporządkowanego ani dokładnie jednokrotnego dostarczenia. Zaprojektuj odbiornik tak, aby tolerował ponowienia, przerwy i nieoczekiwane treści, chyba że dostawca wyraźnie gwarantuje inaczej.

  1. Uwierzytelnij żądanie. Zastosuj udokumentowaną przez dostawcę metodę weryfikacji. Jeśli obsługiwane są podpisy, zweryfikuj je przy użyciu określonego algorytmu i surowych bajtów żądania. Nie wymyślaj nagłówka podpisu ani nie zakładaj, że każda usługa korzysta z HMAC.
  2. Zweryfikuj treść. Sprawdź wymagane pola, typy, rozmiar treści oraz powiązanie z przesyłką zarządzaną przez Twoje konto. Obsługuj nieznane pola opcjonalne bez niepotrzebnego naruszania zgodności wstecznej.
  3. Zapisz przed potwierdzeniem. Zapisz zaakceptowane zdarzenie lub umieść je w trwałej kolejce przed wysłaniem udokumentowanej odpowiedzi powodzenia. Jeśli zapis się nie powiedzie, nie potwierdzaj bezpiecznego otrzymania zdarzenia.
  4. Przetwarzaj asynchronicznie. W miarę możliwości wykonuj mapowanie statusów, aktualizacje zamówień i decyzje dotyczące powiadomień poza obsługą żądania.
  5. Zapewnij idempotencję efektów ubocznych. Powtórzone zdarzenie nie powinno tworzyć kolejnego zgłoszenia do pomocy technicznej ani wysyłać kolejnej kopii tej samej wiadomości do klienta.

Dokładny kod potwierdzenia, limit czasu, harmonogram ponowień i zachowanie podczas odtwarzania zależą od dostawcy. Sprawdź te szczegóły wyraźnie. Ogólna instrukcja „zwróć 200” nie zastępuje umowy dotyczącej webhooka.

Korzystaj z HTTPS i nie umieszczaj danych uwierzytelniających w adresach URL ani w standardowych logach. Zastosuj kontrolę dostępu do przechowywanych treści, ponieważ dane śledzenia mogą zawierać informacje osobowe. OWASP REST Security Cheat Sheet zawiera odpowiednie wskazówki dotyczące ochrony transmisji, walidacji danych wejściowych i bezpieczeństwa punktów końcowych.

Deduplikuj zdarzenia bez pomijania rzeczywistych aktualizacji

Jeśli jest dostępny, preferuj udokumentowany, stabilny identyfikator zdarzenia. W przeciwnym razie utwórz klucz deduplikacji na podstawie starannie dobranej kombinacji tożsamości przesyłki, znacznika czasu zdarzenia, kodu zdarzenia i lokalizacji. Przetestuj to podejście na rzeczywistych treściach: dwa prawidłowe zdarzenia mogą mieć ten sam znacznik czasu, a to samo zdarzenie może nadejść z nieco innym opisem.

Stosuj oddzielne mechanizmy deduplikacji dla przyjmowania zdarzeń i działań następczych. Aktualizację statusu może być konieczne zapisać ponownie jako korektę, podczas gdy powiadomienie klienta powinno pozostać wstrzymane. Nadaj każdemu powiadomieniu lub działaniu związanym ze zgłoszeniem własną trwałą tożsamość.

Oddziel czas zdarzenia od czasu otrzymania

Załóżmy, że zdarzenie „w transporcie” dociera do systemu po zdarzeniu „wydana do doręczenia”, ale jego znacznik czasu przewoźnika jest wcześniejszy. Zapisz je w historii bez automatycznej zmiany bieżącego statusu z powrotem na „w transporcie”.

Samo uporządkowanie według znaczników czasu nie wystarcza w każdym przypadku. Brakujące strefy czasowe, skorygowane skany i sprzeczne źródła wymagają wyraźnych reguł. Zachowuj precyzję znaczników czasu i przesunięcia, zapisuj moment otrzymania każdego zdarzenia przez system oraz korzystaj z udokumentowanych informacji o kolejności dostawcy, jeśli są dostępne. Nie narzucaj sztywnej drabiny statusów wyłącznie do przodu: próby doręczenia, przekierowania, zwroty i korekty mogą tworzyć prawidłowe przejścia, które pozornie oznaczają cofnięcie statusu.

Przekształcaj wyjątki w działania przypisane do osób odpowiedzialnych

Alert dotyczący wyjątku powinien wyjaśniać, co się wydarzyło, jakie działanie jest potrzebne i kto odpowiada za kolejny krok. Ogólny komunikat „wyjątek przesyłki” zmusza pracowników operacyjnych do powtarzania tego samego dochodzenia i może niepokoić klientów bez udzielania im pomocy.

Zacznij od niewielkiej polityki kierowania spraw:

  • Problem z adresem lub dostępem: Przekieruj do obsługi klienta w celu zweryfikowania problemu i sprawdzenia dostępnej u przewoźnika procedury korekty. Nie obiecuj zmiany adresu przed potwierdzeniem, że jest ona możliwa.
  • Wymagany odbiór: Powiadom odbiorcę, gdy źródło udostępnia użyteczną instrukcję odbioru. Zachowaj każdy zweryfikowany termin.
  • Wymagane działanie celne: Przypisz sprawę zgodnie z tym, kto musi dostarczyć wymagane dokumenty lub informacje. Samo zdarzenie związane z odprawą celną nie oznacza, że należna jest płatność.
  • Nieudana próba doręczenia: Sprawdź zgłoszony kolejny krok przed zaleceniem ponownego doręczenia lub odbioru.
  • Zwrot do nadawcy: Otwórz przegląd operacyjny. Nie wystawiaj automatycznie zwrotu pieniędzy wyłącznie na podstawie ogólnej etykiety śledzenia, chyba że Twoja polityka wyraźnie na to zezwala.
  • Zgubienie lub uszkodzenie zgłoszone przez przewoźnika: Przekieruj do osoby odpowiedzialnej za roszczenia i zachowaj dowody zdarzenia. Oddziel decyzje dotyczące roszczeń od ogólnego wykrywania opóźnień.

Każdy alert powinien zawierać identyfikator przesyłki, numer referencyjny zamówienia, przyczynę zdarzenia, znacznik czasu źródłowego, ostatni znany stan, przypisaną osobę odpowiedzialną i kolejne działanie. Dodaj link do odpowiedniego rekordu wewnętrznego zamiast ujawniać niepotrzebne dane klienta we współdzielonych kanałach komunikacji.

Traktuj „brak aktualizacji” jako osobny warunek

Przesyłka bez niedawnego skanu nie jest automatycznie zagubiona. Może znajdować się między punktami kontrolnymi, oczekiwać na pierwszy fizyczny skan lub być dotknięta luką w widoczności.

Definiuj progi braku aktywności według usługi, trasy, etapu wysyłki i zobowiązania biznesowego, zamiast stosować jeden uniwersalny licznik czasu. Odróżniaj przesyłkę, która nigdy nie otrzymała skanu przyjęcia, od tej, której aktualizacje zatrzymały się po wejściu do sieci. Jeśli dowody historyczne są ograniczone, użyj progu do uruchomienia dochodzenia, a nie do ogłoszenia zaginięcia.

Wstrzymuj powtarzające się alerty, dopóki niezmieniona sprawa pozostaje otwarta. Eskaluj, gdy pojawią się nowe dowody, uzgodnione działania następcze nie zostaną wykonane lub zobowiązanie dotyczące dostawy do klienta wymaga interwencji.

Monitoruj kondycję integracji niezależnie od wyników dostawy

Monitorowanie API odpowiada na pytanie, czy integracja śledzenia działa. Monitorowanie dostawy odpowiada na pytanie, co dzieje się z przesyłkami. Sprawny punkt końcowy może otrzymywać nieaktualne dane przewoźnika, podczas gdy niedostępny punkt końcowy może nie otrzymać aktualizacji dotyczących przesyłek, które normalnie się przemieszczają.

  • Kondycja żądań: Śledź błędy uwierzytelniania, przekroczenia limitu czasu, odpowiedzi dotyczące limitów, błędy serwera i odrzucenia na poziomie aplikacji.
  • Kondycja webhooków: Śledź błędy weryfikacji, opóźnienie potwierdzeń, błędy zapisu, zduplikowane dostarczenia i błędy przetwarzania.
  • Kondycja przetwarzania: Monitoruj wiek kolejki, nieprzetworzone zdarzenia, błędy mapowania i błędy powiadomień.
  • Aktualność śledzenia: Mierz czas od ostatniego zdarzenia źródłowego oddzielnie od czasu od ostatniego pomyślnego przyjęcia danych.
  • Wyniki operacyjne: Śledź nierozwiązane wyjątki, czas do przypisania odpowiedzialności i zaległe działania następcze.

W przypadku ponowień żądań stosuj się do wytycznych dostawcy dotyczących limitów i ponowień. Unikaj bezmyślnego powtarzania operacji, które mogą tworzyć zduplikowane rejestracje lub inne efekty uboczne; korzystaj z udokumentowanych mechanizmów idempotencji, jeśli są dostępne.

Jeśli jest to obsługiwane, użyj procesu uzgadniania w celu pobrania najnowszego rekordu śledzenia po awariach lub podejrzeniu pominiętych zdarzeń. Ustal jego częstotliwość w ramach ograniczeń umownych i limitów. Webhooki i uzgadnianie służą różnym celom: pierwsze dostarczają zmiany, a drugie pomagają wykrywać i naprawiać luki.

Przetestuj przypadki awarii przed włączeniem powiadomień dla klientów

Rozpocznij od przetwarzania wyłącznie wewnętrznego i sprawdź reprezentatywne przesyłki, zanim zezwolisz, aby zmiany statusu wysyłały wiadomości do klientów. Testuj więcej niż normalny przebieg od „w transporcie” do „dostarczona”.

  • Zduplikowany webhook tworzy jedno zamierzone powiadomienie dla klienta.
  • Starsze zdarzenie, które dociera z opóźnieniem, nie zastępuje nieprawidłowo bieżącego stanu.
  • Nieznany status zostaje zachowany i oznaczony, zamiast po cichu mapować go na „dostarczona”.
  • Nieudany trwały zapis nie powoduje pomyślnego potwierdzenia.
  • Tymczasowa awaria systemu zależnego pozostawia zdarzenia dostępne do ponowienia.
  • Zdarzenie „dostarczona”, po którym następuje korekta, pozostaje możliwe do prześledzenia.
  • Zamówienie obejmujące wiele przesyłek nie staje się w pełni dostarczone, gdy dostarczono tylko jedną przesyłkę.
  • Awaria API powiadamia zespół inżynieryjny, nie informując automatycznie klientów, że ich przesyłki są opóźnione.

Kryterium wydania powinna być spójność operacyjna: rekord przesyłki, wiadomość dla klienta i działanie pomocy technicznej muszą być zgodne z tymi samymi dowodami źródłowymi. Sama pomyślna odpowiedź webhooka nie dowodzi, że proces dostawy działa prawidłowo.

FAQ

Czy HTTP 200 oznacza, że paczka została dostarczona?

Nie. Oznacza powodzenie żądania na poziomie HTTP. Odczytuj oddzielnie wynik biznesowy API i pola statusu przesyłki. W przypadku webhooka pomyślne potwierdzenie dotyczy otrzymania powiadomienia, a nie fizycznego dostarczenia przesyłki.

Czy do aktualizacji śledzenia powinienem używać webhooków czy odpytywania?

Używaj webhooków do aktualizacji sterowanych zdarzeniami, gdy dostawca je obsługuje. Jeśli jest to obsługiwane i uzasadnione operacyjnie, dodaj ograniczone odpytywanie uzgadniające w celu odzyskiwania braków. Samo odpytywanie może być odpowiednie, gdy webhooki są niedostępne, ale jego częstotliwość musi respektować limity dostawcy i wymagania dotyczące aktualności danych.

Dlaczego status śledzenia może zmienić się po statusie „dostarczona”?

Źródło może skorygować zdarzenie albo integracja może otrzymać opóźnione lub sprzeczne informacje. Zachowaj historię i oceń nowsze dowody, zamiast traktować status „dostarczona” jako technicznie niezmienny. Zgłoszone dostarczenie i potwierdzenie odbioru przez klienta są również różnymi faktami.

Jak szybko należy wysłać alert dotyczący wyjątku?

Ustal pilność na podstawie wymaganego działania i każdego zweryfikowanego terminu. Problem wymagający działania odbiorcy wymaga innego postępowania niż opóźnienie informacyjne. Szybkość przetwarzania nie zrekompensuje zdarzenia przewoźnika opublikowanego z opóźnieniem, dlatego zachowuj zarówno znaczniki czasu źródłowego, jak i czasu otrzymania.

Czy klienci powinni widzieć surowy status przewoźnika?

Zazwyczaj klientom bardziej pomaga jasne wyjaśnienie i potwierdzony kolejny krok niż niewyjaśniony kod. Zachowuj surowe szczegóły do celów pomocy technicznej i audytu. Nigdy nie upraszczaj statusu do obietnicy silniejszej niż ta, którą uzasadnia zdarzenie źródłowe.

Źródła

  • RFC 9110: HTTP Semantics — źródło referencyjne dotyczące znaczenia kodów statusu HTTP, w tym 200 i 202.
  • OWASP REST Security Cheat Sheet — wytyczne bezpieczeństwa dotyczące punktów końcowych API i webhooków.
  • 17TRACK Tracking API — oficjalne źródło informacji o produkcie służącym do omawianej integracji śledzenia.
  • 17TRACK API Documentation — oficjalne źródło wymagań integracji właściwych dla dostawcy; przykładowe schematy i zalecenia dotyczące przepływu pracy zawarte w tym przewodniku nie zastępują tej umowy.
Loading