בית תיעוד API

תיעוד API

Amit Matat
על ידי Amit Matat
5 מאמרים

סקירת API

סקירת API מדריך זה מספק סקירה של API של ShipOS, כולל אימות, פורמטי בקשה/תגובה והנחיות שימוש כלליות. כתובת בסיס כל בקשות API נשלחות ל: https://app.shipos.co.il/api/ אימות API של ShipOS משתמש בשתי שיטות אימות בהתאם לנקודת הקצה: 1. אימות מבוסס רישיון (נקודות קצה של תוסף) רוב נקודות קצה של משלוח מאמתות באמצעות שילוב של: - license_key - מפתח הרישיון שלך ב-ShipOS - domain - הדומיין של החנות שלך - token - טוקן Bearer שהונפק בזמן רישום התוסף כללו אותם בגוף הבקשה (בקשות POST) או כפרמטרי שאילתה (בקשות GET). דוגמה: curl -X POST https://app.shipos.co.il/api/shipping/open_new_order \ -H "Authorization: Bearer YOUR_TOKEN" \ -d "license_key=YOUR_LICENSE_KEY" \ -d "domain=yourstore.com" \ -d "version=3.1.1" 2. אימות טוקן Sanctum (נקודות קצה של לוח בקרה) נקודות קצה שדורשות אימות ברמת משתמש משתמשות בטוקני Bearer של Laravel Sanctum: curl -X GET https://app.shipos.co.il/api/licenses \ -H "Authorization: Bearer YOUR_SANCTUM_TOKEN" \ -H "Accept: application/json" הערה: טוקני Sanctum מתקבלים דרך נקודת קצה ההתחברות ומשמשים בדרך כלל את לוח הבקרה של ShipOS (Vue SPA), לא אינטגרציות חיצוניות. פורמט בקשה סוג תוכן בקשות API משתמשות ב-form data (application/x-www-form-urlencoded) או multipart/form-data לבקשות POST. curl -X POST https://app.shipos.co.il/api/shipping/open_new_order \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "license_key=YOUR_LICENSE_KEY&domain=yourstore.com&order_id=1234" פרמטרים נדרשים נפוצים רוב נקודות קצה של משלוח דורשות פרמטרי בסיס אלה: | פרמטר | סוג | תיאור | |--------|------|-------| | license_key | string | מפתח הרישיון שלך ב-ShipOS | | domain | string | הדומיין של החנות (למשל yourstore.com) | | token | string | טוקן אימות (או השתמשו בכותרת Authorization) | | version | string | גרסת תוסף/API (למשל 3.1.1) | פורמט תגובה כל התגובות מוחזרות בפורמט JSON. תגובה מוצלחת { "success": true, "data": { "order_id": "12345", "tracking_number": "ABC123456", "tracking_url": "https://tracking.provider.co.il/ABC123456", "status": "created" } } תגובת שגיאה { "success": false, "message": "License key is invalid or expired", "errors": { "license_key": ["The license key field is required."] } } קודי סטטוס HTTP | קוד | משמעות | |------|-------| | 200 | הצלחה | | 201 | משאב נוצר בהצלחה | | 400 | בקשה שגויה (פרמטרים לא תקינים) | | 401 | לא מאומת (טוקן חסר או לא תקין) | | 403 | אסור (טוקן תקין אבל הרשאות לא מספיקות) | | 404 | משאב לא נמצא | | 422 | שגיאת אימות (בדקו שדה errors) | | 429 | חריגה ממגבלת בקשות | | 500 | שגיאת שרת פנימית | מגבלות בקשות כדי להבטיח יציבות שירות, ה-API מכיל מגבלות בקשות: | סוג מגבלה | סף | |-----------|-----| | לכל רישיון לדקה | 60 בקשות | | לכל IP לדקה | 120 בקשות | | פעולות מרובות לדקה | 10 בקשות | כשחורגים ממגבלת הבקשות, תקבלו תגובת 429 Too Many Requests: { "success": false, "message": "Too many requests. Please retry after 60 seconds.", "retry_after": 60 } 💡 טיפ: יישמו exponential backoff באינטגרציה שלכם. כשמקבלים תגובת 429, המתינו למשך שצוין ב-retry_after לפני שמנסים שוב. גרסאות גרסת ה-API הנוכחית כלולה בבקשה דרך פרמטר version. זה עוזר להבטיח תאימות לאחור ככל שה-API מתפתח. version=3.1.1 הערה: השתמשו תמיד במספר הגרסה האחרון. גרסאות ישנות עשויות לא לתמוך בפיצ'רים חדשים ועלולות להיות מוצאות משימוש. דוגמת התחלה מהירה הנה דוגמה מלאה ליצירת משלוח דרך ה-API: curl -X POST https://app.shipos.co.il/api/shipping/open_new_order \ -H "Authorization: Bearer YOUR_TOKEN" \ -d "license_key=YOUR_LICENSE_KEY" \ -d "domain=yourstore.com" \ -d "version=3.1.1" \ -d "order_id=1001" \ -d "shipping_first_name=Israel" \ -d "shipping_last_name=Israeli" \ -d "shipping_address_1=Herzl 10" \ -d "shipping_city=Tel Aviv" \ -d "shipping_postcode=6100000" \ -d "shipping_phone=0501234567" \ -d "total_weight=1.5" \ -d "num_of_packages=1" תגובה: { "success": true, "data": { "order_id": "1001", "shipping_code": "SHP-98765", "tracking_number": "ZZ123456789", "tracking_url": "https://tracking.zigzag.co.il/ZZ123456789", "status": "created" } } צעדים הבאים - נקודות קצה משלוחים - מדריך מפורט ל-API משלוחים - נקודות קצה מיקומי איסוף - שאילתת נקודות איסוף - נקודות קצה רישיונות - API ניהול רישיונות - Webhooks - מדריך אינטגרציית Webhooks

עודכן לאחרונה ב-Mar 21, 2026

נקודות קצה משלוחים

נקודות קצה משלוחים מדריך זה מתעד את כל נקודות הקצה של API הקשורות למשלוחים, כולל יצירת משלוחים, אחזור פרטים, ניהול סטטוסים ויצירת מדבקות. POST /shipping/open_new_order יצירת משלוח חדש עם ספק משלוחים. בקשה URL: https://app.shipos.co.il/api/shipping/open_new_order שיטה: POST Content-Type: application/x-www-form-urlencoded פרמטרים נדרשים | פרמטר | סוג | תיאור | |--------|------|-------| | license_key | string | מפתח הרישיון שלך ב-ShipOS | | domain | string | דומיין החנות | | token | string | טוקן אימות | | version | string | גרסת API/תוסף (למשל 3.1.1) | פרמטרי נתוני הזמנה | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | order_id | string | מזהה ההזמנה מהחנות | כן | | shipping_first_name | string | שם פרטי של הנמען | כן | | shipping_last_name | string | שם משפחה של הנמען | כן | | shipping_address_1 | string | כתובת רחוב | כן | | shipping_address_2 | string | דירה, יחידה וכו' | לא | | shipping_city | string | עיר | כן | | shipping_postcode | string | מיקוד | לא | | shipping_phone | string | מספר טלפון הנמען | כן | | shipping_email | string | אימייל הנמען | לא | | shipping_company | string | שם חברה | לא | | total_weight | float | משקל חבילה כולל בק"ג | לא | | num_of_packages | integer | מספר חבילות | לא | | delivery_type | string | סוג משלוח (standard, express, pickup) | לא | | pickup_point_id | string | מזהה נקודת איסוף (אם delivery_type הוא pickup) | מותנה | | notes | string | הערות/הוראות מסירה | לא | | cod_amount | float | סכום גוביינא | לא | | items | array | פריטי הזמנה | לא | פורמט מערך Items items[0][name]=Product Name items[0][quantity]=2 items[0][sku]=SKU-001 items[0][price]=99.90 items[0][is_virtual]=false דוגמת בקשה curl -X POST https://app.shipos.co.il/api/shipping/open_new_order \ -H "Authorization: Bearer YOUR_TOKEN" \ -d "license_key=LIC-12345" \ -d "domain=mystore.com" \ -d "version=3.1.1" \ -d "order_id=5001" \ -d "shipping_first_name=David" \ -d "shipping_last_name=Cohen" \ -d "shipping_address_1=Ben Yehuda 50" \ -d "shipping_city=Tel Aviv" \ -d "shipping_postcode=6343200" \ -d "shipping_phone=0521234567" \ -d "shipping_email=david@example.com" \ -d "total_weight=2.0" \ -d "num_of_packages=1" \ -d "notes=Please leave at door" \ -d "items[0][name]=T-Shirt" \ -d "items[0][quantity]=1" \ -d "items[0][sku]=TSH-BLK-L" \ -d "items[0][price]=89.90" תגובת הצלחה (200) { "success": true, "data": { "order_id": "5001", "shipping_code": "SHP-78901", "tracking_number": "ZZ987654321", "tracking_url": "https://tracking.provider.co.il/ZZ987654321", "status": "created", "label_url": "https://app.shipos.co.il/api/shipping/label?id=78901" } } תגובת שגיאה (422) { "success": false, "message": "Validation failed", "errors": { "shipping_city": ["The shipping city field is required."], "shipping_phone": ["The shipping phone format is invalid."] } } ⚠️ אזהרה: שדה is_virtual בפריטי הזמנה חשוב. פריטים וירטואליים (מוצרים דיגיטליים, שירותים) לא דורשים משלוח פיזי. אם כל הפריטים בהזמנה וירטואליים, יצירת המשלוח עלולה להידחות. POST /shipping/get_order_details אחזור פרטי משלוח/הזמנה קיימים. URL: https://app.shipos.co.il/api/shipping/get_order_details שיטה: POST פרמטרים | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | license_key | string | מפתח הרישיון | כן | | domain | string | דומיין החנות | כן | | token | string | טוקן אימות | כן | | order_id | string | מזהה ההזמנה לחיפוש | כן | POST /shipping/get_shipping_status קבלת סטטוס משלוח נוכחי ומידע מעקב. URL: https://app.shipos.co.il/api/shipping/get_shipping_status שיטה: POST פרמטרים זהים ל-get_order_details. POST /shipping/label יצירה ואחזור של מדבקת משלוח PDF למשלוח בודד. URL: https://app.shipos.co.il/api/shipping/label שיטה: POST פרמטרים נוספים | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | label_type | string | thermal או a4 (ברירת מחדל: thermal) | לא | הערה: כתובות URL של מדבקות זמניות ופגות אחרי תקופה. הורידו או הדפיסו מדבקות מיד אחרי יצירה. POST /shipping/bulk-label יצירת מדבקות למספר משלוחים ב-PDF אחד. URL: https://app.shipos.co.il/api/shipping/bulk-label שיטה: POST פרמטרים נוספים | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | order_ids | array | מערך מזהי הזמנות | כן | | label_type | string | thermal או a4 (ברירת מחדל: thermal) | לא | POST /shipping/order אחזור כל המשלוחים המשויכים להזמנה ספציפית. URL: https://app.shipos.co.il/api/shipping/order שיטה: POST הערה: להזמנה יכולים להיות מספר משלוחים (למשל אם פריטים נשלחים בנפרד או נוצר משלוח חלופי). POST /shipping/change_order_status שינוי סטטוס משלוח (למשל ביטול משלוח). URL: https://app.shipos.co.il/api/shipping/change_order_status שיטה: POST פרמטרים נוספים | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | status | string | סטטוס חדש (למשל cancelled) | כן | ⚠️ אזהרה: לא כל מעברי סטטוס מותרים. למשל, לא ניתן לבטל משלוח שכבר נמסר. ה-API יחזיר שגיאה אם המעבר לא תקין. מדריך סטטוסים | קוד סטטוס | תיאור | |-----------|-------| | created | משלוח נוצר | | picked_up | חבילה נאספה על ידי הספק | | in_transit | חבילה בדרך | | out_for_delivery | חבילה במסירה | | delivered | חבילה נמסרה בהצלחה | | failed_delivery | ניסיון מסירה נכשל | | returned | חבילה הוחזרה לשולח | | cancelled | משלוח בוטל | צעדים הבאים - נקודות קצה מיקומי איסוף - שאילתת נקודות איסוף - נקודות קצה רישיונות - ניהול רישיונות - Webhooks - הגדרת הודעות webhook - סקירת API - אימות ושימוש כללי

עודכן לאחרונה ב-Mar 21, 2026

נקודות קצה מיקומי איסוף

נקודות קצה מיקומי איסוף מדריך זה מתעד את נקודות קצה ה-API לשאילתת מיקומי נקודות איסוף מספקי משלוחים. POST /shipping/pickup_locations אחזור כל מיקומי האיסוף הזמינים עבור רישיון ספק משלוחים ספציפי. בקשה URL: https://app.shipos.co.il/api/shipping/pickup_locations שיטה: POST Content-Type: application/x-www-form-urlencoded פרמטרים | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | license_key | string | מפתח הרישיון שלך לספק המשלוחים | כן | | domain | string | דומיין החנות | כן | | token | string | טוקן אימות | כן | דוגמת בקשה curl -X POST https://app.shipos.co.il/api/shipping/pickup_locations \ -H "Authorization: Bearer YOUR_TOKEN" \ -d "license_key=LIC-12345" \ -d "domain=mystore.com" תגובת הצלחה (200) { "success": true, "data": { "locations": [ { "id": "PU-001", "name": "Dizengoff Post Office", "address": "Dizengoff 100", "city": "Tel Aviv", "postcode": "6433201", "phone": "03-1234567", "type": "post_office", "latitude": 32.0778, "longitude": 34.7744, "operating_hours": { "sunday": "08:00-18:00", "monday": "08:00-18:00", "tuesday": "08:00-18:00", "wednesday": "08:00-18:00", "thursday": "08:00-18:00", "friday": "08:00-13:00", "saturday": "closed" }, "is_active": true } ], "total": 1, "provider": "zigzag" } } סוגי מיקום | סוג | תיאור | |------|-------| | store | חנות קמעונאית או מיקום שותף (מאויש) | | locker | לוקר חבילות אוטומטי (גישה 24/7) | | post_office | סניף דואר ישראל או שירות דומה | | collection_point | מרכז איסוף ייעודי | סינון מיקומים ה-API מחזיר את כל המיקומים לרישיון, אפשר לסנן בצד הלקוח: לפי עיר const telAvivLocations = response.data.locations.filter( loc => loc.city === "Tel Aviv" ); לפי סוג const lockers = response.data.locations.filter( loc => loc.type === "locker" ); לפי קרבה (נקודה קרובה) השתמשו בשדות latitude ו-longitude לחישוב מרחק מהלקוח: function getDistance(lat1, lon1, lat2, lon2) { const R = 6371; const dLat = (lat2 - lat1) * Math.PI / 180; const dLon = (lon2 - lon1) * Math.PI / 180; const a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLon/2) * Math.sin(dLon/2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); return R * c; } המלצות מטמון מיקומי איסוף לא משתנים בתדירות. כדי להפחית קריאות API: - שמרו את רשימת המיקומים במטמון ל-24 שעות. - רעננו את המטמון מדי יום או כשמופעל סנכרון ידני. - אחסנו מיקומים במסד הנתונים אם צריכים חיפושים מהירים. 💡 טיפ: לביצועי קופה, משכו מראש ושמרו במטמון מיקומי איסוף במקום לקרוא ל-API בכל סשן קופה של לקוח. שימוש בזרימת קופה אינטגרציית קופה טיפוסית: 1. בטעינת דף: משכו מיקומי איסוף לכל רישיון פעיל (או השתמשו בנתונים במטמון). 2. כשלקוח בוחר משלוח לנקודת איסוף: הציגו מפה או רשימה של מיקומים. 3. כשלקוח בוחר מיקום: שמרו את ה-id של נקודת האיסוף שנבחרה. 4. ביצירת הזמנה: העבירו את ה-pickup_point_id בבקשת יצירת המשלוח. curl -X POST https://app.shipos.co.il/api/shipping/open_new_order \ -H "Authorization: Bearer YOUR_TOKEN" \ -d "license_key=LIC-12345" \ -d "domain=mystore.com" \ -d "version=3.1.1" \ -d "order_id=5001" \ -d "delivery_type=pickup" \ -d "pickup_point_id=PU-002" \ -d "shipping_first_name=David" \ -d "shipping_last_name=Cohen" \ -d "shipping_phone=0521234567" צעדים הבאים - נקודות קצה משלוחים - יצירה וניהול משלוחים - נקודות קצה רישיונות - אימות רישיונות - סקירת API - אימות ושימוש כללי

עודכן לאחרונה ב-Mar 21, 2026

נקודות קצה רישיונות

נקודות קצה רישיונות מדריך זה מתעד את נקודות קצה ה-API לאימות, הפעלה וניהול רישיונות. GET /license/check_license אימות האם מפתח רישיון פעיל ומשויך לדומיין. URL: https://app.shipos.co.il/api/license/check_license שיטה: GET פרמטרי שאילתה | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | license_key | string | מפתח הרישיון לאימות | כן | | domain | string | דומיין החנות | כן | דוגמת בקשה curl -X GET "https://app.shipos.co.il/api/license/check_license?license_key=LIC-12345&domain=mystore.com" תגובת הצלחה (200) - רישיון תקין { "success": true, "data": { "license_key": "LIC-12345", "domain": "mystore.com", "is_active": true, "company_id": 42, "company_name": "Zig Zag", "expires_at": "2027-03-15T00:00:00Z", "features": { "pickup_points": true, "express_delivery": true, "cod": true } } } 💡 טיפ: קראו לנקודת קצה זו בהפעלת תוסף או בבדיקות בריאות כדי לוודא שהרישיון עדיין תקף. GET /license/activate_license הפעלת מפתח רישיון וקשירתו לדומיין ספציפי. URL: https://app.shipos.co.il/api/license/activate_license שיטה: GET פרמטרי שאילתה | פרמטר | סוג | תיאור | חובה | |--------|------|-------|------| | license_key | string | מפתח הרישיון להפעלה | כן | | domain | string | דומיין החנות לקשירה | כן | ⚠️ אזהרה: מפתח רישיון יכול להיות קשור רק לדומיין אחד בכל פעם. אם צריך להעביר רישיון לדומיין אחר, בטלו אותו קודם ואז הפעילו מחדש בדומיין החדש. POST /licenses רשימת כל הרישיונות המשויכים למשתמש המאומת. נקודת קצה זו דורשת אימות Sanctum (ברמת משתמש, לא ברמת רישיון). URL: https://app.shipos.co.il/api/licenses שיטה: POST אימות: Sanctum Bearer Token דוגמת בקשה curl -X POST https://app.shipos.co.il/api/licenses \ -H "Authorization: Bearer YOUR_SANCTUM_TOKEN" \ -H "Accept: application/json" הערה: נקודת קצה זו דורשת טוקן Sanctum שמתקבל דרך זרימת ההתחברות. היא משמשת בעיקר את לוח הבקרה וממשקי הניהול של ShipOS, לא תוספי חנות. מחזור חיי רישיון activate_license לא פעיל ─────────────────────> פעיל ^ │ │ │ │ expires_at הגיע │ │<────────────────────────────────│ │ │ │ ביטול │ │<────────────────────────────────│ מצבי רישיון | מצב | תיאור | |------|-------| | פעיל | רישיון תקף וניתן לשימוש למשלוחים | | לא פעיל | רישיון מבוטל או טרם הופעל | | פג תוקף | רישיון עבר את תאריך התפוגה | מקרי שימוש נפוצים אימות בהפעלת תוסף כשתוסף חנות מופעל, בדקו את הרישיון: # שלב 1: בדקו אם הרישיון תקף curl -X GET "https://app.shipos.co.il/api/license/check_license?license_key=LIC-12345&domain=mystore.com" # שלב 2: אם לא מופעל, הפעילו curl -X GET "https://app.shipos.co.il/api/license/activate_license?license_key=LIC-12345&domain=mystore.com" בדיקת בריאות תקופתית אמתו את הרישיון מעת לעת (למשל מדי יום דרך cron) כדי לוודא שלא פג: curl -X GET "https://app.shipos.co.il/api/license/check_license?license_key=LIC-12345&domain=mystore.com" אם התגובה מצביעה שהרישיון פג או לא תקין, הודיעו למנהל החנות. צעדים הבאים - סקירת API - אימות ושימוש כללי - נקודות קצה משלוחים - יצירה וניהול משלוחים - Webhooks - הגדרת הודעות webhook

עודכן לאחרונה ב-Mar 21, 2026

Webhooks

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 לכל פריט בהזמנה. זה קריטי לקביעה אם הזמנה דורשת משלוח פיזי. איך זה עובד 1. תוסף WooCommerce מתחבר לפילטר woocommerce_webhook_payload. 2. לכל פריט בהזמנה, הוא בודק אם המוצר וירטואלי. 3. הוא מוסיף "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: 1. התוסף מתחיל OAuth עם WooCommerce לקבלת consumer key/secret. 2. באמצעות WooCommerce REST API, ShipOS רושם את שלושת ה-webhooks. 3. כל webhook מוגדר עם: - נושא: order.created, order.updated, order.deleted - URL מסירה: https://app.shipos.co.il/api/wp/webhooks/{wp_site_id}/{event} - סוד: סוד משותף לאימות payload רישום מחדש ידני אם webhooks מפסיקים לעבוד (למשל אחרי העברת אתר), רשמו אותם מחדש: 1. בלוח הבקרה של ShipOS (בתוך ניהול WP), עברו להגדרות. 2. לחצו רישום מחדש של Webhooks. 3. 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 - אימות ושימוש כללי - נקודות קצה רישיונות - ניהול רישיונות

עודכן לאחרונה ב-Mar 21, 2026