baks-dev/wildberries-support
Laravel/PHP 8.4+ пакет baks-dev/wildberries-support: модуль техподдержки Wildberries. Установка через Composer, включены PHPUnit-тесты (группа wildberries-support). Лицензия MIT.
Installation:
composer require baks-dev/wildberries-support
Basic Usage:
use BaksDev\Wildberries\Support\Facades\WildberriesSupport;
// Initialize with credentials (check if .env support is added in v7.4.19)
WildberriesSupport::setCredentials(
env('WILDBERRIES_API_KEY'),
env('WILDBERRIES_SECRET_KEY')
);
// Example: Fetch orders (verify method exists in v7.4.19)
$orders = WildberriesSupport::getOrders(['limit' => 10]);
First Use Case:
$order = WildberriesSupport::getOrderById(12345);
Order::updateOrCreate(
['external_id' => $order['id']],
['status' => $order['status'], 'updated_at' => now()]
);
vendor/baks-dev/wildberries-support/src/ for method signatures and undocumented features.php bin/phpunit --group=wildberries-support to see real-world usage patterns.Order Management:
// Fetch orders with pagination
$orders = WildberriesSupport::getOrders(['page' => 1, 'per_page' => 50]);
// Update order status (verify method in v7.4.19)
WildberriesSupport::updateOrderStatus(12345, 'shipped');
Catalog Integration:
// Add/Update products
WildberriesSupport::addProduct([
'name' => 'Test Product',
'price' => 999,
'stock' => 100,
]);
// Fetch product by ID
$product = WildberriesSupport::getProduct(67890);
Support Tickets:
// Create a support ticket
$ticket = WildberriesSupport::createTicket([
'subject' => 'Order Issue',
'message' => 'Delivery delayed',
'order_id' => 12345,
]);
// Fetch ticket updates
$updates = WildberriesSupport::getTicketUpdates($ticket['id']);
Service Provider Wrapper:
// Register in AppServiceProvider
$this->app->singleton('wildberries', function () {
return new \BaksDev\Wildberries\Support\Client(
env('WILDBERRIES_API_KEY'),
env('WILDBERRIES_SECRET_KEY')
);
});
Queue Jobs for Async Operations:
// Sync orders job
class SyncWildberriesOrders implements ShouldQueue
{
public function handle()
{
$orders = WildberriesSupport::getOrders();
foreach ($orders as $order) {
Order::updateOrCreate(
['external_id' => $order['id']],
['status' => $order['status']]
);
}
}
}
Event Listeners for Webhooks (if supported in v7.4.19):
// Example: Handle order status updates
public function handle(OrderStatusUpdated $event)
{
WildberriesSupport::updateOrderStatus(
$event->order->external_id,
$event->newStatus
);
}
API Rate Limit Handling:
// Retry logic for rate-limited endpoints
try {
$response = WildberriesSupport::getOrders();
} catch (\BaksDev\Wildberries\Support\Exceptions\RateLimitExceeded $e) {
sleep($e->retryAfter);
retry();
}
Normalize Wildberries Responses:
$order = WildberriesSupport::getOrder(12345);
$normalized = [
'id' => $order['id'],
'status' => $order['status'],
'created_at' => Carbon::parse($order['created_at']),
'items' => collect($order['items'])->map(function ($item) {
return [
'product_id' => $item['product_id'],
'quantity' => $item['quantity'],
];
}),
];
Bulk Operations with Chunking:
WildberriesSupport::getOrders(['limit' => 1000])->chunk(100, function ($chunk) {
foreach ($chunk as $order) {
// Process each order
}
});
Authentication Quirks:
class WildberriesWrapper {
public function __call($method, $args) {
WildberriesSupport::setCredentials(
env('WILDBERRIES_API_KEY'),
env('WILDBERRIES_SECRET_KEY')
);
return WildberriesSupport::$method(...$args);
}
}
Response Format Changes:
Undocumented Methods:
php artisan tinker to explore:
\BaksDev\Wildberries\Support\Facades\WildberriesSupport::getAvailableMethods();
Rate Limits:
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
try {
$response = WildberriesSupport::getOrders();
} catch (ResourceNotFoundException $e) {
if ($e->getCode() === 429) {
sleep(60); // Wait 1 minute
retry();
}
}
Webhook Delays:
Enable Verbose Logging:
WildberriesSupport::setLogLevel(\Monolog\Logger::DEBUG);
Mock HTTP Calls in Tests:
use Illuminate\Support\Facades\Http;
Http::fake([
'api.wildberries.ru/orders' => Http::response(['data' => []], 200),
]);
$orders = WildberriesSupport::getOrders();
Inspect Raw Responses:
$response = WildberriesSupport::getOrders(['debug' => true]);
// $response now includes raw HTTP data
Custom Response Transformers:
WildberriesSupport::setTransformer('orders', function ($data) {
return collect($data)->map(function ($order) {
return [
'id' => $order['id'],
'formatted_date' => Carbon::parse($order['created_at'])->format('Y-m-d H:i:s'),
];
});
});
Add New Endpoints:
// Extend the client class
namespace App\Services;
use BaksDev\Wildberries\Support\Client;
class ExtendedWildberriesClient extends Client
{
public function getCustomerReviews($orderId)
{
return $this->request('GET', "/orders/{$orderId}/reviews");
}
}
Override Default Config:
// In config/wildberries.php
'defaults' => [
'timeout' => 30, // Override default timeout
'retry_attempts' => 3,
],
Environment Variables:
.env variables.config(['wildberries.credentials' => [
'key' => env('WILDBERRIES_API_KEY'),
'secret' => env('WILDBERRIES_SECRET_KEY'),
]]);
Default Headers:
Accept-Language or User-Agent headers may cause issues.WildberriesSupport::setDefaultHeaders([
'Accept-Language' => 'ru-RU',
'
How can I help you explore Laravel packages today?