assoft/aras-kargo-laravel

Modern Laravel package for Aras Kargo API integration with advanced caching, logging, and rate limiting features

Fund package maintenance!
Patreon

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 20

Open Issues: 0

pkg:composer/assoft/aras-kargo-laravel

v1.0.0 2025-10-28 02:31 UTC

This package is auto-updated.

Last update: 2025-10-28 02:43:26 UTC


README

Latest Stable Version Total Downloads License Build Status

Modern Laravel package for Aras Kargo API integration with advanced caching, logging, and rate limiting features. Perfect for Laravel 11/12 applications that need to track cargo shipments and manage logistics data.

Özellikler

  • ✅ Laravel 11/12 desteği
  • ✅ Modern PHP 8.1+ özellikleri
  • ✅ Cache entegrasyonu
  • ✅ Logging sistemi
  • ✅ Service Provider ve Facade desteği
  • ✅ Configuration management
  • ✅ Exception handling
  • ✅ Type declarations

Change Log

License

Kurulum

Laravel projenizde composer ile kurulum yapın:

composer require assoft/aras-kargo-laravel

Laravel Auto-Discovery

Paket Laravel'in auto-discovery özelliğini destekler. Service Provider ve Facade otomatik olarak yüklenir.

Manuel Kurulum

Eğer auto-discovery devre dışıysa, config/app.php dosyasına ekleyin:

'providers' => [
    // ...
    Assoft\ArasKargo\Providers\ArasKargoServiceProvider::class,
],

'aliases' => [
    // ...
    'ArasKargo' => Assoft\ArasKargo\Facades\ArasKargo::class,
],

Configuration

Configuration dosyasını publish edin:

php artisan vendor:publish --provider="Assoft\ArasKargo\Providers\ArasKargoServiceProvider" --tag="aras-kargo-config"

.env dosyanıza Aras Kargo bilgilerinizi ekleyin:

ARAS_KARGO_USERNAME=your_username
ARAS_KARGO_PASSWORD=your_password
ARAS_KARGO_CUSTOMER_CODE=your_customer_code
ARAS_KARGO_CACHE_ENABLED=true
ARAS_KARGO_LOGGING_ENABLED=true

Kullanım

Facade Kullanımı

use Assoft\ArasKargo\Facades\ArasKargo;

// Kargo bilgisi sorgulama
$cargo = ArasKargo::getCargoInformation('9023745602734');

// Tarih aralığı sorgulama
$cargos = ArasKargo::getCargoBetweenDate('01-01-2024', '31-01-2024');

Service Container Kullanımı

use Assoft\ArasKargo\Contracts\ArasKargoInterface;

class CargoController extends Controller
{
    public function __construct(
        private ArasKargoInterface $arasKargo
    ) {}
    
    public function track(Request $request)
    {
        return $this->arasKargo->getCargoInformation($request->tracking_number);
    }
}

Rate Limiting Middleware (Opsiyonel)

Rate limiting middleware'i kullanarak API isteklerini sınırlayabilirsiniz. Varsayılan olarak devre dışıdır.

1. Rate Limiting'i Etkinleştirme

.env dosyasında rate limiting'i etkinleştirin:

ARAS_KARGO_RATE_LIMIT_ENABLED=true
ARAS_KARGO_RATE_LIMIT_MAX_ATTEMPTS=60
ARAS_KARGO_RATE_LIMIT_DECAY_MINUTES=1
ARAS_KARGO_RATE_LIMIT_KEY_PREFIX=aras_kargo_rate_limit

2. Middleware Kullanımı

// routes/api.php
Route::middleware(['aras-kargo.rate-limit:60,1'])->group(function () {
    Route::get('/cargo/{trackingNumber}', [CargoController::class, 'track']);
});

// Controller'da middleware kullanımı
class CargoController extends Controller
{
    public function __construct()
    {
        $this->middleware('aras-kargo.rate-limit:30,1'); // 30 istek/dakika
    }
}

3. Config Dosyasından Yönetim

// config/aras-kargo.php
'rate_limit' => [
    'enabled' => env('ARAS_KARGO_RATE_LIMIT_ENABLED', false), // Default: disabled
    'max_attempts' => env('ARAS_KARGO_RATE_LIMIT_MAX_ATTEMPTS', 60),
    'decay_minutes' => env('ARAS_KARGO_RATE_LIMIT_DECAY_MINUTES', 1),
    'key_prefix' => env('ARAS_KARGO_RATE_LIMIT_KEY_PREFIX', 'aras_kargo_rate_limit'),
],

4. Özellikler

  • Opsiyonel: Varsayılan olarak devre dışı
  • Config Tabanlı: Tüm ayarlar config dosyasından yönetilebilir
  • Kullanıcı Bazlı: Authenticated kullanıcılar için ayrı limitler
  • IP Bazlı: Anonymous kullanıcılar için IP bazlı limitler
  • Flexible: Middleware parametreleri config değerlerini override edebilir

Fonksiyonlar

/**
 *
 * @description Bir kargonun durumu hakkında bilgi verir.
 * @param string Kargo Numarası
 *
 */
$aras->getCargoInformation(9023745602734);

/**
 *
 * @description Belirli bir tarihe göre gönderilen kargoların listesini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int
 *
 */
$aras->getCargoMovementDate(date('d-m-Y'));

/**
 *
 * @description Teslim tarihine göre teslim edilen kargoların listesini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int
 *
 */
$aras->getCargoDevileryDate(date('d-m-Y'));

/**
 *
 * @description İrsaliye tarihine göre teslim edilen kargoların listesini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int
 *
 */
$aras->getCargoWaybillDevileryDate(date('d-m-Y'));

/**
 *
 * @description Henüz teslim edilmemiş, bir nedenle teslimat şubesinde bekleyen kargoların listesini verir.
 *
 */
$aras->getCargoUnDevilered();

/**
 *
 * @description Belirli bir tarihe göre yönlendirilen kargoların listesini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int
 *
 */
$aras->getCargoRedirectDate(date('d-m-Y'));

/**
 *
 * @description İrsaliye tarihine göre Gidiş dönüş hizmet verilen Geri Dönüşlü kargo 
 * 				ürünü ile gönderilen kargoların listesini verir
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int
 *
 */
$aras->getCargoWaybillBackRedirectDate(date('d-m-Y'));

/**
 *
 * @description Göndericiye iade edilen kargoların listesini verir
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int
 *
 */
$aras->getCargoSenderReturnDate(date('d-m-Y'));

/**
 *
 * @description Kargo hareket bilgisini verir
 * @param int Kargo Numarası
 *
 */
$aras->getCargoMovementInformation(9023745602734);

/**
 *
 * @description Aras Kargoya Ait tüm şube ve şube adres bilgilerini verir.
 *
 */
$aras->getAllBranchs();

/**
 *
 * @description İki Tarih aralığına göre (İrsaliye Tarihi), kargoların listesini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int 
 * @param string veya int
 *
 */
$aras->getCargoWaybillBetweenDate(date('d-m-Y', time() - 86400 * 30) , date('d-m-Y'));

/**
 *
 * @description İki tarih aralığına göre (İrsaliya Tarihi), kargo listesini verir.
 *				getCargoWaybillBetweenDate'den farklı olarak tahsilatlı kargo bilgilerini de içerir. 
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int 
 * @param string veya int
 *
 */
$aras->getCargoWaybillExtraBetweenDate(date('d-m-Y', time() - 86400 * 30) , date('d-m-Y'));

/**
 *
 * @description İki Tarih aralığına göre, kargoların devir bilgisini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int 
 * @param string veya int
 *
 */
$aras->getCargoTransferBetweenDate(date('d-m-Y', time() - 86400 * 30) , date('d-m-Y'));

/**
 *
 * @description İki Tarih aralığına göre, kargoların listesini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int 
 * @param string veya int
 *
 */
$aras->getCargoBetweenDate(date('d-m-Y', time() - 86400 * 30) , date('d-m-Y'));

/**
 *
 * @description İki Tarih aralığına gore (İrsaliye Tarihi), kargoların bilgisini verir.
 * @note string olarak (d-m-Y) veya int olarak unix timestamp kullanılabilir.
 * @param string veya int 
 * @param string veya int
 *
 */
$aras->getCargoWaybillInformationBetweenDate(date('d-m-Y', time() - 86400 * 30) , date('d-m-Y'));

/**
 *
 * @description Kargo Durumuyla ilgili genel bilgi verir.
 * 				Eğer kargo geri dönüşlü ise bu dataset dolu gelir ve geri dönüş teslimat bilgilerini içerir.
 *  			Eğer kargo Geri Dönüşlü değilse bu dataset dolu gelir ve kargo teslimat bilgilerini içerir.
 *				Kargonun devir bilgilerini içerir.
 *				Kargo Yönlendirme ve İade Hareketleri ve Nedenlerini içerir
 *				Geri Dönüşlü Kargo Bilgilerini içerir
 * @param int Kargo Numarası
 * @return array 
 *
 */
$aras->getCargoRealInformation(9093773579276);

/**
 *
 * @description Fatura Bilgilerini Döner
 *				Normal Fatura ve E-Fatura araması yapılabilir.
 *				Fatura No ve Fatura Tipi parametre olarak geçilir. 
 *				Normal fatura için 'fatura', EFatura için 'efatura' parametresi geçilir.
 * @param string Fatura Numarası
 * @param string Fatura Türü (efatura/fatura)
 * @return array 
 *
 */
$aras->getCargoInvoice("AAA201400040405", 'fatura');

/**
 *
 * @description Aras kargonun bugün teslim edilen kargo sayısını döner
 * @return array 
 *
 */
$aras->getCargoCountToday();

/**
 *
 * @description Kampanya kodu bilgilerini döner
 * @return array 
 *
 */
$aras->getCampaignCode("KAMPANYAKODU");