Посібник розробника
Цей посібник охоплює розширену конфігурацію, налаштування та розробку з sCommerce.
Огляд архітектури
sCommerce слідує модульній архітектурі з чітким розділенням відповідальності:
sCommerce/
├── src/
│ ├── Models/ # Eloquent моделі
│ ├── Controllers/ # HTTP контролери
│ ├── Services/ # Бізнес-логіка
│ ├── Facades/ # Фасади сервісів
│ ├── Http/ # Маршрути та middleware
│ └── Integration/ # Зовнішні інтеграції
├── views/ # Blade шаблони
├── assets/ # CSS, JS, зображення
└── database/ # Міграції та сідери
Моделі
Модель sProduct
Основна модель товару з відносинами та атрибутами:
use Seiger\sCommerce\Models\sProduct;
// Створення товару
$product = sProduct::create([
'name' => 'Назва товару',
'alias' => 'nazva-tovaru',
'price_regular' => 999.99,
'category' => 1,
'published' => 1
]);
// Відносини
$product->category; // BelongsTo sCategory
$product->images; // HasMany sProductImage
$product->attributes; // HasMany sProductAttribute
$product->translates; // HasMany sProductTranslate
$product->reviews; // HasMany sProductReview
// Scope запити
sProduct::published(); // Тільки опубліковані товари
sProduct::inStock(); // Тільки товари в наявності
sProduct::byCategory(1); // Товари певної категорії
// Атрибути
$product->link; // URL товару
$product->reviewsCount; // Кількість відгуків
$product->averageRating; // Середній рейтинг
Модель sCategory
Управління категоріями з ієрархічною структурою:
use Seiger\sCommerce\Models\sCategory;
// Створення категорії
$category = sCategory::create([
'pagetitle' => 'Електроніка',
'alias' => 'elektronika',
'parent' => 0,
'published' => 1
]);
// Відносини
$category->children; // HasMany sCategory (підкатегорії)
$category->parent; // BelongsTo sCategory
$category->products; // HasMany sProduct
Модель sOrder
Управління та обробка замовлень:
use Seiger\sCommerce\Models\sOrder;
// Створення замовлення
$order = sOrder::create([
'customer_id' => 1,
'status' => 'pending',
'total' => 1999.98,
'currency' => 'UAH'
]);
Сервіси
Сервіс sCommerce
Основний сервісний клас для операцій електронної комерції:
use Seiger\sCommerce\Facades\sCommerce;
// Операції з товарами
$products = sCommerce::getProducts($filters);
$product = sCommerce::getProductByAlias($alias);
sCommerce::applyFilters([
'bicycle-category' => ['grevel'],
], $categoryId);
$product = sCommerce::getProduct($id);
// Операції з категоріями
$categories = sCommerce::getCategories();
$category = sCommerce::getCategory($id);
// Операції з кошиком
sCommerce::addToCart($productId, $quantity);
sCommerce::removeFromCart($itemId);
$cart = sCommerce::getCart();
// Операції із замовленнями
$order = sCommerce::createOrder($data);
Ручне керування фільтрами
use Seiger\sCommerce\sFilter;
sFilter::force([
'sex' => ['unisex'],
], $categoryId);
// ... вивід каталогу ...
sFilter::release();
Розробка API
REST API ендпоінти
sCommerce надає комплексний REST API:
// API товарів
GET /api/products # Список товарів
GET /api/products/{id} # Деталі товару
POST /api/products # Створення товару
PUT /api/products/{id} # Оновлення товару
DELETE /api/products/{id} # Видалення товару
// API категорій
GET /api/categories # Список категорій
GET /api/categories/{id} # Деталі категорії
// API кошика
GET /api/cart # Отримати кошик
POST /api/cart/items # Додати товар
DELETE /api/cart/items/{id} # Видалити товар
// API замовлень
GET /api/orders # Список замовлень
POST /api/orders # Створити замовлення
Користувацькі інтеграції
Інтеграція платіжних шлюзів
Створення власного платіжного шлюзу:
<?php namespace App\Payments;
use Seiger\sCommerce\Contracts\PaymentGatewayInterface;
class CustomPaymentGateway implements PaymentGatewayInterface
{
public function processPayment(array $data): array
{
// Логіка обробки платежу
$result = $this->callPaymentAPI($data);
return [
'success' => $result['status'] === 'success',
'transaction_id' => $result['transaction_id'],
'message' => $result['message']
];
}
}