Laravel ile Çok Satıcılı Bir Pazaryeri Nasıl Oluşturulur
Bir pazaryeri oluşturmak bir veri problemidir.
Çoğu geliştirici zor kısmın satıcı paneli olduğunu düşünür. Öyle değil. Asıl zorluk çoklu kiracılıktır (multi-tenancy). Her sorgunun şu tek bir soruya yanıt verdiğinden emin olmalısınız: Bu verinin sahibi kim?
Eğer standart bir mağaza kurup sonradan satıcılar eklemeye çalışırsanız, her şeyi yeniden yazmak zorunda kalırsınız. Her modele, her sorguya ve her sepete bir satıcı kimliği (vendor ID) işlemek zorundasınız. Eğer bir filtreyi atlarsanız, bir satıcı başka bir satıcının siparişlerini görür. Bu bir veri sızıntısıdır.
Üç seçeneğiniz var:
- Kendiniz inşa edin: Her kapsam belirleme (scoping) ifadesini siz yazarsınız. Bu maliyetli ve risklidir.
- Eklentilerle tek kiracılı (single-tenant) bir mağaza kullanın: Satıcı sütunlarını, onlar için tasarlanmamış bir şemaya eklemeye çalışırsınız. İzolasyon kırılgan kalır.
- Çok kiracılı bir temel kullanın: İlk günden itibaren izolasyonu veri modeline dahil eden Aimeos gibi bir paket kullanın.
Aimeos kullanarak tek bir mağazayı nasıl bir pazaryerine dönüştüreceğinizi aşağıda bulabilirsiniz:
1. Temeli kurun
Başlamak için bu komutu çalıştırın:
composer create-project aimeos/aimeos myshop
2. Çok satıcılı modu etkinleştirin
Veritabanınızı yeniden yazmanıza gerek yok. Sadece .env dosyanızdaki tek bir satırı değiştirin:
SHOP_MULTISHOP=true
Bu bayrak, her rotayı, API'yi ve yönetim panelini otomatik olarak belirli bir siteye göre sınırlar. Sistem, veri ayrıştırma işlemini sizin yerinize halleder.
3. Self-servis kaydı etkinleştirin
Ölçeklenmek için satıcıların kendi kendilerine kayıt olmalarına izin verin. Bunu .env dosyanıza ekleyin:
SHOP_REGISTRATION=true
Yeni satıcılar yalnızca kendi kataloglarına, siparişlerine ve müşterilerine erişebilirler. Başka hiçbir şeyi göremezler.
Neden işe yarar: Aimeos her şeyi "site" etrafında organize eder. Her ürün, fiyat ve sipariş bir site ID taşır. Veri katmanı bunu otomatik olarak filtreler. "where site_id = ?" yazmanıza gerek kalmaz çünkü sistem bunu sizin yerinize yapar.
Bu yaklaşım üç ana sorunu çözer:
- Güvenlik: Veri izolasyonu, unutabileceğiniz bir kod parçası değil, veritabanının bir özelliğidir.
- Karmaşıklık: Şemayı değiştirmenize gerek kalmadan satıcılar, abonelikler veya paketler gibi karmaşık ürünleri yönetebilirler.
- Ödemeler: Ödemeleri anında bölmek için Stripe gibi eklentiler kullanabilirsiniz. Platform bir komisyon alır ve satıcı geri kalanını alır.
Tesisat döşemeyi bırakın. Pazaryerinizi inşa etmeye başlayın.
Kaynak: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a
