Webhook מודיע למערכת שלכם שקרה אירוע במערכת אחרת. לדוגמה, תשלום אושר או לקוח חדש נוצר. אין להניח שהאירוע מגיע פעם אחת, מיד ובסדר הנכון. חיבור אמין נבנה סביב ההנחה שיכולים להיות עיכובים, שליחות חוזרות ותקלות זמניות.
מאמתים את מקור ההודעה
כתובת Webhook פתוחה יכולה לקבל בקשות מכל גורם. בדקו את מנגנון החתימה של הספק ואמתו את גוף הבקשה לפי התיעוד שלו. כאשר נדרשת בדיקה על הגוף הגולמי, אל תשנו אותו לפני האימות.
שמרו סודות בשרת והימנעו מהדפסתם. אם חתימה לא תקינה, אל תבצעו פעולה עסקית על סמך ההודעה.
מזהה אירוע מאפשר פעולה בטוחה
שמרו מזהה אירוע שקיבלתם ורשומת עיבוד. לפני יצירת מסמך או הודעה, בדקו האם האירוע כבר טופל. רצוי לאכוף ייחודיות גם במאגר, כדי ששתי בקשות מקבילות לא יעברו את אותה בדיקה.
המטרה היא לא להתעלם מכל כפילות באופן גורף, אלא להחזיר תוצאה עקבית לאותה פעולה.
מפרידים קבלה מעיבוד ממושך
אם הפעולה כוללת כמה מערכות, אפשר לשמור את האירוע ולהעביר אותו לתור. אישור הקבלה צריך להישלח רק לאחר שהאירוע נקלט בצורה בטוחה. משימה שנשמרה בזיכרון בלבד עלולה להיעלם בהפעלת שרת מחדש.
התור צריך לכלול מצב עיבוד, מספר ניסיונות ודרך למצוא משימות שנכשלו.
לא מסתמכים רק על סדר ההגעה
עדכון חדש עשוי להגיע לפני עדכון ישן. השתמשו בגרסה, זמן או בדיקה מול מקור האמת לפי תיעוד הספק. למשל, לפני סימון תשלום אפשר לאמת את מצב העסקה העדכני.
הגדירו אילו שגיאות זמניות ואילו דורשות בדיקה ידנית. החזרת תשובת הצלחה על אירוע שלא נשמר עלולה למנוע מהספק ניסיון נוסף.
- אימות החתימה לפני פעולה.
- מזהה ייחודי ומניעת פעולה כפולה.
- שמירה בטוחה ותיעוד מצב.
- מסלול לשחזור אירוע שנכשל.
בדיקת תקלה היא חלק מהמסירה
שלחו אותו אירוע פעמיים, עצרו זמנית את מערכת היעד ובדקו אירוע עם שדה חסר. ודאו שהתוצאה העסקית מופיעה פעם אחת ושהכשל ניתן להסבר.
הוסיפו ניטור לכמות אירועים, זמני עיבוד ושגיאות. תיעוד טוב מאפשר לפתור תקלה בלי לנחש אם הודעה התקבלה או נעלמה.
שאלות נפוצות
האם Webhook מבטיח זמן אמת?
לא. יש תלות בספק, ברשת ובתהליך העיבוד. צריך לתכנן גם עיכוב וניסיון חוזר.
למה אותה הודעה מגיעה יותר מפעם אחת?
ספקים עשויים לנסות שוב אם לא התקבל אישור, גם כשהפעולה עצמה הצליחה. לכן נדרשת מניעת כפילות בצד המקבל.
מקורות להעמקה
המדריך מסביר עקרונות ותהליכי עבודה. פרטי המימוש נקבעים לפי המערכות והצרכים של העסק. דוגמאות להמחשה אינן תוצאות של לקוחות.