Skip to main content
ПочетакБлогPraćenje pošiljki putem Webhook-a: Kako funkcionišu webhook-ovi za praćenje u poređenju sa pollingom (payload-i, ponovni pokušaji i podešavanje)

Praćenje pošiljki putem Webhook-a: Kako funkcionišu webhook-ovi za praćenje u poređenju sa pollingom (payload-i, ponovni pokušaji i podešavanje)

17TRACK

Webhook-ovi za praćenje pošiljaka šalju HTTP zahtev vašoj aplikaciji kada servis za praćenje ima novo ažuriranje za prijavljivanje. Poling funkcioniše u suprotnom smeru: vaša aplikacija ponavlja zahteve za najnovijim informacijama o praćenju. Za programere koji povezuju podatke o pošiljkama sa sistemom za upravljanje porudžbinama, prodavnicom ili servisom za obaveštavanje korisnika, webhook-ovi su generalno bolji primarni mehanizam za ažuriranje kada su podržani; ciljano polingovanje može pomoći u oporavku propuštenih ažuriranja i usklađivanju zapisa.

Webhook-ovi za praćenje pošiljaka: kako funkcionišu u poređenju sa polingom i sadržajem zahteva

Nijedan metod ne omogućava da prevoznik ranije skenira paket. Oba zavise od toga kada izvor podataka o praćenju primi i objavi nove informacije. Praktična razlika je u tome kako vaša aplikacija saznaje za te informacije, koliko mrežnog saobraćaja generiše i šta se dešava kada isporuka ne uspe.

Webhook-ovi za praćenje naspram polinga: operativna razlika

Ovo su obrasci integracije, a ne konkurentske baze podataka za praćenje. Prevoznik ili platforma za praćenje mogu nuditi jedan ili oba obrasca, uz različite uslove pristupa. Uporedite ponašanje konkretnog API-ja koji planirate da koristite, umesto da pretpostavite da svi webhook servisi nude iste garancije.

Tačka odlučivanjaWebhook-oviPoling
Ko pokreće zahtev?Servis za praćenje poziva vašu krajnju tačku.Vaša aplikacija poziva API za praćenje.
Kašnjenje ažuriranjaZavisi od svežine izvora, generisanja događaja, isporuke i obrade.Takođe zavisi od toga kada se izvršava sledeći zakazani zahtev.
Obim zahtevaOdređuju ga emitovana ažuriranja, grupisanje i ponovni pokušaji isporuke.Određuju ga obim pošiljaka, učestalost polinga i grupisanje.
InfrastrukturaZahteva dostupni prijemnik i bezbednu obradu dolaznih zahteva.Zahteva planer, pristup odlaznom API-ju i obradu ograničenja brzine.
Oporavak od greškeZavisi od ponovnih pokušaja provajdera i vašeg procesa usklađivanja.Zavisi od narednih zahteva i od toga da li API čuva potrebnu istoriju.

Najpre izaberite webhook-ove kada su pravovremena ažuriranja važna i vaš tim može da održava pouzdan prijemnik. Najpre izaberite poling kada su dolazne krajnje tačke nepraktične, obim pošiljaka umeren ili izvor ne pruža odgovarajuće webhook-ove. Koristite hibridni dizajn kada bi propuštena ažuriranja poremetila komunikaciju sa korisnicima ili poslovanje, a API podržava usklađivanje.

Nemojte pretpostaviti da su webhook-ovi jeftiniji. Naknade za pretplatu, registraciju praćenja, API pozive, isporuku događaja i infrastrukturu mogu se naplaćivati na različite načine. Uporedite stvarne komercijalne uslove i očekivano opterećenje, umesto da manji broj zahteva smatrate dokazom nižeg računa.

Šta se dešava između skeniranja kod prevoznika i vaše aplikacije?

  1. Identifikujte pošiljku. Povežite broj za praćenje, informacije o prevozniku kada su potrebne i internu referencu pošiljke. Neki servisi zahtevaju registraciju pre početka praćenja.
  2. Konfigurišite isporuku događaja. Navedite HTTPS URL za povratni poziv i izaberite podržane pretplate na događaje.
  3. Izvor prima informacije o praćenju. Skeniranje kod prevoznika ili promena statusa postaju dostupni servisu za praćenje.
  4. Servis šalje webhook. Zahtev može sadržati potpun snimak praćenja, jednu kontrolnu tačku ili samo referencu koja zahteva pretragu putem API-ja.
  5. Vaš prijemnik ga proverava i čuva. Autentifikujte zahtev, proverite njegovu strukturu i trajno zabeležite ili stavite događaj u red čekanja.
  6. Radnik ažurira poslovne sisteme. Normalizujte statuse, ažurirajte zapise o pošiljkama i pokrenite samo radnje koje su još uvek odgovarajuće.

Isporuka webhook-a nije isto što i fizička isporuka. To je poruka o informacijama o pošiljci. Isto tako, uspešan odgovor na webhook ne dokazuje da je imejl poslat ili da je zapis porudžbine ažuriran; to su rezultati naknadne obrade koji zahtevaju sopstveni nadzor.

Čitanje sadržaja webhook-a za praćenje

Sledeći JSON predstavlja ilustrativni dizajn integracije, a ne 17TRACK sadržaj niti univerzalnu šemu. Stvarni nazivi polja, kodovi statusa, formati vremenskih oznaka i identifikatori događaja moraju poticati iz dokumentacije izabranog provajdera.

{
  "event_id": "evt_example_001",
  "event_type": "shipment.updated",
  "created_at": "2025-04-08T10:16:00Z",
  "shipment": {
    "reference": "shipment_example_123",
    "tracking_number": "EXAMPLE123456",
    "carrier_code": "example_carrier",
    "status": "in_transit",
    "checkpoint": {
      "occurred_at": "2025-04-08T10:10:00Z",
      "description": "Departed processing facility"
    }
  }
}

U svom modelu podataka razdvojite tri vremenska toka: kada se događaj pošiljke dogodio, kada je provajder generisao poruku i kada ju je vaša aplikacija primila. Odložena kontrolna tačka može stići nakon novije. Vremenska oznaka bez pomaka takođe zahteva izričito tumačenje; nemojte neprimetno tretirati svaku lokalnu vremensku oznaku prevoznika kao UTC.

Čuvajte svoju internu referencu pošiljke zajedno sa identifikatorima provajdera. Sam broj za praćenje možda nije dovoljan kao trajni globalni identifikator, naročito u različitim kontekstima prevoznika. Kod podeljenih porudžbina održavajte zapise na nivou pošiljke, umesto da status isporučene jedne pošiljke označi celu porudžbinu kao završenu.

Sačuvajte originalni status i opis uz normalizovani poslovni status. Vaša aplikacija može mapirati više poruka prevoznika u status „u tranzitu“, ali osoblju za podršku i dalje može biti potrebna originalna kontrolna tačka da bi razumelo kašnjenje. Procenjene datume isporuke tretirajte kao procene i razlikujte nedostajuće polje od izričitog naloga za brisanje postojeće vrednosti.

Ponovni pokušaji, potvrde i duplirani događaji

Isporuka webhook-a može da ne uspe zbog isteka vremena, prekida mreže, grešaka autentifikacije ili nedostupnog prijemnika. Provajder može ponoviti pokušaj, ali ne postoji univerzalni raspored ponavljanja, period čuvanja niti maksimalan broj pokušaja. Potvrdite koji odgovori pokreću novi pokušaj, kako se obrađuju preusmeravanja i da li je dostupna ručna ponovna isporuka.

Potvrdite prijem nakon trajnog prihvatanja

Putanju zahteva održavajte kratkom: proverite zahtev, sačuvajte prihvaćeni posao i vratite uspešan odgovor koji zahteva provajder. Imejlove šaljite i sporije poslovne operacije obavljajte asinhrono. HTTP specifikacija definiše 202 Accepted kao prihvatanje za obradu, a ne kao završenu obradu, ali vaš provajder može zahtevati drugačiji uspešan odgovor. Pratite njegov ugovor za webhook.

Vraćanje uspeha pre bilo kakvog čuvanja nosi rizik od gubitka ažuriranja ako se proces sruši. Čekanje na svaku naknadnu radnju nosi rizik od isteka vremena i novog pokušaja isporuke. Trajni ulazni sandučić ili red čekanja pruža granicu između prijema i obrade.

Obezbedite idempotentnu obradu

Idempotentnost znači da ponovna obrada istog događaja ne ponavlja njegove poslovne efekte. Pošiljalac može ponoviti pokušaj nakon što je vaš server prihvatio događaj, ali je potvrda prijema izgubljena. Zato dupliranu isporuku treba rutinski testirati.

  • Koristite dokumentovani identifikator događaja kao ključ za uklanjanje duplikata kada je dostupan, u okviru odgovarajućeg provajdera ili naloga.
  • Ako identifikator ne postoji, osmislite složeni ključ od stabilnih polja događaja i testirajte rizik od kolizija.
  • Atomski nametnite jedinstvenost u skladištu; odvojena sekvenca „proveri, pa umetni“ može doći u sukob pri konkurentnoj isporuci.
  • Zaštitite i naknadne radnje. Duplirani događaj ne sme poslati još jedno obaveštenje o isporuci niti ponoviti finansijsku radnju.
  • Period čuvanja podesite prema ponašanju provajdera pri ponovnoj reprodukciji i zahtevima za oporavak, umesto da zapise za uklanjanje duplikata odmah brišete.

Nemojte pretpostaviti hronološki redosled pristizanja

Nemojte prepisati trenutno stanje pošiljke samo zato što je zahtev poslednji stigao. Uporedite značenje događaja, vremenske oznake i sve dokumentovane informacije o redosledu. Kasne kontrolne tačke sačuvajte u istoriji bez automatskog vraćanja prikazanog statusa unazad. Istovremeno, dozvolite dokumentovane ispravke: kruto pravilo da se isporučene pošiljke nikada ne mogu promeniti može sakriti legitimne izuzetke ili ispravljene informacije.

Praktična kontrolna lista za podešavanje

1. Potvrdite ugovor sa provajderom

Pre implementacije potvrdite zahteve za registraciju, podržane događaje, oblik sadržaja, autentifikaciju, očekivanja u vezi sa odgovorima, vremenska ograničenja, ponašanje pri ponovnim pokušajima i API limite. Proverite da li obaveštenje predstavlja snimak ili inkrementalnu promenu, da li isporuke mogu sadržati više zapisa i da li pretplata šalje početno stanje.

Za integraciju sa 17TRACK počnite od zvanične stranice Tracking API i API dokumentacije. Koristite dokumentaciju specifičnu za provajdera da utvrdite polja zahteva i zahteve povratnog poziva; generički sadržaj iznad nije zamena za nju. Potvrdite uslove pristupa i operativna ograničenja integracije koju nameravate da postavite.

2. Zaštitite prijemnu krajnju tačku

Koristite HTTPS i mehanizam autentifikacije koji provajder dokumentuje. Ako koristi HMAC potpis, proverite tačno potpisani ulaz koji navodi. Kada se potpisuju sirovi bajtovi zahteva, raščlanjivanje i ponovna serijalizacija JSON-a pre provere mogu promeniti te bajtove i učiniti potpis nevažećim. Za vrednosti potpisa izvedene iz tajne koristite poređenje u konstantnom vremenu.

Ako su dostupne potpisane vremenske oznake ili identifikatori isporuke, primenite dokumentovane kontrole ponovne reprodukcije. Važeći potpis potvrđuje autentičnost poruke, ali sam po sebi ne dokazuje da je ona sveža. Tajne čuvajte izvan URL-ova i dnevnika aplikacije, podržite rotaciju tajni i ograničite veličinu zahteva. Dozvoljena lista IP adresa može biti dodatna kontrola kada postoje održavani opsezi adresa, ali nije zamena za autentifikaciju poruke.

3. Razdvojite prijem od poslovne obrade

Sačuvajte dovoljno informacija za praćenje i bezbednu ponovnu reprodukciju prihvaćenog događaja. Radnici u redu čekanja treba da normalizuju ažuriranje, primene pravila prelaza stanja i zabeleže rezultate radnji. Poslove koji više puta ne uspeju stavite u radni tok sa mrtvim slovima koji se može pregledati, umesto da ih ponavljate zauvek. Ograničite pristup i period čuvanja jer sadržaj praćenja može sadržati informacije povezane sa korisnicima.

4. Testirajte putanje grešaka pre pokretanja

  • Pošaljite isti događaj dva puta, uključujući konkurentne isporuke.
  • Isporučite stariju kontrolnu tačku nakon novije.
  • Simulirajte nedostupnost reda čekanja i pad radnika nakon prijema.
  • Testirajte nevažeću autentifikaciju, neispravan JSON i prevelike zahteve.
  • Testirajte nepoznate pošiljke, nedostajuća opciona polja i dodata polja.
  • Proverite da jedna isporučena pošiljka ne završava podeljenu porudžbinu.
  • Ponovo reprodukujte događaj nakon oporavka i potvrdite da obaveštenja ostaju bez duplikata.

Budite tolerantni prema dodatnim poljima kada je to bezbedno, ali nemojte neprimetno reinterpretirati nepoznate vrednosti statusa. Sačuvajte sirovu vrednost i usmerite neprepoznate slučajeve kroz definisani rezervni ili proces pregleda.

Gde poling i dalje ima svoju svrhu

Poling je koristan za početnu sinhronizaciju, oporavak nakon prekida i proveru pošiljaka čija očekivana ažuriranja nisu stigla. Međutim, sama tišina nije dokaz neispravnosti webhook-a: paket zaista možda nema nova skeniranja. Uskladite podatke sa trenutnim stanjem ili istorijom API-ja, umesto da pretpostavite da svaka tiha pošiljka zahteva upozorenje.

Za planiranje obima, pojednostavljeni model polinga je requests per hour ≈ active shipments × polls per shipment per hour, uz pretpostavku jedne pošiljke po zahtevu. Grupne krajnje tačke menjaju taj proračun. Kao ilustracija, 1.000 pošiljaka proverenih četiri puta na sat generiše 4.000 zahteva na sat pre ponovnih pokušaja; to je aritmetika, a ne kvota provajdera niti procena cene.

Provere zakazujte prema aktivnosti pošiljke i poslovnom riziku, poštujte ograničenja brzine i dodajte nasumično kašnjenje kako se poslovi ne bi svi pokrenuli istovremeno. Za greške koje se mogu ponoviti koristite ograničeno eksponencijalno čekanje i poštujte primenljive smernice servera. Nemojte iznova ponavljati trajne greške akreditiva ili validacije bez njihovog ispravljanja.

Praktičan hibridni sistem koristi webhook-ove za rutinska ažuriranja, a ciljane API upite za sumnjive praznine. Zasebno pratite greške prijema, starost reda čekanja, greške obrade, stope duplikata i neusklađenosti pri usaglašavanju. Kada su vremenske oznake pouzdane, razlikujte kašnjenje izvornih podataka od kašnjenja isporuke webhook-a i interne obrade.

Česta pitanja

Da li su webhook-ovi za praćenje u realnom vremenu?

Mogu smanjiti kašnjenje izazvano čekanjem sledećeg ciklusa polinga. Ne garantuju trenutna skeniranja kod prevoznika niti trenutna ažuriranja izvora. Svežina od početka do kraja obuhvata izveštavanje prevoznika, obradu provajdera, isporuku zahteva i samu vašu aplikaciju.

Mogu li potpuno obustaviti poling nakon omogućavanja webhook-ova?

Moguće, ako funkcije provajdera za oporavak i vaši poslovni zahtevi to čine prihvatljivim. Za operativno važne zapise o pošiljkama zadržite metod usklađivanja. On može biti ciljan, umesto neprekidnog polinga svake pošiljke.

Šta se dešava ako je moja webhook krajnja tačka van mreže?

Oporavak zavisi od dokumentovane politike ponovnih pokušaja pošiljaoca. Nemojte pretpostaviti da se pokušaji nastavljaju neograničeno. Nakon obnavljanja krajnje tačke pregledajte neuspele isporuke, koristite podržane alate za ponovnu isporuku i uskladite pogođene pošiljke putem API-ja gde je to moguće.

Da li svaki webhook treba da pokrene obaveštenje korisniku?

Ne. Događaj može biti duplikat, istorijska kontrolna tačka ili ažuriranje koje ne menja status vidljiv korisniku. Obaveštenja pokrećite na osnovu poslovnih prelaza bez duplikata, uz pravila za izuzetke i ispravke.

Da li uspešan HTTP odgovor znači da je ažuriranje pošiljke završeno?

Ne nužno. U asinhronom dizajnu to znači da je prijemnik prihvatio događaj prema dogovorenom ugovoru. Završetak obrade i ishode naknadnih obaveštenja pratite odvojeno kako prihvaćeni zahtev ne bi prikrio neuspešan tok rada.

Izvori

Loading