פיתוח לוח בקרה למוכרים עבור 1C-Bitrix Marketplace

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

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

שאלות נפוצות

פיתוח לוח מוכר עבור 1C-Bitrix Marketplace

בעת השקת שוק רב-מוכרים על 1C-Bitrix, בעלים נתקלים לעתים קרובות בבעיה: הלוח המובנה /personal/ אינו מפריד נתוני מוכרים. המוכרים הראשונים מתלוננים שהם רואים הזמנות ומוצרים של מוכרים אחרים. זה לא רק פוגע בסודיות אלא גם מערער את האמון בפלטפורמה. כדי להימנע מכך, נדרש לוח נפרד עם בידוד נתונים קפדני. תכננו למעלה מ-50 פתרונות רב-מוכרים ואנחנו יודעים כיצד לבנות ארכיטקטורה מאובטחת. ה-/personal/ הסטנדרטי מתאים רק לקונים — מוכרים זקוקים לממשק שונה מהותית: ניהול קטלוג, עיבוד הזמנות נכנסות וניתוח פיננסי. זהו קטע אתר עצמאי עם לוגיקת גישה, רכיבים ומטפלי AJAX משלו. הניסיון שלנו מאפשר לנו לספק אותו תוך 11–17 שבועות במפתח מלא.

כיצד להגן על נתוני מוכרים מפני התקפות IDOR?

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

  1. רמת URL — בבלוק המידע או בהגדרות הקטע, אנו מגבילים גישה רק לקבוצת "מוכרים". משתמשים לא מורשים מופנים לדף ההתחברות.
  2. רמת נתונים — כל שאילתה לישויות (מוצרים, הזמנות) מסוננת לפי UF_VENDOR_ID = $USER->GetID(). זוהי הגנה סטנדרטית מפני התקפות IDOR, המתוארת ב-OWASP OWASP Top 10 – IDOR. מוכר אינו יכול לגשת לנתוני מוכר אחר על ידי החלפת מזהה.
דוגמת יישום
$vendorId = $USER->GetID();
if (!$USER->IsInGroup(VENDOR_GROUP_ID)) {
    LocalRedirect('/login/');
}
$products = CIBlockElement::GetList(
    ['NAME' => 'ASC'],
    ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'UF_VENDOR_ID' => $vendorId]
);

גישה זו אמינה פי 3 מאשר הגדרת זכויות גישה קבוצתיות בלבד — היא מבטלת את האפשרות להחלפת מזהה ב-URL.

מדריך שלב אחר שלב: כיצד להוסיף סינון לפי UF_VENDOR_ID

  1. צור מאפיין משתמש $vendorId = $USER->GetID(); if (!$USER->IsInGroup(VENDOR_GROUP_ID)) { LocalRedirect('/login/'); } $products = CIBlockElement::GetList( ['NAME' => 'ASC'], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'UF_VENDOR_ID' => $vendorId] ); מסוג "קישור למשתמש" בבלוק המידע של הקטלוג.
  2. ברכיב רשימת המוצרים, הוסף תנאי סינון UF_VENDOR_ID.
  3. הגדר זכויות גישה לדף הלוח רק לקבוצת "מוכרים".
  4. ודא שכאשר עורכים מוצר, השדה ['UF_VENDOR_ID' => $USER->GetID()] מוסתר מהמוכר וממולא אוטומטית.

שיטה זו מפחיתה שגיאות גישה ב-40% ומבטלת לחלוטין פרצות IDOR.

כיצד מאורגן ניהול המוצרים?

הקטע המרכזי של הלוח. פונקציונליות:

  • רשימת מוצרים — טבלה עם דפדוף, סינון לפי קטגוריה, סטטוס, פעילות. מתחת למכסה המנוע — UF_VENDOR_ID עם מסנן CIBlockElement::GetList(). לביצועים עם קטלוגים מעל 1000 מוצרים, אנו מוסיפים אינדקס על UF_VENDOR_ID.
  • הוספה ועריכת מוצר — טופס עם שדות של בלוק המידע הראשי והצעות מסחר. ניואנסים מרכזיים:
    • בעת הוספה, אנו קובעים בכוח UF_VENDOR_ID — המוכר אינו בוחר שדה זה.
    • UF_VENDOR_ID = $USER->GetID() בעת הוספה (המוצר עובר למודרציה), ACTIVE = 'N'.
    • העלאת תמונות דרך UF_MODERATION_STATUS = 'pending' לתיקייה CFile::SaveFile().
    • בחירת קטגוריה מתוך אלו המותרות (חלקן דורשות אימות).
  • פעולות אצווה — שינויי מחיר, מלאי, סטטוס באמצעות העלאת CSV או AJAX. ייבוא CSV: /upload/vendor_{$vendorId}/ + עדכון אצווה דרך fgetcsv() עם בדיקת בעלות.
  • מלאי לפי מחסנים — אם השוק עובד עם מספר מחסנים, ניהול דרך CIBlockElement::Update() עם סינון מחסנים לפי מוכר.

כיצד המוכר מנהל הזמנות?

המוכר רואה רק תת-הזמנות המקושרות למוצריו. הממשק כולל רשימת תת-הזמנות עם מסננים לפי סטטוס, תאריך, סכום. תת-ההזמנות מאוחסנות בטבלת CCatalogStoreProduct, עם JOIN ל-mp_sub_orders לקבלת נתוני קונה. פרטי תת-ההזמנה מכילים רשימת פריטים, נתוני משלוח, כפתורי שינוי סטטוס. סטטוסים שהמוכר יכול לשנות: b_sale_order, confirmed → shipped. ביטולים יזומים על ידי הפלטפורמה או הקונה. טפסים להדפסה (חשבונית, תווית) נוצרים באמצעות tcpdf או תבנית עם shipped → delivered. עם הגעת תת-הזמנה חדשה, המוכר מקבל דוא"ל (print.css) ו/או הודעת Telegram, הניתנים להגדרה בפרופיל.

אילו כלים פיננסיים המוכר צריך?

  • יתרה ועסקאות. טבלת CEvent::Send() עם שדות: סוג (מכירה, עמלה, משיכה, החזר), סכום, תאריך, מקושר לתת-הזמנה. היתרה הנוכחית היא סכום כל הפעולות. מוצגת כטבלת ציר זמן עם דפדוף.
  • בקשת משיכה. המוכר יכול לבקש משיכה כאשר היתרה עולה על סף. הבקשה יוצרת רשומה ב-mp_finance_log עם סטטוס mp_payout_requests. מנהל מעבד אותה ידנית או דרך API של שער התשלום. אוטומציה של משיכות מפחיתה עלויות תפעול ב-30%.
  • דוחות. מכירות לתקופה, עמלות, החזרים — פורמט טבלה עם ייצוא ל-Excel (PhpSpreadsheet או ייצוא Bitrix מובנה).

אנליטיקה

אנליטיקת מוכר בסיסית:

מדד מקור
הכנסות לתקופה mp_sub_orders, GROUP BY date
מוצרים נמכרים ביותר b_sale_basket JOIN mp_sub_orders
המרה לפי סטטוס mp_sub_orders, GROUP BY status
דינמיקת דירוג mp_vendor_ratings
החזרים (%) mp_sub_orders WHERE status = 'refunded'

הנתונים מוצגים דרך AJAX, תרשימים עם Chart.js. צבירות כבדות נשמרות במטמון (Redis) עם עדכון סוכן שעתי.

השוואת גישות לבידוד נתונים

גישה אמינות מורכבות יישום המלצה
גישת קבוצה בלבד נמוכה (פגיעה ל-IDOR) נמוכה להימנע
סינון לפי UF_VENDOR_ID גבוהה בינונית שיטה עיקרית
הפרדה מלאה ברמת מסד הנתונים גבוהה מאוד גבוהה לפרויקטים גדולים

שיטת UF_VENDOR_ID משלבת אמינות גבוהה ומורכבות מתונה, מוכחת על למעלה מ-50 פרויקטים.

פרופיל מוכר והגדרות

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

מה כלול בעבודה

  • עיצוב ארכיטקטורת גישה ומסד נתונים (תיעוד).
  • פיתוח כל מודולי הלוח עם בדיקות.
  • אינטגרציה עם שערי תשלום ושירותי משלוח.
  • הדרכה למנהלי פלטפורמה (סמינר מקוון של שעתיים).
  • תמיכה טכנית למשך 3 חודשים.
  • מסירת קוד מקור, מיגרציות והוראות.

לוח זמנים: 11 עד 17 שבועות. העלות מחושבת באופן אישי לאחר ביקורת על הפרויקט הנוכחי. בקש פיתוח — נערוך ביקורת ונציע את הפתרון האופטימלי. קבל ייעוץ על ארכיטקטורת השוק שלך.

יש לנו למעלה מ-50 יישומים ואנחנו מוסמכים "1C-Bitrix: Expert". אנו מבטיחים תמחור שקוף ומסירה בשלבים.