שילוב API של Yandex.Delivery: מחישוב עלות ועד מעקב
לאחר ביצוע הזמנה, הלקוח לא מקבל SMS על סטטוס המשלוח, מספר המעקב חסר, והשליח מגיע ללא הודעה מוקדמת. זהו תרחיש מוכר לחנויות מקוונות רבות. שילוב שירות משלוחים אינו רק "הוספת כפתור". הוא כולל חיבור בין מספר APIs, סנכרון סטטוסים, טיפול בשגיאות, caching ו-webhooks. יישמנו שילוב כזה עבור חנות אופנה מקוונת—כך זה עובד ומה חשוב לקחת בחשבון. עם הגדרה לא נכונה, החנות מפסידה כסף: לקוחות עוזבים בגלל סטטוסים לא אינפורמטיביים, ועלויות הלוגיסטיקה עולות. ה-API של Yandex.Delivery יכול לבצע אוטומציה של חישוב עלויות, יצירת תביעות ומעקב בזמן אמת.
בעיה: למה שילוב פשוט לא עובד
ה-API של Yandex.Delivery הוא כלי REST חזק, אבל ללא ארכיטקטורה נכונה הוא הופך למקור לשגיאות. בעיות אופייניות:
- קואורדינטות לא נכונות. החנות שולחת כתובת כטקסט, אבל ה-API דורש [lng, lat]. ה-geocoder לא תמיד מדויק—הפרש של 100 מטר מוביל לדחייה.
- מידות ומשקל. אם המוצר מתנהג בצורה לא סטנדרטית (לדוגמה, תיק עם מידות משתנות), חישוב העלות נכשל.
- Timeouts. ה-API של Yandex.Delivery לוקח עד 10 שניות להגיב—אם החישובים לא נשמרים ב-cache, דף התשלום נתקע.
- סטטוסים לא מגיעים. Webhooks מוגדרים לא נכון—הקונה רואה "ממתין לשליח" יום אחרי המשלוח.
איך יישמנו את זה: Stack ותצורה
אנחנו משתמשים ב-Laravel 11 עם Redis queues לבקשות אסינכרוניות. לקוח ה-HTTP הוא Guzzle עם ניסיונות חוזרים (3 ניסיונות עם השהיה). חישובי עלויות נשמרים ב-cache למשך 20 דקות ב-Memcached.
דוגמה לבקשה ליצירת תביעה:
POST /b2b/cargo/integration/v2/claims/create
{
"items": [
{
"quantity": 1,
"size": {
"length": 0.3,
"width": 0.2,
"height": 0.1
},
"weight": 1.5,
"cost_value": "1500",
"cost_currency": "RUB"
}
],
"route_points": [
{
"address": {
"fullname": "Москва, ул. Складская, 1"
},
"contact": {
"name": "Иван",
"phone": "+79001234567"
},
"point_id": 1,
"type": "source",
"pick_up_time": {
"from": "2023-03-15T10:00:00+03:00",
"to": "2023-03-15T12:00:00+03:00"
}
},
{
"address": {
"fullname": "Москва, ул. Покупательская, 5, кв. 10"
},
"contact": {
"name": "Мария",
"phone": "+79007654321"
},
"point_id": 2,
"type": "destination"
}
]
}התשובה מחזירה את מזהה התביעה וקישור לפרטים. לאחר מכן נכנסים לפעולה webhooks: אנחנו יוצרים routes שמקבלים התראות POST מ-Yandex.Delivery ומעדכנים את סטטוס ההזמנה במסד הנתונים שלנו.
איך עובד סנכרון סטטוסים
Webhooks הם הדרך האמינה היחידה לקבל סטטוסים בזמן אמת. אחרי כל שינוי סטטוס, Yandex שולח בקשת POST ל-endpoint שלנו עם גוף JSON. אנחנו מעבדים אותה, מעדכנים את רשומת מסד הנתונים ושולחים הודעה ללקוח (SMS, אימייל או push). אם webhook לא מגיע, אנחנו בודקים את ה-API כל 5 דקות. גישה היברידית זו משיגה דיוק של 99.9%.
למה חשוב לשמור חישובים ב-Cache
ל-API של Yandex.Delivery יש מגבלה של 100 בקשות לדקה. ללא caching, כל צפייה בעגלה יוצרת בקשה—במהלך מכירות שיא, החנות מגיעה במהירות למגבלה. אנחנו שומרים את העלות ב-cache למשך 20 דקות: זה מפחית את העומס ב-95% ומאיץ את תגובת הדף ב-300 אלפיות השנייה. הלקוח לא מחכה, והרכישות לא נכשלות.
השוואה: למה API עדיף על מודול מותאם אישית
| קריטריון | שילוב API | מודול מותאם אישית |
|---|---|---|
| מהירות יישום | 3–10 ימים | 2–3 שבועות |
| תמיכה בסטטוסים | 15 סטטוסים + webhooks | רק בסיסיים |
| טיפול בשגיאות | caching מובנה | דורש יישום |
| מדרגיות | תשתית ענן | השכרת שרת |
זמן היישום דרך API נמוך פי 3–5, ומספר השגיאות נמוך ב-40% (לפי המדידות שלנו). לקוחות חוסכים עד 30% בעלויות לוגיסטיקה בזכות אופטימיזציית תעריפים. צרו קשר כדי להעריך את השילוב שלכם.
תהליך העבודה: מניתוח ועד פריסה
- ניתוח—הבנת ההיגיון העסקי: אילו סטטוסים להציג, מתי לחייב, איך לטפל בהחזרות.
- עיצוב—ארכיטקטורת המערכת: רצף בקשות, caching, סכמת webhook.
- יישום—כתיבת קוד: controllers, services, tests. שימוש בתבנית Repository להפשטת ה-API.
- בדיקות—בדיקה בסביבת staging: יצירת תביעות, ביטולן, אימות webhooks דרך ngrok.
- פריסה—פריסה לסביבת production, הגדרת ניטור (לוגים, התראות Telegram).
טעויות אופייניות בשילוב
- טיפול לא נכון ב-CORS—הדפדפן חוסם בקשות ל-API של Yandex.Delivery אם לא מוגדר שרת proxy.
- ללא ניסיונות חוזרים על timeouts—אובדן הזמנות בשעות שיא.
- התעלמות ממגבלות קצב ה-API (100 בקשות לדקה)—חסימת מפתח.
מה כלול בעבודה
- תיעוד—תיאורי endpoint, סכמת נתונים, הוראות להוספת תעריפים חדשים.
- גישה—הגדרת מפתח API, הגדרת webhook, מדיניות אבטחה.
- קוד—מאגר עם השילוב (Laravel, Node.js או stack אחר לפי הסכמה).
- תמיכה—תמיכה חינמית למשך חודש לאחר ההשקה (ייעוץ, תיקונים).
לוחות זמנים משוערים
| שלב | משך |
|---|---|
| שילוב בסיסי (עלות + תביעה + מעקב) | 3–4 ימי עסקים |
| שילוב מלא (webhooks + מפה + ביטול אוטומטי) | 1–1.5 שבועות |
| הרחבה (מחסנים מרובים, החזרות) | החל משבועיים |
עלות השילוב מחושבת באופן אישי.
איך אנחנו מבטיחים איכות
יש לנו 5 שנות ניסיון בשילובי API לוגיסטיים ו-30+ פרויקטים מוצלחים עם Yandex.Delivery, CDEK, Boxberry. אנחנו בודקים כל תרחיש: מחישוב עלות ועד ביטול הזמנה על ידי נהג. אנחנו מבטיחים אבטחת מידע ופעילות 24/7.
אנחנו מוכנים לדון בפרויקט שלכם. צרו קשר—נעריך את המורכבות ונציע את הפתרון האופטימלי. בקשו ייעוץ כדי להעריך את הפרויקט שלכם.







