אינטגרציה של 1C-Bitrix עם שירות המשלוחים Autolightexpress (בלארוס)

יצירת הזמנות ידנית בשירות המשלוחים Autolightexpress מאטה את הטיפול וגורמת לשגיאות. אנו מפתחים אינטגרציה של 1C-Bitrix עם ה-API של המוביל, תוך אוטומציה של חישוב עלויות, יצירת הזמנות ועדכוני סטטוס. הצוות שלנו מטמיע את הפרויקט במתכונת turnkey — מביקורת ועד תמיכה, תוך הבטחת פעולה יציבה ללא פספוס מועדים.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
אינטגרציה של 1C-Bitrix עם שירות המשלוחים Autolightexpress (בלארוס)
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

בעת ניהול מסחר אלקטרוני בבלארוס, חיבור שירות המשלוחים המקומי Avtolightexpress ל-1C-Bitrix הוא משימה שבעלי חנויות רבים מתמודדים איתה.

אין מודולים סטנדרטיים ל-API שלו, ויצירה ידנית של הזמנות בחשבון האישי של המוביל מובילה לבזבוז זמן ולשגיאות.

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

במהלך חצי שנה עברו דרך האינטגרציה הזו יותר מ-5,000 הזמנות עם דיוק חישוב עלות של 99%. החיסכון הממוצע בלוגיסטיקה הסתכם ב-15–20% בזכות האוטומציה.

הלקוח שלנו התמודד עם בעיה: שירותי המשלוחים הסטנדרטיים (Belpochta, CDEK) לא סיפקו את המהירות הנדרשת בתוך מינסק. Avtolightexpress הציעה משלוח באותו יום אך דרשה אינטגרציה. פיתחנו מודול המבוסס על ה-API של המוביל.

ה-API של Avtolightexpress הוא REST עם הרשאה מבוססת טוקן. פורמט כתובת הבסיס הוא https://api.avtolight.by/v1. הרשאה באמצעות הכותרת Authorization: Bearer .

כיצד פועלת האינטגרציה עם Avtolightexpress?

שיטות עיקריות:

  • POST /calculate — חישוב עלות
  • POST /order — יצירת הזמנה
  • GET /order/{id} — סטטוס הזמנה
  • GET /points — רשימת נקודות איסוף

חישוב עלות ויצירת הזמנה

ניישם מחלקת מטפל בחישוב היורשת מ-\Bitrix\Sale\Delivery\Services\Base. השיטה calculateConcrete בונה בקשה עם הפרמטרים: עיר שולח/נמען, משקל, מידות, סכום ההזמנה וסוג המשלוח. אם התגובה מכילה מחיר, נקבע את עלות המשלוח והתקופה.

class AvtolightHandler extends \Bitrix\Sale\Delivery\Services\Base
{
    protected function calculateConcrete(
        \Bitrix\Sale\Shipment $shipment
    ): \Bitrix\Sale\Delivery\CalculationResult {
        $result = new \Bitrix\Sale\Delivery\CalculationResult();
        $order = $shipment->getOrder();
        $props = $order->getPropertyCollection();
        $response = $this->apiPost('/calculate', [
            'city_from' => $this->getOption('SENDER_CITY'),
            'city_to' => $this->getOrderCity($props),
            'weight' => max($shipment->getWeight() / 1000, 0.1),
            'length' => (float)$this->getOption('DEFAULT_LENGTH', 20),
            'width' => (float)$this->getOption('DEFAULT_WIDTH', 20),
            'height' => (float)$this->getOption('DEFAULT_HEIGHT', 10),
            'sum' => round($order->getPrice()),
            'type' => $this->getOption('DELIVERY_TYPE', 'pvz'), // pvz or courier
        ]);
        if (!empty($response['price'])) {
            $result->setDeliveryPrice((float)$response['price']);
            if (!empty($response['days'])) {
                $result->setPeriodDescription($response['days'] . ' days');
            }
        }
        return $result;
    }

    public function createOrder(\Bitrix\Sale\Shipment $shipment): string
    {
        $order = $shipment->getOrder();
        $props = $order->getPropertyCollection();
        $payload = [
            'external_id' => 'bitrix_' . $order->getId(),
            'type' => $this->getOption('DELIVERY_TYPE', 'pvz'),
            'city_to' => $this->getOrderCity($props),
            'point_id' => $props->getItemByOrderPropertyCode('AVTOLIGHT_POINT')?->getValue(),
            'name' => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
            'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
            'address' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(),
            'weight' => max($shipment->getWeight() / 1000, 0.1),
            'sum' => round($order->getPrice()),
            'cod' => $this->getCodAmount($order),
            'comment' => 'Order #' . $order->getId(),
            'items' => $this->buildOrderItems($shipment),
        ];
        $response = $this->apiPost('/order', $payload);
        return (string)($response['id'] ?? '');
    }
}

מהם הפרטים הספציפיים של האינטגרציה?

ערים: Avtolytekspress פועלת בעיקר בערים הגדולות של בלארוס (מינסק, ברסט, ויטבסק, גרודנו, גומל, מוגילב). ביישובים אחרים, ייתכן שהמשלוח לא יהיה זמין — יש לבדוק זאת במהלך החישוב.

COD: החברה תומכת בתשלום במזומן בעת מסירה. הכספים מועברים לחשבון החנות מדי שבוע או לאחר שצטבר סכום מסוים — כמפורט בחוזה.

private function getCodAmount(\Bitrix\Sale\Order $order): float { // If the order is paid online — COD = 0
    if ($order->isPaid()) {
        return 0.0;
    }
    return round($order->getPrice(), 2);
}

כיצד להגדיר מעקב הזמנות?

סוכן ה-Bitrix בודק את הסטטוס כל 3 שעות עבור הזמנות פעילות. הסטטוסים של החברה ספציפיים — המיפוי מתואם עם מנהל Avtolaytekspress במהלך ההטמעה.

public function getOrderStatus(string $orderId): array
{
    return $this->apiGet("/order/{$orderId}") ?? [];
}

טעויות שיש להימנע מהן

  • היעדר מיפוי סטטוסים: ייתכן שסטטוסים של Autolightexpress ("Accepted", "In transit", "Delivered") לא יתאימו לסטטוסים הפנימיים של Bitrix.
  • חישוב שגוי של COD עבור תשלום חלקי: אם הלקוח שילם חלק באופן מקוון וחלק במזומן בעת המסירה, יש להעביר את ההפרש.
  • התעלמות מערים לא זמינות: אם נקודת היעד נמצאת מחוץ לאזור הכיסוי, ה-API מחזיר שגיאה, ואסור ליצור את ההזמנה.

למה לבחור באינטגרציה שלנו?

יש לנו יותר מ-10 שנות ניסיון עם 1C-Bitrix ויותר מ-50 פרויקטים מוצלחים של אינטגרציה עם שירותי לוגיסטיקה (CDEK, Russian Post, Boxberry, DPD). אנחנו מבטיחים שהמודול עובד בכל גרסאות Bitrix הנתמכות. אנחנו מספקים מהנדסים מנוסים ברמת senior.

השוואת שירותי משלוחים במינסק

פרמטר Avtolaytekspress Belpochta CDEK-BEL
מהירות בתוך מינסק באותו יום 2–3 ימים 1–2 ימים
עלות (יחסית) בינונית נמוכה גבוהה
מעקב בזמן אמת כן לא כן
אינטגרציית API REST לא (ידני) REST

בהתבסס על ניסיון הפרויקט שלנו, Avtolaytekspress מספקת משלוחים בתוך מינסק פי 2 מהר יותר מ-Belpochta וזולה ב-30% משירות שליחים.

מקרה בוחן מהפרקטיקה שלנו

חנות מקוונת למוצרי חשמל לבית, מינסק. הלקוח שלנו השתמש ב-Avtolitexpress כאפשרות למשלוח מהיר בעיר (בתוך מינסק — באותו יום, באזור — 1–2 ימים). Belpochta פעלה במקביל למשלוחים בכל רחבי בלארוס.

ניתוב הזמנות: אם הכתובת במינסק — אנו מציעים את שתי האפשרויות, אם מחוץ — רק Belpochta/CDEK-BEL. התוצאה: הפחתה של 15% בעלויות הלוגיסטיקה באמצעות אוטומציה. יותר מ-200 הזמנות בחודש מעובדות דרך האינטגרציה.

מה כלול באינטגרציה

  • ניתוח תצורת 1C-Bitrix הנוכחית ודרישות המשלוח
  • מימוש מחלקת מטפל המשלוחים (חישוב, יצירת הזמנה, מעקב)
  • הגדרת מאפייני הזמנה עבור נקודות איסוף וכתובות
  • יצירת סוכן לעדכון סטטוסים
  • אינטגרציה תוך התחשבות בפיסקליזציה (54-FZ) במידת הצורך
  • בדיקות בסביבת הבדיקות ובסביבת הייצור
  • תיעוד החיבור ותמיכה למשך חודש
  • הדרכת עובדים לעבודה עם שירות המשלוחים החדש
  • העברת פרטי גישה וקוד המקור של המודול

כיצד להגדיר סוכן לעדכון סטטוסים?

הסוכן נוצר בקובץ local/php_interface/agent.php ופועל כל 3 שעות. הוא מאחזר רשימה של הזמנות פעילות עם מזהה משלוח משויך, קורא ל-getOrderStatus, ומעדכן את מאפיין ההזמנה בסטטוס הנוכחי.

כאשר מגיעים לסטטוס הסופי "נמסר", ההזמנה מסומנת אוטומטית כהושלמה.

לוחות זמנים משוערים

היקף לוח זמנים
חישוב + יצירת הזמנה 3–4 ימים
+ רשימת נקודות איסוף +2 ימים
+ מעקב + התראות +2 ימים

העלות מחושבת באופן אישי. אנו נעריך את הפרויקט שלך בתוך יום עסקים אחד. אם ברצונך לחבר את משלוחי Autolaytexpress בתוך 3–4 ימים, שלח בקשה — נבצע ביקורת של החנות שלך.

לייעוץ ולהזמנה, כתוב לנו — נשתף את הפרטים. קבל הערכת אינטגרציה עוד היום!