Webhooks: קבלת אירועים בלי להכפיל פעולות

בקצרה

Webhook מודיע על אירוע באמצעות HTTP. הוא אינו מבטיח באופן כללי מסירה מיידית, סדר או השפעה עסקית בדיוק פעם אחת.

מסדרון שרתים ורשתות מאובטח ללא אנשים
במאמר זה

הפרידו קבלה מהשלמת עיבוד

ההבטחות תלויות בספק. Stripe מתעדת כפילויות אפשריות והיעדר סדר מובטח. תגובת HTTP מוצלחת צריכה להתאים לקבלה עמידה או לעיבוד הנדרש, לא רק להגעת בקשה לזיכרון.

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

בנו קבלה שניתנת לבדיקה

  • בדקו HTTPS, חתימה והגנת שחזור לפי הפרוטוקול. Stripe בודקת חתימה על הגוף הגולמי; שינוי JSON לפני כן עלול לפגוע בבדיקה.
  • שמרו אירוע או עיבוד באופן עמיד לפני האישור המתאים. הבדילו מזהה מסירה, מזהה אירוע ומפתח אידמפוטנטיות של הפעולה.
  • בדקו כפילויות, סדר שגוי, הפסקת עובד והפעלה מחדש. קראו מצב מוסמך של האובייקט אם אירוע ישן אינו מאפשר החלטה בטוחה.

ארגנו שחזור והתאמה

תעדו ניסיונות, זמנים, אירועים שלא עובדו והתאמה מול הספק. אישור מהיר עלול להסתיר כשל מאוחר. עקבו גם אחר הפעולה הסופית וצמצמו סודות ומידע אישי ביומנים.

מקורות ראשוניים

טיפול בטוח ב-webhooks חוזרים.

הודעה עשויה לחזור על עצמה לאחר פסק זמן או תגובה שאבדה. אמינות תלויה באימות מקור, מזהה אירוע ועיבוד המפריד בין הודעה חדשה להודעה כפולה.

  • אימות כל בקשה באמצעות מנגנון הספק.
  • בדיקת ניסיונות חוזרים, כפילויות ושינוי סדר הגעה.
  • אישור עקבי לאחר עיבוד או תור עמיד.

מקור ראשוני: IETF RFC 9457 — Problem Details for HTTP APIs. שיטה קשורה: קריאת המדריך המעשי.