כאשר לקוח ממינסק מזמין מוצר ומצפה לאסוף אותו בנקודת מסירה קרובה של Boxberry, ללא אינטגרציה זה אומר ייצוא ידני ואובדן הזמנות. אנו הופכים את כל התהליך לאוטומטי: מחישוב עלות ועד מעקב אחר חבילות. הניסיון שלנו מראה שאינטגרציה מוגדרת כראוי מקצרת את זמן עיבוד ההזמנות ב-60% ומצמצמת שגיאות משלוח לכמעט אפס. Boxberry בבלארוס פועלת דרך רשת שותפים: כיסוי קיים במינסק (יותר מ-20 נקודות מסירה), גומל, ברסט, ויטבסק, מוגילב — מספיק לערים עם למעלה ממיליון תושבים. התשתית הטכנית היא API יחיד של Boxberry עם אישורי גישה נפרדים לפלח הבלארוסי.
נבחן נקודת כאב אופיינית: חנות מקוונת לחלקי חילוף לרכב במינסק. לפני האינטגרציה, מנהלים הזינו נתונים ידנית ללוח הבקרה של Boxberry — 15 דקות לכל הזמנה. לאחר האינטגרציה, ההזמנה נשלחת ל-API תוך 2 שניות. המעקב מתעדכן אוטומטית, ולקוחות מקבלים הודעות. בחודש הראשון הם עיבדו 300 הזמנות ללא שגיאה אחת. דוגמה נוספת: חנות קוסמטיקה עם 50 הזמנות ביום — לאחר היישום, עלויות המשלוח ירדו ב-40%, וזמן המשלוח התקצר מ-5 ל-2 ימים.
אילו בעיות אנחנו פותרים
- חישוב תעריף שגוי עבור בלארוס. ללא ציון קוד המדינה והעיר, ה-API מחזיר מחירים רוסיים. ה-handler שלנו תמיד מעביר את
CountryCode=BYואת עיר היציאה. אנו מתעדים כל בקשה ומאמתים את התשובה מול התעריף הצפוי. - מפת נקודות מסירה חסרה. Boxberry אינה מספקת ווידג'ט מוכן עבור בלארוס. אנו מיישמים משלנו על גבי Yandex Maps, טוענים נקודות דרך
PointListעם סינון לפיCountryCode=BY. הנתונים נשמרים במטמון למשך 12 שעות, מה שמפחית את העומס על ה-API. - שגיאות מעקב. ה-API של Boxberry אינו שולח webhooks. אנו מגדירים סוכן Bitrix שבודק את הסטטוס כל 4 שעות ושולח אימייל או SMS ללקוח בעת עדכון. אם הסוכן נכשל, הוא מנסה שוב לאחר 15 דקות.
כיצד עובדת אינטגרציית Boxberry בבלארוס
כיצד מחושבת עלות המשלוח?
class BoxberryByHandler extends \Bitrix\Sale\Delivery\Services\Base {
private string $apiUrl = 'https://api.boxberry.ru/json.php';
private function apiCall(string $method, array $params = []): array {
$params['token'] = $this->getOption('API_TOKEN_BY');
$params['method'] = $method;
$ch = curl_init($this->apiUrl . '?' . http_build_query($params));
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
return $result ?? [];
}
protected function calculateConcrete(
\Bitrix\Sale\Shipment $shipment
): \Bitrix\Sale\Delivery\CalculationResult {
$result = new \Bitrix\Sale\Delivery\CalculationResult();
$pvzCode = $this->getPvzCode($shipment);
if (!$pvzCode) {
$result->addError(new \Bitrix\Main\Error('ПВЗ Boxberry не выбран'));
return $result;
}
$response = $this->apiCall('DeliveryCosts', [
'weight' => max((int)ceil($shipment->getWeight() / 1000), 1),
'aim' => $pvzCode,
'sumd' => round($shipment->getOrder()->getPrice()),
'fromCity' => $this->getOption('FROM_CITY_CODE_BY'),
]);
if (!empty($response['price'])) {
$result->setDeliveryPrice((float)$response['price']);
$period = $response['deliveryPeriod'] ?? '3–7';
$result->setPeriodDescription("{$period} дней");
}
return $result;
}
private function getPvzCode(\Bitrix\Sale\Shipment $shipment): ?string {
$props = $shipment->getOrder()->getPropertyCollection();
return $props->getItemByOrderPropertyCode('BOXBERRY_PVZ_BY')?->getValue() ?: null;
}
}שיטות API מרכזיות: class BoxberryByHandler extends \Bitrix\Sale\Delivery\Services\Base { private string $apiUrl = 'https://api.boxberry.ru/json.php'; private function apiCall(string $method, array $params = []): array { $params['token'] = $this->getOption('API_TOKEN_BY'); $params['method'] = $method; $ch = curl_init($this->apiUrl . '?' . http_build_query($params)); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true]); $result = json_decode(curl_exec($ch), true); curl_close($ch); return $result ?? []; } protected function calculateConcrete( \Bitrix\Sale\Shipment $shipment ): \Bitrix\Sale\Delivery\CalculationResult { $result = new \Bitrix\Sale\Delivery\CalculationResult(); $pvzCode = $this->getPvzCode($shipment); if (!$pvzCode) { $result->addError(new \Bitrix\Main\Error('ПВЗ Boxberry не выбран')); return $result; } $response = $this->apiCall('DeliveryCosts', [ 'weight' => max((int)ceil($shipment->getWeight() / 1000), 1), 'aim' => $pvzCode, 'sumd' => round($shipment->getOrder()->getPrice()), 'fromCity' => $this->getOption('FROM_CITY_CODE_BY'), ]); if (!empty($response['price'])) { $result->setDeliveryPrice((float)$response['price']); $period = $response['deliveryPeriod'] ?? '3–7'; $result->setPeriodDescription("{$period} дней"); } return $result; } private function getPvzCode(\Bitrix\Sale\Shipment $shipment): ?string { $props = $shipment->getOrder()->getPropertyCollection(); return $props->getItemByOrderPropertyCode('BOXBERRY_PVZ_BY')?->getValue() ?: null; } } , PointList, DeliveryCosts, ParselCreate. כולן עם מסנן מדינה BY. הוספנו גם תיעוד לכל קריאה לצורך ניפוי באגים.
כיצד להגדיר מפת נקודות מסירה עבור בלארוס
public function getBelarusPvz(): array
{
$cache = \Bitrix\Main\Data\Cache::createInstance();
if ($cache->initCache(3600 * 12, 'boxberry_pvz_by', '/boxberry/')) {
return $cache->getVars();
}
$pvzList = $this->apiCall('PointList', [
'CountryCode' => 'BY',
'prepaid' => 1,
]);
$cache->startDataCache();
$cache->endDataCache($pvzList);
return $pvzList;
}בצד הלקוח, אנו מציגים מפה דרך Yandex Maps — מעבירים את רשימת נקודות המסירה עם קואורדינטות. המטמון מתרענן כל 12 שעות, מה שמבטיח שהנתונים עדכניים ללא בקשות מיותרות.
יצירת חבילה ומעקב
public function createParcel(\Bitrix\Sale\Shipment $shipment): string
{
$order = $shipment->getOrder();
$props = $order->getPropertyCollection();
$response = $this->apiCall('ParselCreate', [
'updateByTrack' => '0',
'order_id' => 'bitrix_' . $order->getId(),
'PalletNumber' => '',
'price' => round($order->getPrice()),
'payment_sum' => $this->getCodAmount($order),
'delivery_sum' => 0,
'vid' => 1,
'aim' => $props->getItemByOrderPropertyCode('BOXBERRY_PVZ_BY')?->getValue(),
'name' => $props->getItemByOrderPropertyCode('FIO')?->getValue(),
'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
'email' => $order->getUserEmail(),
'weights' => [['weight' => max((int)ceil($shipment->getWeight() / 1000), 1)]],
]);
return (string)($response['track'] ?? '');
}מעקב דרך ParselCheck. סוכן בודק את הסטטוס כל 4 שעות ומעדכן את ההזמנה. כאשר מזוהה סטטוס סופי (נמסר), הסוכן מושבת.
מדוע Boxberry משתלמת יותר מחלופות בבלארוס
השוואה עם שירותים הנפוצים למשלוח בבלארוס:
| פרמטר | Boxberry | הדואר הרוסי | CDEK (בלארוס) |
|---|---|---|---|
| עלות (חבילה עד 5 ק"ג) | נמוכה | בינונית | גבוהה |
| זמן משלוח | 2–5 ימים | 5–14 ימים | 3–7 ימים |
| נקודות מסירה במינסק | 20+ | 100+ סניפים | 15+ |
| API לאינטגרציה | פשוט, טוקן אחד | מורכב, שיטות שונות | זמין אך בתעריף יקר |
Boxberry מספקת פי שניים מהר יותר מהדואר הרוסי בבלארוס. עבור חנות מקוונת עם 50+ הזמנות ביום, זה חוסך עד 40% בעלויות המשלוח. יתרה מכך, האינטגרציה דורשת פחות מאמץ פיתוח בזכות API אחיד.
תהליך
- אנליטיקה — אנו בוחנים את מערך המשלוחים הנוכחי שלך, רשימת הערים, סוגי המוצרים.
- עיצוב — אנו בוחרים שיטות API, מגדירים מטמון, מכינים שדות מאפייני הזמנה.
- יישום — אנו כותבים את ה-handler למשלוח, מפת נקודות המסירה, מעקב. מתחברים דרך CommerceML או REST API.
- בדיקות — אנו בודקים עם הזמנות ניסיון, מתקנים תעריפים ויצירת חבילות. מבצעים בדיקות עומס.
- פריסה — מפרסמים באתר החי, מאמנים מנהלים.
מה כלול
- הגדרת API של Boxberry (טוקנים, שיטות) עבור בלארוס.
- פיתוח ווידג'ט לבחירת נקודת מסירה על גבי Yandex Maps.
- יישום חישוב עלות ויצירת חבילות.
- מעקב עם עדכוני סטטוס אוטומטיים.
- הודעות אימייל ללקוחות (דרך סוכן Bitrix).
- תיעוד תפעולי.
לוחות זמנים משוערים
| היקף | זמן |
|---|---|
| חישוב + יצירת חבילה | 3–4 ימים |
| + נקודות מסירה על המפה | 5–7 ימים |
| + מעקב + הודעות | 7–10 ימים |
העלות מחושבת באופן אישי. אנו נעריך את הפרויקט שלך — צור קשר כדי לקבל הערכה מדויקת. לצוות שלנו ניסיון רב באינטגרציות Boxberry ברחבי חבר העמים עם למעלה מ-300 פרויקטים מוצלחים.
קבל ייעוץ ממהנדס — נספר לך כיצד להגדיר את Boxberry עבור החנות שלך. כתוב לנו — נשיב תוך שעה.
קישור: Boxberry API

