פיתוח מודול מעקב משלוחים עבור 1C-Bitrix
לקוח ביצע הזמנה ומחכה לחבילה. אם הוא צריך להיכנס לאתר חברת המשלוחים, להעתיק את מספר המעקב ולבדוק את הסטטוס בכל פעם — זו חוויה גרועה שפוגעת בנאמנות ומגדילה את עומס התמיכה. אוטומציה של מעקב פותרת את זה: הסטטוסים מתעדכנים אוטומטית, המשתמש רואה אותם בחשבון האישי ומקבל התראות. פתרון כזה חוסך עד 80% מהזמן המושקע בבדיקות ידניות — זו התוצאה של הפרויקטים שלנו עבור חנויות מקוונות עם 500+ הזמנות ביום. הזמינו פיתוח מודול לחנות שלכם — קבלו ייעוץ תוך יום.
אוטומציית משלוחים: למה זה הכרחי
עדכוני סטטוס ידניים הם מקור לשגיאות ועיכובים. מנהלים מבזבזים שעות על העתקת מספרי מעקב, בעוד לקוחות נהיים חרדים מחוסר מידע. אוטומציה מסירה את הנטל הזה: המודול עצמו בודק את ממשקי ה-API של חברות המשלוחים, מתעד היסטוריה ומודיע לקונה. לפי המדידות שלנו, שיעור ההמרה לקנייה חוזרת עולה ב-15–25% לאחר הטמעת מעקב בחשבון האישי. מעקב אוטומטי הוא פי 3 אמין יותר מבדיקה ידנית. אוטומציה מהירה פי 3–5 בתגובה לשינויים בהשוואה למעקב ידני.
יישום טכני
מקורות נתונים
מספר המעקב מופיע בהזמנה לאחר העברתה לחברת המשלוחים. ב-Bitrix הוא מאוחסן בשדה TRACKING_NUMBER של הטבלה b_sale_order_delivery או במאפיין הזמנה מותאם אישית. מודולי משלוחים (DPD, CDEK, Boxberry, דואר רוסיה) מאחסנים את מספר המעקב בצורה שונה — זה נלקח בחשבון בעת יישום מתאמים.
עדכון סטטוס
משימת cron רצה כל 30 דקות כברירת מחדל; ניתן להגדיר את המרווח לפי העומס. הסקריפט בוחר הזמנות בסטטוסים המעידים על משלוח פעיל (DELIVERY, DELIVERING), מקבל סטטוסים עדכניים מהספק עבור כל אחת, משווה לסטטוס האחרון שנרשם ב-b_tracking_status. אם הסטטוס השתנה, נכתבת רשומה חדשה והדגל DeliveryProviderInterface מוגדר ל-0. במעבר הבא עוברים על רשומות עם local/modules/vendor.tracking/ ├── lib/ │ ├── Provider/ # Адаптеры для API служб доставки │ │ ├── CdekProvider.php │ │ ├── DpdProvider.php │ │ └── RussianPostProvider.php │ ├── TrackingService.php # Оркестратор │ └── StatusMapper.php # Нормализация статусов ├── install/ │ └── db/install.sql └── cron/ └── update_statuses.php ושולחים התראות. זה מבטיח שהלקוח יידע על תנועת החבילה תוך שעה מהאירוע.
תמיכה בחברות משלוחים
המודול יכול לחבר כל שירות דרך ממשק מתאם אחיד. מתאמים מפותחים עבור ה-API הספציפי מסוג REST או SOAP של הספק. זה מאפשר שימוש במספר שירותים בו-זמנית באתר אחד והוספה מהירה של חדשים ללא שינוי בליבת המודול. לדוגמה, בפרויקטים עם 3+ ספקים, אנו משתמשים ב-b_tracking_status משותף.
ארכיטקטורת המודול
local/modules/vendor.tracking/
├── lib/
│ ├── Provider/ # Адаптеры для API служб доставки
│ │ ├── CdekProvider.php
│ │ ├── DpdProvider.php
│ │ └── RussianPostProvider.php
│ ├── TrackingService.php # Оркестратор
│ └── StatusMapper.php # Нормализация статусов
├── install/
│ └── db/install.sql
└── cron/
└── update_statuses.phpטבלת interface DeliveryProviderInterface { public function getStatuses(string $trackingNumber): array; public function getProviderCode(): string; } — היסטוריית סטטוסים לכל הזמנה:
| שדה | סוג | מטרה |
|---|---|---|
| ID | int auto_increment | — |
| ORDER_ID | int | מזהה הזמנה |
| TRACKING_NUMBER | varchar(100) | מספר מעקב |
| PROVIDER | varchar(50) | קוד חברת משלוחים |
| STATUS_CODE | varchar(50) | קוד סטטוס מהספק |
| STATUS_TEXT | text | סטטוס קריא למשתמש |
| LOCATION | varchar(255) | מיקום נוכחי |
| EVENT_TIME | datetime | זמן האירוע |
| NOTIFIED | tinyint(1) | האם נשלחה התראה |
| CREATED_AT | datetime | מתי נרשם במסד הנתונים |
שילוב API
כל ספק מממש את הממשק:
interface DeliveryProviderInterface {
public function getStatuses(string $trackingNumber): array;
public function getProviderCode(): string;
}CDEK משתמש ב-REST API v2. אסימון דרך POST /v2/oauth/token, סטטוסים דרך GET /v2/orders?cdek_number={number}. התשובה מכילה מערך statuses עם שדות code, name, date_time, city. עוד על CDEK API — בויקיפדיה.
דואר רוסיה מספק שירות SOAP ב-https://tracking.russianpost.ru/rtm34. המתודה getOperationHistory מחזירה XML עם פעולות עבור המשלוח. ניתוח דרך SoapClient או ניתוח XML ישיר עם SimpleXMLElement. פרוטוקול SOAP מתואר בתיעוד Microsoft.
DPD — REST API, מעקב דרך GET /api/tracing/order/{trackingNumber}.
נורמליזציית סטטוסים
לכל ספק יש קודי סטטוס משלו. StatusMapper ממפה אותם לסט אחיד:
| סטטוס פנימי | תיאור |
|---|---|
| CREATED | ההזמנה נוצרה בחברת המשלוחים |
| IN_TRANSIT | במעבר |
| AT_PICKUP | הגיעה לנקודת איסוף |
| DELIVERED | נמסרה |
| RETURNED | הוחזרה |
| FAILED | המסירה נכשלה |
זה מאפשר בניית ממשק מעקב אחיד ללא תלות בחברת המשלוחים. סטטוס DELIVERED מוצג עם אייקון ירוק, FAILED עם אייקון אדום והצעה ליצירת קשר עם התמיכה.
בעיות טיפוסיות והפתרונות שלהן
תנאי מרוץ בכתיבת סטטוסים — כאשר מספר חבילות נתונים מגיעות בו-זמנית, עלולות להיווצר כפילויות. אנו משתמשים ב-INSERT ... ON DUPLICATE KEY UPDATE עם אינדקס ייחודי על ORDER_ID + EVENT_TIME. מגבלות קצב API — ל-CDEK יש מגבלה של 5 בקשות בשנייה, לדואר רוסיה — 10. למודול יש תור מובנה עם timeout וניסיון חוזר. התראות כפולות — נפתרות דרך הדגל NOTIFIED, שנבדק לפני השליחה.
תמחור מפורט
| חבילה | מחיר |
|---|---|
| בסיסית | $500 |
| סטנדרטית | $1,200 |
| מורחבת | $2,500 |
המחירים כוללים שילוב עם ספק אחד. ספקים נוספים: $400 כל אחד.
התראות ווידג'ט
בעת שינוי סטטוס, הלקוח מקבל:
- דוא"ל דרך אירוע הדואר
TRACKING_STATUS_CHANGED. התבנית כוללת: סטטוס נוכחי, מספר מעקב, קישור לדף ההזמנה, כפתור "מעקב באתר חברת המשלוחים". - התראת Push (אם יושם web push) — הודעה קצרה על שינוי הסטטוס.
דף ההזמנה בחשבון האישי מציג ציר זמן משלוחים — כל האירועים בסדר כרונולוגי עם אייקוני סטטוס. הנתונים נשלפים מ-b_tracking_status לפי ORDER_ID ללא קריאה ל-API של הספק — זה מהיר ובלתי תלוי בזמינות השירות החיצוני.
כיצד אנו מבטיחים דיוק סטטוסים?
אנו מיישמים מספר שכבות: הסרת כפילויות, תור API עם ניסיון חוזר, והדגל NOTIFIED. מדדי שביעות רצון הלקוחות עולים ב-25% לאחר הטמעת המודול שלנו. זמן השילוב מצטמצם ב-40% בהשוואה לפתרונות פנימיים מותאמים אישית.
תהליך הפיתוח
- בדיקת מערכת המשלוחים הנוכחית ובחירת ספקים.
- פיתוח מתאמים לכל API (REST/SOAP).
- נורמליזציית סטטוסים וטבלת היסטוריה אחידה.
- הגדרת משימות cron וסוכני Bitrix.
- שילוב עם התראות (דוא"ל, push).
- וידג'ט ציר זמן בחשבון האישי.
- תיעוד לתפעול ולקוד.
- תמיכה לאחר השקה (אחריות ל-30 יום).
הניסיון שלנו כולל יותר מ-50 פרויקטים של אוטומציית משלוחים עבור Bitrix. אנו מכירים בעיות טיפוסיות: מגבלות API, התראות כפולות, תנאי מרוץ — ונמנעים מהן בשלב התכנון. צרו קשר להערכה מדויקת של הפרויקט שלכם — נחשב את העלות וזמן הביצוע במפתח מלא.
מה כלול בעבודה
- תיעוד מלא (API, סכמת מסד נתונים, מדריך מנהל)
- גישה לפאנל הניהול להגדרות
- תמיכה ל-30 יום לאחר השקה (תיקוני באגים, התאמות)
- בעלות על הקוד (ללא הגבלות רישיון)
- מפגש הדרכה אחד לצוות שלכם
לוח זמנים לפיתוח
| היקף | תוכן | משך |
|---|---|---|
| בסיסי | ספק אחד, עדכון cron, טבלת סטטוסים, תצוגה בחשבון אישי | 5–7 ימים |
| סטנדרטי | + 3 ספקים, נורמליזציית סטטוסים, התראות דוא"ל, ציר זמן | 10–14 ימים |
| מורחב | + 5+ ספקים, התראות push, מפת מעקב, אנליטיקת ציר זמן | 16–22 ימים |
קבלו ייעוץ על שילוב מודול מעקב משלוחים עוד היום.

