איך לבנות מרקטפלייס רב-מוכרים (Multi-Vendor Marketplace) עם Laravel

בניית מרקטפלייס היא בעיית נתונים.

רוב המפתחים חושבים שהחלק הקשה הוא לוח הבקרה של המוכר (seller dashboard). זה לא. האתגר האמיתי הוא multi-tenancy. עליכם לוודא שכל שאילתה עונה על שאלה אחת: למי שייכים הנתונים האלו?

אם תבנו חנות סטנדרטית ותנסו להוסיף מוכרים מאוחר יותר, תצטרכו לבצע כתיבה מחדש. תצטרכו להעביר vendor ID דרך כל מודל, כל שאילתה וכל עגלת קניות. אם תפספסו מסנן אחד, מוכר אחד יראה הזמנות של מוכר אחר. זוהי דליפת נתונים.

יש לכם שלוש אפשרויות:

  • לבנות זאת בעצמכם: אתם כותבים כל scoping clause. זה יקר ומסוכן.
  • להשתמש בחנות single-tenant עם תוספים: אתם "מדביקים" עמודות של מוכרים על סכימה שלא תוכננה עבורן. הבידוד נשאר שברירי.
  • להשתמש בתשתית multi-tenant: השתמשו בחבילה כמו Aimeos שבנתה בידוד בתוך מודל הנתונים מהיום הראשון.

הנה איך להפוך חנות בודדת למרקטפלייס באמצעות Aimeos:

  1. התקינו את התשתית הריצו את הפקודה הזו כדי להתחיל: composer create-project aimeos/aimeos myshop

  2. הפעילו מצב רב-מוכרים אין צורך לכתוב מחדש את מסד הנתונים שלכם. פשוט שנו שורה אחת בקובץ ה-.env שלכם: SHOP_MULTISHOP=true

הדגל הזה מגדיר באופן אוטומטי scoping לכל route, API ולוח בקרה (admin panel) לאתר ספציפי. המערכת מטפלת בהפרדת הנתונים עבורכם.

  1. הפעילו הרשמה עצמית כדי לצמוח, אפשרו למוכרים להירשם בעצמם. הוסיפו זאת ל-.env שלכם: SHOP_REGISTRATION=true

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

למה זה עובד: Aimeos מארגנת הכל סביב ה-"site". לכל מוצר, מחיר והזמנה יש site ID. שכבת הנתונים מסננת זאת באופן אוטומטי. אתם לא צריכים לכתוב "where site_id = ?" כי המערכת עושה זאת עבורכם.

הגישה הזו פותרת שלוש בעיות עיקריות:

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

תפסיקו לבנות צנרת. תתחילו לבנות את המרקטפלייס שלכם.

מקור: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a