Следење на пратки преку Webhook: Како функционираат webhook-ите за следење наспроти polling (payload-и, повторни обиди и поставување)
Вебхуковите за следење на пратки испраќаат HTTP барање до вашата апликација кога услугата за следење има ново ажурирање за пријавување. Анкетирањето функционира во спротивна насока: вашата апликација постојано ги бара најновите информации за следење. За програмери кои ги поврзуваат податоците за пратки со систем за управување со нарачки, продавница или услуга за известување на клиенти, вебхуковите обично се подобар примарен механизам за ажурирање кога се поддржани; насоченото анкетирање може да помогне при обновување на пропуштени ажурирања и усогласување на записите.

Ниту еден од методите не го тера превозникот порано да го скенира пакетот. И двата зависат од тоа кога изворот на податоци за следење ќе добие и објави нови информации. Практичната разлика е во тоа како вашата апликација дознава за тие информации, колкав сообраќај од барања генерира и што се случува кога испораката ќе не успее.
Вебхукови за следење наспроти анкетирање: оперативната разлика
Ова се шаблони за интеграција, а не конкурентни бази на податоци за следење. Превозникот или платформата за следење може да понуди еден од овие шаблони или двата, со различни услови за пристап. Споредете го однесувањето на конкретниот API што планирате да го користите, наместо да претпоставувате дека сите услуги со вебхукови ги нудат истите гаранции.
| Точка на одлука | Вебхукови | Анкетирање |
|---|---|---|
| Кој го започнува барањето? | Услугата за следење ја повикува вашата крајна точка. | Вашата апликација го повикува API за следење. |
| Одложување на ажурирањето | Зависи од свежината на изворот, генерирањето на настанот, испораката и обработката. | Исто така зависи од тоа кога ќе се изврши вашето следно закажано барање. |
| Обем на барања | Го определуваат испратените ажурирања, групирањето и повторните обиди за испорака. | Го определуваат обемот на пратки, зачестеноста на анкетирањето и групирањето. |
| Инфраструктура | Потребен е достапен примач и безбедно постапување со влезните барања. | Потребни се распоредувач, излезен API пристап и справување со ограничувања на стапката. |
| Обнова од грешки | Зависи од повторните обиди на давателот и од вашиот сопствен процес за усогласување. | Зависи од последователните барања и од тоа дали API го задржува потребниот запис. |
Изберете ги вебхуковите прво кога навремените ажурирања се важни и вашиот тим може да управува со сигурен примач. Изберете го анкетирањето прво кога влезните крајни точки се непрактични, обемот на пратки е умерен или изворот не обезбедува соодветни вебхукови. Користете хибриден дизајн кога пропуштените ажурирања би ја нарушиле комуникацијата со клиентите или работењето и кога API поддржува усогласување.
Не претпоставувајте дека вебхуковите се поевтини. Претплатите, регистрацијата за следење, повиците кон API, испораката на настани и инфраструктурата може да се наплаќаат различно. Споредете ги реалните комерцијални услови и очекуваниот обем на работа, наместо помалиот број барања да го сметате за доказ за пониска сметка.
Што се случува помеѓу скенирањето од превозникот и вашата апликација?
- Идентификувајте ја пратката. Поврзете го бројот за следење, информациите за превозникот каде што се потребни и внатрешната референца на пратката. Некои услуги бараат регистрација пред да започне следењето.
- Конфигурирајте ја испораката на настани. Наведете HTTPS URL за повратен повик и изберете ги сите поддржани претплати за настани.
- Изворот ги прима информациите за следење. Скенирање од превозникот или промена на статусот станува достапна за услугата за следење.
- Услугата испраќа вебхук. Барањето може да содржи целосна снимка на следењето, една контролна точка или само референца за која е потребно пребарување преку API.
- Вашиот примач го потврдува и го складира. Автентицирајте го барањето, проверете ја неговата структура и трајно запишете го или ставете го на ред настанот.
- Работник ги ажурира деловните системи. Нормализирајте ги статусите, ажурирајте ги записите за пратки и активирајте ги само дејствата што сè уште се соодветни.
Испораката на вебхук не е исто што и физичката испорака. Тоа е порака за информациите за пратката. Исто така, успешниот одговор на вебхук не докажува дека е испратена е-пошта или дека е ажуриран записот за нарачката; тоа се резултати од последователна обработка кои бараат сопствено следење.
Читање на податоци од вебхук за следење
Следниот JSON е илустративен дизајн на интеграција, а не 17TRACK payload или универзална шема. Реалните имиња на полињата, кодовите на статусите, форматите на временските ознаки и идентификаторите на настаните мора да потекнуваат од документацијата на избраниот давател.
{
"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"
}
}
}Разделете три часовници во вашиот модел на податоци: кога се случил настанот со пратката, кога давателот ја генерирал пораката и кога вашата апликација ја примила. Одложена контролна точка може да пристигне по понова. На временската ознака без отстапување исто така ѝ треба експлицитно толкување; немојте тивко да ја третирате секоја временска ознака на локалното време на превозникот како UTC.
Чувајте ја вашата внатрешна референца на пратката заедно со идентификаторите на давателот. Само бројот за следење можеби не е доволен како траен глобален идентификатор, особено во различни контексти на превозници. За поделени нарачки, одржувајте записи на ниво на пратка наместо статусот „испорачано“ на една пратка да ја означи целата нарачка како завршена.
Зачувајте ги оригиналниот статус и описот заедно со вашиот нормализиран деловен статус. Вашата апликација може да мапира неколку пораки од превозникот во „во транзит“, но персоналот за поддршка сепак може да ја има потреба од оригиналната контролна точка за да го разбере доцнењето. Третирајте ги проценетите датуми на испорака како проценки и разликувајте поле што недостасува од експлицитна инструкција за бришење на постоечка вредност.
Повторни обиди, потврди и дупликатни настани
Испораката на вебхук може да не успее поради истекување на времето, прекини во мрежата, грешки при автентикација или недостапен примач. Давателот може да направи повторен обид, но не постои универзален распоред за повторување, период на задржување или максимален број обиди. Потврдете кои одговори активираат нов обид, како се постапува со пренасочувањата и дали е достапна рачна повторна испорака.
Потврдете по трајното прифаќање
Патеката на барањето нека биде кратка: потврдете го барањето, зачувајте ја прифатената работа и вратете го успешниот одговор што го бара давателот. Испраќајте е-пошта и извршувајте побавни деловни операции асинхроно. Спецификацијата HTTP го дефинира 202 Accepted како прифаќање за обработка, а не како завршена обработка, но вашиот давател може да бара различен успешен одговор. Следете го неговиот договор за вебхукови.
Враќањето успех пред да зачувате нешто носи ризик од губење на ажурирањето ако процесот се урне. Чекањето на секое последователно дејство носи ризик од истекување на времето и нов обид за испорака. Трајно сандаче или ред обезбедува граница помеѓу приемот и обработката.
Направете ја обработката идемпотентна
Идемпотентност значи дека повторната обработка на истиот настан не ги повторува неговите деловни ефекти. Испраќачот може да направи повторен обид откако вашиот сервер прифатил настан, но потврдата била изгубена. Затоа, дупликатната испорака треба да биде редовен тестовен случај.
- Користете документиран идентификатор на настанот како клуч за отстранување дупликати кога е достапен, со опфат до соодветниот давател или сметка.
- Ако не постои идентификатор, дизајнирајте составен клуч од стабилни полиња на настанот и тестирајте ги ризиците од колизија.
- Атомски наметнете уникатност во складиштето; одделна низа „провери, па вметни“ може да се судри при истовремена испорака.
- Заштитете ги и последователните дејства. Дупликатен настан не смее да испрати ново известување за испорака или да повтори финансиско дејство.
- Поставете задржување според однесувањето на давателот при повторно пуштање и вашите барања за обновување, наместо веднаш да ги бришете записите за отстранување дупликати.
Не претпоставувајте хронолошки пристигнувања
Не ја препишувајте моменталната состојба на пратката само затоа што барањето пристигнало последно. Споредете го значењето на настанот, временските ознаки и сите документирани информации за редоследот. Зачувајте ги доцните контролни точки во историјата без автоматски да го враќате прикажаниот статус наназад. Истовремено, дозволете документирани исправки: круто правило дека испорачаните пратки никогаш не можат да се променат може да скрие легитимни исклучоци или коригирани информации.
Практична листа за поставување
1. Потврдете го договорот со давателот
Пред имплементацијата, потврдете ги барањата за регистрација, поддржаните настани, обликот на податоците, автентикацијата, очекувањата за одговори, истекувањата на времето, однесувањето при повторни обиди и ограничувањата на API. Проверете дали известувањето претставува снимка или постепена промена, дали испораките може да содржат повеќе записи и дали претплатувањето испраќа почетна состојба.
За интеграција со 17TRACK, започнете со официјалната страница на Tracking API и API документацијата. Користете ја документацијата специфична за давателот за да ги утврдите полињата на барањето и барањата за повратен повик; генеричкиот payload погоре не е замена. Потврдете ги условите за пристап и оперативните ограничувања за интеграцијата што планирате да ја објавите.
2. Обезбедете ја приемната крајна точка
Користете HTTPS и механизмот за автентикација што го документира давателот. Ако користи HMAC потпис, потврдете го точно потпишаниот влез што го наведува. Кога се потпишуваат необработени бајтови од барањето, парсирањето и повторното сериализирање на JSON пред проверката може да ги промени тие бајтови и да го поништи потписот. Користете споредба во константно време за вредности на потписи изведени од тајни.
Ако се достапни потпишани временски ознаки или идентификатори на испорака, применете ги документираните контроли против повторување. Валиден потпис ја автентицира пораката, но сам по себе не утврдува дека е свежа. Чувајте ги тајните надвор од URL-адресите и дневниците на апликацијата, поддржувајте ротација на тајни и ограничете ги големините на барањата. Дозволувањето IP-адреси може да биде дополнителна контрола каде што постојат одржувани опсези на адреси, но не и замена за автентикација на пораката.
3. Одделете го приемот од деловната обработка
Зачувајте доволно информации за следење и безбедно повторно пуштање на прифатен настан. Работниците во редот треба да го нормализираат ажурирањето, да применат правила за премин на состојби и да ги запишат резултатите од дејствата. Повторно неуспешната работа ставете ја во прегледлив процес со мртво писмо, наместо да повторувате засекогаш. Ограничете го пристапот и периодот на задржување бидејќи податоците за следење може да содржат информации поврзани со клиентите.
4. Тестирајте ги патеките на грешки пред пуштање
- Испратете го истиот настан двапати, вклучително и истовремени испораки.
- Испратете постара контролна точка по понова.
- Симулирајте недостапност на редот и пад на работникот по приемот.
- Тестирајте неважечка автентикација, неисправен JSON и преголеми барања.
- Тестирајте непознати пратки, полиња што недостасуваат и додадени полиња.
- Потврдете дека една испорачана пратка не завршува поделена нарачка.
- Повторно пуштете настан по обновувањето и потврдете дека известувањата остануваат без дупликати.
Бидете толерантни кон додадените полиња каде што е безбедно, но не ги толкувајте тивко непознатите вредности на статусот. Зачувајте ја необработената вредност и насочете ги непрепознаените случаи низ дефиниран резервен или процес за преглед.
Каде анкетирањето сè уште има смисла
Анкетирањето е корисно за почетна синхронизација, обновување по прекин и проверка на пратки чии очекувани ажурирања не пристигнале. Сепак, самата тишина не е доказ за неуспех на вебхукот: пратката можеби навистина нема нови скенирања. Усогласете се со моменталната состојба или историјата на API, наместо да претпоставувате дека секоја тивка пратка бара известување.
За планирање на обемот, поедноставен модел на анкетирање е requests per hour ≈ active shipments × polls per shipment per hour, под претпоставка дека едно барање се однесува на една пратка. Крајните точки за групирање ја менуваат пресметката. Како илустрација, 1.000 пратки проверувани четири пати на час генерираат 4.000 барања на час пред повторните обиди; ова е аритметика, а не квота или проценка на цената од давателот.
Закажувајте проверки според активноста на пратката и деловниот ризик, почитувајте ги ограничувањата на стапката и додајте случајно отстапување за задачите да не започнуваат сите истовремено. За грешки за кои е дозволен повторен обид, користете ограничено постепено зголемување на интервалот и почитувајте ги применливите упатства на серверот. Не повторувајте постојано трајни грешки со акредитиви или валидација без да ги исправите.
Практичен хибриден систем користи вебхукови за рутински ажурирања и насочени API читања за сомнителни празнини. Одделно следете ги неуспесите при прием, староста на редот, неуспесите при обработка, стапките на дупликати и несовпаѓањата при усогласување. Кога временските ознаки се доверливи, разликувајте го доцнењето на изворните податоци од доцнењето при испорака на вебхукот и внатрешното доцнење при обработка.
ЧПП
Дали вебхуковите за следење се во реално време?
Тие можат да го намалат доцнењето предизвикано од чекањето на следниот циклус на анкетирање. Тие не гарантираат непосредни скенирања од превозникот или моментални ажурирања на изворот. Свежината од крај до крај ги вклучува известувањето од превозникот, обработката од давателот, испораката на барањето и вашата сопствена апликација.
Може ли целосно да престанам со анкетирање откако ќе ги овозможам вебхуковите?
Можно е, ако функциите за обновување на давателот и вашите деловни барања го прават тоа прифатливо. За оперативно важни записи за пратки, задржете метод за усогласување. Тој може да биде насочен, наместо постојано анкетирање на секоја пратка.
Што се случува ако мојата крајна точка за вебхук е офлајн?
Обновувањето зависи од документираната политика на испраќачот за повторни обиди. Не претпоставувајте дека повторните обиди продолжуваат неограничено. По обновувањето на крајната точка, проверете ги неуспешните испораки, користете ги поддржаните алатки за повторна испорака и усогласете ги засегнатите пратки преку API каде што е достапно.
Дали секој вебхук треба да активира известување до клиентот?
Не. Настанот може да биде дупликат, историска контролна точка или ажурирање што не го менува статусот видлив за клиентот. Активирајте известувања од дедуплицирани деловни премини, со правила за исклучоци и исправки.
Дали успешниот HTTP одговор значи дека ажурирањето на пратката е завршено?
Не нужно. Во асинхрон дизајн, тоа значи дека примачот го прифатил настанот според договорениот договор. Следете го завршувањето на обработката и резултатите од последователните известувања одделно, за прифатеното барање да не скрие неуспешен тек на работа.
Извори
- RFC 9110: HTTP Semantics — семантика на HTTP одговорите, вклучително и прифаќањето за обработка и Retry-After.
- RFC 2104: HMAC—Keyed-Hashing for Message Authentication — конструкцијата HMAC наведена во упатствата за проверка на потпис.
- GitHub Docs: Best practices for using webhooks — општи инженерски упатства за HTTPS, тајни, асинхроно постапување и идентификација на испораките; неговите правила специфични за услугата не го утврдуваат однесувањето на давателите на услуги за пратки.
- 17TRACK Tracking API — официјална почетна точка за процена на интеграција за следење со 17TRACK.
- 17TRACK API documentation — референца специфична за давателот за барањата за имплементација.


