Cara Membangun Marketplace Multi-Vendor dengan Laravel

Membangun marketplace adalah masalah data.

Kebanyakan pengembang mengira bagian tersulit adalah dashboard penjual. Padahal bukan. Tantangan sebenarnya adalah multi-tenancy. Anda harus memastikan setiap query menjawab satu pertanyaan: Siapa pemilik data ini?

Jika Anda membangun toko standar dan mencoba menambahkan vendor di kemudian hari, Anda akan menghadapi penulisan ulang (rewrite). Anda harus menyisipkan vendor ID ke dalam setiap model, setiap query, dan setiap keranjang belanja. Jika Anda melewatkan satu filter saja, satu penjual dapat melihat pesanan penjual lainnya. Itu adalah kebocoran data.

Anda memiliki tiga pilihan:

  • Bangun sendiri: Anda menulis setiap klausa scoping. Ini mahal dan berisiko.
  • Gunakan toko single-tenant dengan add-on: Anda menempelkan kolom vendor ke skema yang tidak dirancang untuk itu. Isolasi tetap rapuh.
  • Gunakan fondasi multi-tenant: Gunakan paket seperti Aimeos yang membangun isolasi ke dalam model data sejak hari pertama.

Berikut cara mengubah toko tunggal menjadi marketplace menggunakan Aimeos:

  1. Instal fondasinya Jalankan perintah ini untuk memulai: composer create-project aimeos/aimeos myshop

  2. Aktifkan mode multi-vendor Anda tidak perlu menulis ulang database Anda. Cukup ubah satu baris di file .env Anda: SHOP_MULTISHOP=true

Flag ini secara otomatis membatasi (scope) setiap route, API, dan panel admin ke situs tertentu. Sistem menangani pemisahan data untuk Anda.

  1. Aktifkan onboarding mandiri Untuk berkembang, biarkan vendor mendaftar sendiri. Tambahkan ini ke .env Anda: SHOP_REGISTRATION=true

Penjual baru hanya mendapatkan akses ke katalog, pesanan, dan pelanggan mereka sendiri. Mereka tidak dapat melihat hal lain.

Mengapa ini berhasil: Aimeos mengatur segalanya di sekitar "site". Setiap produk, harga, dan pesanan membawa site ID. Lapisan data menyaring ini secara otomatis. Anda tidak perlu menulis "where site_id = ?" karena sistem melakukannya untuk Anda.

Pendekatan ini menyelesaikan tiga masalah utama:

  • Keamanan: Isolasi data adalah properti dari database, bukan potongan kode yang mungkin Anda lupakan.
  • Kompleksitas: Vendor dapat mengelola produk kompleks seperti langganan atau paket (bundles) tanpa Anda harus mengubah skema.
  • Pembayaran: Anda dapat menggunakan ekstensi seperti Stripe untuk membagi pembayaran secara instan. Platform mengambil komisi dan penjual mendapatkan sisanya.

Berhenti membangun infrastruktur dasar. Mulailah membangun marketplace Anda.

Sumber: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a