Webhooks
מדריך זה מתעד איך ShipOS משתמש ב-webhooks לתקשורת בזמן אמת עם חנויות WooCommerce, כולל כתובות URL של webhooks, פורמטי payload והזרקת שדה is_virtual.
סקירה
Webhooks הם קריאות HTTP שמודיעות ל-ShipOS כשאירועים מתרחשים בחנות WooCommerce שלך. כשהזמנה נוצרת, מעודכנת או נמחקת, WooCommerce שולח בקשת POST ל-ShipOS עם נתוני ההזמנה, מה שמאפשר ל-ShipOS להישאר מסונכרן בזמן אמת.
Webhooks של WooCommerce
ShipOS רושם שלושה webhooks עם חנות WooCommerce בזמן תהליך ההגדרה:
| Webhook | אירוע | מטרה |
|---|---|---|
| הזמנה נוצרה | woocommerce_order_created |
סנכרון הזמנות חדשות ל-ShipOS ליצירת משלוחים |
| הזמנה עודכנה | woocommerce_order_updated |
עדכון נתוני הזמנה כששינויים נעשים (כתובת, פריטים, סטטוס) |
| הזמנה נמחקה | woocommerce_order_deleted |
הסרת הזמנות שנמחקו מ-ShipOS |
פורמט URL של Webhook
נקודות קצה webhook של ShipOS עוקבות אחרי התבנית:
https://app.shipos.co.il/api/wp/webhooks/{wp_site_id}/order_created
https://app.shipos.co.il/api/wp/webhooks/{wp_site_id}/order_updated
https://app.shipos.co.il/api/wp/webhooks/{wp_site_id}/order_deleted
{wp_site_id}הוא המזהה הייחודי של חנות WooCommerce במסד הנתונים של ShipOS (מטבלתwp_sites).
הערה: נקודות קצה webhook אלה לא דורשות middleware אימות. ה-
wp_site_idב-URL מזהה את החנות, ה-payload של ה-webhook מאומת באמצעות סוד ה-webhook של WooCommerce.
הזרקת שדה is_virtual
תוסף WooCommerce של ShipOS מתאים את ה-payload של ה-webhook על ידי הזרקת שדה is_virtual לכל פריט בהזמנה. זה קריטי לקביעה אם הזמנה דורשת משלוח פיזי.
איך זה עובד
- תוסף WooCommerce מתחבר לפילטר
woocommerce_webhook_payload. - לכל פריט בהזמנה, הוא בודק אם המוצר וירטואלי.
- הוא מוסיף
"is_virtual": trueאו"is_virtual": falseלכל פריט ב-payload.
למה זה חשוב
- כל הפריטים וירטואליים: ההזמנה לא דורשת משלוח פיזי (למשל מוצרים דיגיטליים, כרטיסי מתנה).
- חלק מהפריטים וירטואליים: רק פריטים פיזיים צריך לשלוח; פריטים וירטואליים מוחרגים מחישובי משקל/חבילות.
- אף פריט לא וירטואלי: משלוח סטנדרטי חל על כל הפריטים.
לוגיקת עיבוד
IF all line_items have is_virtual = true
→ Skip shipment creation (no physical delivery needed)
ELSE
→ Create shipment for physical items only
⚠️ אזהרה: אם שדה
is_virtualחסר מ-payload ה-webhook, ShipOS מתייחס לכל הפריטים כפיזיים. ודאו שתוסף WooCommerce מותקן ופעיל כדי ששדה זה יוזרק.
רישום Webhook
רישום אוטומטי
Webhooks נרשמים אוטומטית בזמן אשף ההגדרה של תוסף ShipOS:
- התוסף מתחיל OAuth עם WooCommerce לקבלת consumer key/secret.
- באמצעות WooCommerce REST API, ShipOS רושם את שלושת ה-webhooks.
- כל webhook מוגדר עם:
- נושא:
order.created,order.updated,order.deleted - URL מסירה:
https://app.shipos.co.il/api/wp/webhooks/{wp_site_id}/{event} - סוד: סוד משותף לאימות payload
- נושא:
רישום מחדש ידני
אם webhooks מפסיקים לעבוד (למשל אחרי העברת אתר), רשמו אותם מחדש:
- בלוח הבקרה של ShipOS (בתוך ניהול WP), עברו להגדרות.
- לחצו רישום מחדש של Webhooks.
- ShipOS ימחק webhooks ישנים וייצור חדשים.
אימות Webhook
WooCommerce חותם payloads של webhook עם חתימת HMAC-SHA256 באמצעות סוד ה-webhook.
כותרת אימות
X-WC-Webhook-Signature: base64(hmac-sha256(payload, secret))
לוגיקת אימות
$signature = base64_encode(
hash_hmac('sha256', $payload_body, $webhook_secret, true)
);
if ($signature !== $received_signature) {
// Reject the request
return response('Invalid signature', 401);
}
הערה: ShipOS מטפל באימות חתימה אוטומטית. מידע זה מיועד למפתחים שבונים אינטגרציות מותאמות.
מסירת Webhook וניסיונות חוזרים
ל-WooCommerce יש לוגיקת ניסיון חוזר מובנית למסירות webhook כושלות:
| ניסיון | עיכוב |
|---|---|
| ניסיון 1 | 1 דקה |
| ניסיון 2 | 5 דקות |
| ניסיון 3 | 30 דקות |
| ניסיון 4 | 1 שעה |
| ניסיון 5 | 6 שעות |
אחרי 5 ניסיונות כושלים, ה-webhook מסומן כמושבת וצריך להיות מופעל מחדש ידנית.
💡 טיפ: אם webhooks נכשלים באופן עקבי, בדקו ששרת ShipOS נגיש מחנות WooCommerce. סיבות נפוצות כוללות כללי חומת אש, בעיות תעודת SSL או חסימות Cloudflare.
פתרון בעיות Webhooks
| בעיה | פתרון |
|---|---|
| הזמנות לא מסתנכרנות | בדקו סטטוס webhook ב-WooCommerce > הגדרות > מתקדם > Webhooks |
| Webhook מציג "Disabled" | רשמו מחדש webhooks מהגדרות ShipOS |
| כשלון מסירת webhook בלוגים של WC | ודאו ש-API של ShipOS נגיש; בדקו חומת אש/SSL |
| עיבוד הזמנות כפול | יישמו בדיקות idempotency; ודאו ש-webhook לא רשום פעמיים |
שדה is_virtual חסר |
ודאו שתוסף WooCommerce של ShipOS פעיל |
| URL של webhook מחזיר 404 | ודאו ש-wp_site_id נכון; בדקו אם החנות קיימת ב-ShipOS |
צעדים הבאים
- נקודות קצה משלוחים - יצירת משלוחים מנתוני webhook
- סקירת API - אימות ושימוש כללי
- נקודות קצה רישיונות - ניהול רישיונות