אפילו משלוח בודד לכפר הופך לבעיה: שירותי שליחויות לא מגיעים לשם, ובלפושטה (Belpochta) נותרה המפעילה היחידה שמכסה את כל בלארוס. ללא אינטגרציה, מנהלים מזינים ידנית נתונים באתר הדואר—שגיאות, עיכובים, סטטוסים שאבדו. הלקוחות לא מרוצים, ואתם מבזבזים זמן. יצירת חבילה ידנית אורכת 10–15 דקות, ועם 50 הזמנות ביום מדובר בשעות של עבודה מיותרת. שגיאות בהזנת מיקוד או משקל מובילות להחזרות ומשלוחים חוזרים—עד 20% מההזמנות דורשות תיקון. המהנדסים שלנו עם ניסיון של 10+ שנים שילבו את בלפושטה עם עשרות חנויות על 1C-Bitrix, תוך עיבוד של למעלה מ-100,000 חבילות. הפתרון מכסה את כל המחזור: מחישוב עלות ועד הדפסת תוויות ומעקב.
איך לשלב את ה-API של בלפושטה עם קטלוג ביטריקס?
בלפושטה מספקת ממשקי SOAP ו-REST. אנו ממליצים על גרסת ה-REST: https://api.belpost.by/api/v1. אימות באמצעות טוקן בכותרת Authorization: Token <token>. הטוקן מונפק לאחר חתימת חוזה עם בלפושטה וחיבור לשירות "משלוח אלקטרוני".
שיטות API עיקריות:
| שיטה | מטרה | תדירות שימוש |
|---|---|---|
POST /parcel/calculate |
חישוב עלות משלוח | בכל שינוי בעגלה |
POST /parcel/create |
יצירת חבילה | בעת ביצוע הזמנה |
GET /parcel/{id} |
סטטוס חבילה | על ידי סוכנים כל 6 שעות |
GET /parcel/{id}/label |
קבלת תווית בפורמט PDF | בעת הדפסה מפאנל הניהול |
חישוב העלות מיושם באמצעות טרנספורט מותאם אישית. אנו רושמים handler על האירוע OnSaleDeliveryHandlersBuildList ומוסיפים מחלקה BelposhtaHandler. במאפייני ההזמנה, יש להוסיף את המיקוד של הנמען (6 ספרות) — בלעדיו, חישוב אינו אפשרי.
class BelposhtaHandler extends \Bitrix\Sale\Delivery\Services\Base {
protected function calculateConcrete(
\Bitrix\Sale\Shipment $shipment
): \Bitrix\Sale\Delivery\CalculationResult {
$result = new \Bitrix\Sale\Delivery\CalculationResult();
$response = $this->apiPost('/parcel/calculate', [
'from_region' => $this->getOption('SENDER_REGION_CODE'),
'to_index' => $this->getRecipientIndex($shipment),
'weight' => max((int)($shipment->getWeight()), 50), // граммы, минимум 50г
'cost' => round($shipment->getOrder()->getPrice()),
'payment' => 'prepaid', // или cod
]);
if (!empty($response['amount'])) {
$result->setDeliveryPrice((float)$response['amount']);
$days = $response['delivery_days'] ?? '3–7';
$result->setPeriodDescription("{$days} дней");
}
return $result;
}
private function getRecipientIndex(\Bitrix\Sale\Shipment $shipment): string {
$props = $shipment->getOrder()->getPropertyCollection();
return (string)($props->getItemByOrderPropertyCode('ZIP')?->getValue() ?? '');
}
}המיקוד של הנמען הוא מאפיין חובה של ההזמנה. אנו מוסיפים אותו דרך class BelposhtaHandler extends \Bitrix\Sale\Delivery\Services\Base { protected function calculateConcrete( \Bitrix\Sale\Shipment $shipment ): \Bitrix\Sale\Delivery\CalculationResult { $result = new \Bitrix\Sale\Delivery\CalculationResult(); $response = $this->apiPost('/parcel/calculate', [ 'from_region' => $this->getOption('SENDER_REGION_CODE'), 'to_index' => $this->getRecipientIndex($shipment), 'weight' => max((int)($shipment->getWeight()), 50), // граммы, минимум 50г 'cost' => round($shipment->getOrder()->getPrice()), 'payment' => 'prepaid', // или cod ]); if (!empty($response['amount'])) { $result->setDeliveryPrice((float)$response['amount']); $days = $response['delivery_days'] ?? '3–7'; $result->setPeriodDescription("{$days} дней"); } return $result; } private function getRecipientIndex(\Bitrix\Sale\Shipment $shipment): string { $props = $shipment->getOrder()->getPropertyCollection(); return (string)($props->getItemByOrderPropertyCode('ZIP')?->getValue() ?? ''); } } עם קוד \Bitrix\Sale\Property ומקשרים אותו לשירות המשלוחים. כאשר בלפושטה נבחרת, המאפיין הופך לחובה.
איך ליצור חבילה ולהדפיס תוויות?
לאחר ביצוע הזמנה, יש צורך ליצור חבילה. אנו שולחים בקשת POST עם נתוני שולח ונמען מלאים. בתשובה, אנו מקבלים ZIP, אותו אנו שומרים בהזמנה (לדוגמה, בשדה UF).
public function createParcel(\Bitrix\Sale\Shipment $shipment): string
{
$order = $shipment->getOrder();
$props = $order->getPropertyCollection();
$payload = [
'sender' => [
'name' => $this->getOption('SENDER_NAME'),
'address' => $this->getOption('SENDER_ADDRESS'),
'phone' => $this->getOption('SENDER_PHONE'),
],
'recipient' => [
'name' => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
'index' => $props->getItemByOrderPropertyCode('ZIP')?->getValue(),
'address' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(),
],
'parcel' => [
'weight' => max((int)$shipment->getWeight(), 50),
'cost' => round($order->getPrice()),
'contents' => 'Товар',
],
'payment' => $this->getPaymentType($order), // prepaid или cod
'cod_sum' => $this->getCodSum($order),
];
$response = $this->apiPost('/parcel/create', $payload);
return (string)($response['parcel_id'] ?? '');
}התווית מוחזרת בפורמט PDF. אנו מוסיפים כפתור "הדפס תווית" בחלק הניהולי של ההזמנה. בלחיצה, נקרא סוכן שמקבל את ה-PDF דרך parcel_id ושולח אותו להדפסה. המעקב מתעדכן על ידי סוכנים כל 6 שעות—זה מספיק מכיוון שבלפושטה מעדכנת סטטוסים פעם ביום. לעדכונים מהירים יותר, ניתן להגדיר webhook מבלפושטה, אך הם עדיין לא מספקים התראות push.
מתי בלפושטה היא הבחירה האופטימלית?
בלפושטה זולה פי 2–3 משירותי שליחויות לאזורים מרוחקים, במיוחד למשלוחים לכפרים ויישובים. ה-API מאפשר אוטומציה של כל המחזור: מחישוב ועד הדפסת תוויות. עבור חנויות מקוונות המכוונות לכל בלארוס, זהו ערוץ חובה.
מאפיינים:
- משקל מינימלי — 50 גרם. פריטים קטנים יותר מעובדים כ"חבילה קטנה" בתעריף שונה—המודול בוחר אוטומטית את התעריף.
- משלוח בינלאומי: בלפושטה חברה באיגוד הדואר העולמי (UPU), שילוח למדינות חבר העמים ומדינות רחוקות. הצהרות מכס CN22/CN23 דרך שיטת API נפרדת. האינטגרציה תומכת במילוי הצהרות על בסיס פריטי הקטלוג.
- לוחות זמנים: בתוך בלארוס 3–7 ימי עסקים, לאזורים מרוחקים עד 10 ימים. לוחות הזמנים בפועל תלויים בעומס הסניפים.
- שליחות כנגד מזומן נתמכת, העברה פעם בשבוע. סכום השליחות (cod_sum) מחושב אוטומטית כעלות ההזמנה בתוספת דמי הדואר.
האינטגרציה מפחיתה את עלויות העבודה לעיבוד הזמנות בעד 95%. שגיאות הזנה ידניות מתבטלות—כתובות ומשקלים נלקחים ישירות מההזמנה. זה חשוב במיוחד עבור חנויות מקוונות עם מבחר גדול ועונתיות גבוהה. החיסכון בעיבוד הזמנה אחת מגיע עד 8 דקות, אשר עבור 100 הזמנות בחודש נותן יותר מ-13 שעות של זמן שנחסך.
מה כלול בעבודה
- אנליטיקה: ביקורת על החליפין הנוכחיים, זיהוי נקודות אינטגרציה (חישוב, יצירה, הדפסה, מעקב).
- עיצוב: פיתוח סכמת handler, סוכנים, HL-blocks (אם יש צורך בלוגיקה נוספת).
- פיתוח: יישום טרנספורט, סוכני סנכרון, ממשק הדפסה. שמירת בקשות חישוב במטמון — מתויג, מקושר לעגלה.
- בדיקות: בסביבת הבדיקה של בלפושטה (sandbox) — בדיקת כל התרחישים כולל שגיאות API ו-timeouts.
- השקה: התקנת מודול על שרת הייצור, הגדרת סוכנים, הדרכת צוות. תיעוד לתפעול ושחזור מאסון.
לוח זמנים
| רכיב | משך |
|---|---|
| חישוב עלות + יצירת חבילה | 3–5 ימים |
| + הדפסת תווית + מעקב | +2 ימים |
| + משלוחים בינלאומיים | +2 ימים |
| פונקציונליות מלאה (כל האפשרויות) | 5–9 ימים |
לוחות הזמנים משתנים בהתאם למורכבות הקטלוג ודרישות האינטגרציה עם 1C. לדוגמה, אם הצעות מסחריות ו-infoblocks v2.0 כבר מוגדרים, האינטגרציה מהירה יותר. עבור חנויות מקוונות העובדות עם 1C דרך CommerceML, אנו מגדירים העברת סטטוסי משלוח חזרה ל-1C.
אנו נעריך את הפרויקט שלכם — צרו קשר לייעוץ. הזמינו אינטגרציה — היא תשתלם כבר במאה המשלוחים הראשונים בזכות חיסכון בזמן והפחתת החזרות. קבלו פתרון מוכן תוך 5–9 ימים.

