baks-dev/avito-orders
Laravel/PHP модуль заказов Avito (FBS/DBS): добавляет тип профиля, оплату и доставку для заказов Avito. Установка через Composer, настройка через консольные команды (baks:*), есть тесты PHPUnit. PHP 8.4+.
Install the Package
composer require baks-dev/avito-orders
Set Up Required Profiles, Payments, and Deliveries Choose either FBS (Fulfillment by Avito) or DBS (Delivery by Avito) and run the corresponding commands:
# For FBS (Warehouse Delivery)
php artisan baks:users-profile-type:avito-fbs
php artisan baks:payment:avito-fbs
php artisan baks:delivery:avito-fbs
# For DBS (Direct Delivery)
php artisan baks:users-profile-type:avito-dbs
php artisan baks:payment:avito-dbs
php artisan baks:delivery:avito-dbs
Verify Installation Check the database for new tables related to Avito profiles, payments, and deliveries. Run the provided PHPUnit tests to ensure basic functionality:
php artisan test --group=avito-orders
First Integration Use Case Create a Laravel controller to handle incoming Avito orders. Example:
use BaksDev\AvitoOrders\Facades\AvitoOrder;
public function handleAvitoOrder(Request $request) {
$orderData = $request->all();
$avitoOrder = AvitoOrder::createFromAvito($orderData);
return response()->json(['status' => 'Order processed']);
}
Order Processing Workflow
AvitoOrder facade to create, update, and retrieve orders:
// Create an order from Avito data
$order = AvitoOrder::createFromAvito($avitoOrderData);
// Update order status
$order->updateStatus('shipped');
// Retrieve an order
$order = AvitoOrder::find($orderId);
Profile Management
use BaksDev\AvitoOrders\Models\AvitoProfile;
$user->profile()->attach(AvitoProfile::whereType('avito-fbs')->first());
Payment Handling
use BaksDev\AvitoOrders\Facades\AvitoPayment;
$payment = AvitoPayment::process($orderId, $amount);
Delivery Management
use BaksDev\AvitoOrders\Facades\AvitoDelivery;
$delivery = AvitoDelivery::createForOrder($orderId, 'avito-fbs');
$delivery->updateStatus('delivered');
FBS (Fulfillment by Avito) Workflow
AvitoOrder::createFromAvito().AvitoDelivery::syncToWarehouse($orderId) to update Avito’s warehouse system.DBS (Delivery by Avito) Workflow
AvitoDelivery::generateShippingLabel($orderId) to create shipping labels via Avito’s API.$delivery->updateTrackingInfo(['tracking_number' => '1Z999AA10123456788']);
Laravel-Symfony Bridge
// config/app.php
'providers' => [
BaksDev\AvitoOrders\AvitoOrdersServiceProvider::class,
],
Event Listeners
// Example: Listen for order created events
public function handleOrderCreated($event) {
// Custom logic (e.g., send notification)
Notification::send($event->order->user, new OrderCreated($event->order));
}
Queue Jobs
use BaksDev\AvitoOrders\Jobs\UpdateAvitoDeliveryStatus;
UpdateAvitoDeliveryStatus::dispatch($delivery)->onQueue('avito');
API Webhooks
Route::post('/avito/webhook', [AvitoWebhookController::class, 'handle']);
Symfony Dependency Conflicts
Console, HttpKernel). Ensure your Laravel project can handle these dependencies without conflicts.spatie/laravel-symfony or manually bind Symfony services to Laravel’s container.Database Schema Conflicts
avito_orders, avito_deliveries) may conflict with existing Laravel migrations.Artisan Command Namespace Collisions
App\Console\Kernel.PHP Version Mismatch
Undocumented Assumptions
baks-dev/core, which may introduce hidden dependencies.baks-dev/core dependencies and ensure compatibility with Laravel.Enable Debug Logging
'logging' => [
'channels' => [
'avito' => [
'driver' => 'single',
'path' => storage_path('logs/avito.log'),
'level' => 'debug',
],
],
],
Symfony Debug Dump
dump() function for debugging:
use Symfony\Component\VarDumper\VarDumper;
VarDumper::dump($avitoOrderData);
Test in Isolation
Avito API Credentials
.env):
AVITO_API_KEY=your_api_key
AVITO_API_SECRET=your_api_secret
Delivery Method Configuration
'avito' => [
'delivery' => [
'fbs' => [
'enabled' => true,
'warehouse_id' => 'your_warehouse_id',
],
'dbs' => [
'enabled' => true,
'carrier_id' => 'your_carrier_id',
],
],
],
Event Dispatching
AvitoOrder::created(function ($order) {
// Custom logic
});
Custom Order Validation
use BaksDev\AvitoOrders\Rules\AvitoOrderValidation;
$validator = Validator::make($data, [
'item_id' => ['required', new AvitoOrderValidation],
]);
Webhook Handlers
public function handleWebhook(Request $request) {
$payload = $request->json()->all();
if ($payload['event'] === 'order_updated') {
// Custom logic for order updates
}
return response()->json(['status' => 'success']);
}
Delivery Status Transitions
use BaksDev\AvitoOrders\Contracts\DeliveryStatus;
class CustomDeliveryStatus implements DeliveryStatus {
public function getStatuses(): array {
return ['pending', 'shipped', 'delivered', 'cancelled'];
}
}
Payment Gateway Integration
use BaksDev\AvitoOrders\Contracts\PaymentGateway;
class StripePaymentGateway implements PaymentGateway {
public function processPayment
How can I help you explore Laravel packages today?