mpyazilim / logistics
Coklu kargo API kutuphanesi
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/mpyazilim/logistics
Requires
- ext-curl: *
- ext-soap: *
This package is auto-updated.
Last update: 2026-02-08 08:26:24 UTC
README
Coklu kargo API kutuphanesi.
Desteklenen Kargolar
| Kargo | Gonderi (send) |
Iade (return) |
Takip | Silme/Iptal | Not |
|---|---|---|---|---|---|
| PTT | Var | Var | Var (barkodTakip, referansTakip) |
Var (kargoSil) |
SOAP |
| DHL (MNG) | Var | Var | Var (kargoDurum, kargoHareketleri) |
Yok | REST + token |
| HepsiJet | Var | Yok | Var (kargoTakip) |
Var (kargoSil) |
REST + token |
| Aras Kargo | Var | send ile ayni akis |
Var (kargoTakip) |
Var (barkodSil) |
SOAP |
| UPS | Var | Yok | Var (kargoTakip) |
Yok | SOAP + session |
Test Durumu
- Bu repoda su an otomatik entegrasyon testi yok.
- Yukaridaki tum entegrasyonlar icin canli/sandbox ortamda uctan uca test yapilmadi.
- Ozellikler uygulandi, ancak servis bazli dogrulama (gercek API cevabiyla) henuz tamamlanmadi.
Kurulum
composer require mpyazilim/logistics
Ilk Entegrasyon: PTT
<?php use MPYazilim\Logistics\MPLogistics; $response = MPLogistics::ptt() ->account( username: 'NORMAL_KULLANICI', password: 'NORMAL_SIFRE', postaCeki: 'POSTA_CEKI' ) ->payload( dosyaAdi: 'BATCH_20260207', gonderiTur: 'KARGO', gonderiTip: 'NORMAL', aAdres: 'Mahalle Adres Ilce/Il', aliciAdi: 'Ad Soyad', agirlik: 0, aliciIlAdi: 'ISTANBUL', aliciIlceAdi: 'KADIKOY', aliciSms: '905551112233', barkodNo: '1234567890', odemeSartUcreti: 100.50, musteriReferansNo: 1452, rezerve1: 'POSTA_CEKI', yukseklik: 0, boy: '', desi: '', ekhizmet: '', en: '', odemesekli: 'GONDERICI', gondericibilgi: null, kullanici: 'PttWs' ) ->test(false) ->send(); $hareketler = MPLogistics::ptt() ->account( username: 'NORMAL_KULLANICI', password: 'NORMAL_SIFRE', postaCeki: 'POSTA_CEKI' ) ->test(false) ->kargoHareketleri('1234567890'); $referansTakip = MPLogistics::ptt() ->account( username: 'NORMAL_KULLANICI', password: 'NORMAL_SIFRE', postaCeki: 'POSTA_CEKI' ) ->test(false) ->referansTakip('REF-1001');
Iade gonderimi:
$response = MPLogistics::ptt() ->account( username: 'IADE_KULLANICI_ADI', // iadeKullaniciAdi password: 'IADE_SIFRE', // iadeSifre postaCeki: 'POSTA_CEKI' ) ->payload( dosyaAdi: 'BATCH_RETURN_20260207', gonderiTur: 'KARGO', gonderiTip: 'NORMAL', aAdres: 'Mahalle Adres Ilce/Il', aliciAdi: 'Ad Soyad', agirlik: 0, aliciIlAdi: 'ISTANBUL', aliciIlceAdi: 'KADIKOY', aliciSms: '905551112233', barkodNo: '', odemeSartUcreti: 0, musteriReferansNo: 1452, // refno rezerve1: 'POSTA_CEKI', yukseklik: 0, boy: '', desi: '', ekhizmet: '', en: '', odemesekli: 'MH', gondericibilgi: [ 'gonderici_adi' => 'Ad', 'gonderici_adresi' => 'Mahalle Adres Ilce/Il', 'gonderici_email' => '', 'gonderici_il_ad' => 'ISTANBUL', 'gonderici_ilce_ad' => 'KADIKOY', 'gonderici_posta_kodu' => '', 'gonderici_sms' => '', 'gonderici_soyadi' => 'Soyad', 'gonderici_telefonu' => '905551112233', 'gonderici_ulke_id' => '', ] ) ->test(false) ->return();
Notlar
- PTT icin dizi anahtari yerine named argument kullanilir; IDE otomatik alan onerir.
account()icindeusername,password,postaCekibos gecilemez.payload()parametreleri PTT veri modeline ozel olarak tanimlidir.->return()icin ayrica bir alan yok; iade bilgilerini dogrudanaccount(username:, password:)icine girersin.->return()cagrildigindamusteriId = username,->send()cagrildigindamusteriId = postaCekiolarak gonderilir.- PTT test ortami icin
->test(true)kullanilir ve otomatik olarak...V2Test/...YuklemeTestendpointlerine gider.
DHL (MNG) Entegrasyonu
Normal gonderi:
<?php use MPYazilim\Logistics\MPLogistics; $response = MPLogistics::dhl() ->account( username: 'MNG_CUSTOMER_NUMBER', password: 'MNG_PASSWORD', clientId: 'MNG_CLIENT_ID', clientSecret: 'MNG_CLIENT_SECRET' ) ->payload( referenceId: 'REF-1001', barcode: 'REF-1001', isCOD: false, codAmount: 0, shipmentServiceType: 1, packagingType: 1, paymentType: 1, deliveryType: 1, content: '1001', description: 'Order : 1001', cityCode: 34, cityName: 'ISTANBUL', districtName: 'KADIKOY', districtCode: 34001, address: 'Mahalle Sokak No:1', fullName: 'Ad Soyad', mobilePhoneNumber: '905551112233', pieceBarcode: 'Product', pieceDesi: 0, pieceKg: 0, pieceContent: '', smsPreference1: 0, smsPreference2: 0, smsPreference3: 0, billOfLandingId: 'REF-1001', marketPlaceShortCode: '', marketPlaceSaleCode: '', pudoId: '', customerId: '', refCustomerId: '', bussinessPhoneNumber: '', email: 'mail@ornek.com', taxOffice: '', taxNumber: '', homePhoneNumber: '' ) ->test(false) ->send(); $dhlHareket = MPLogistics::dhl() ->account( username: 'MNG_CUSTOMER_NUMBER', password: 'MNG_PASSWORD', clientId: 'MNG_CLIENT_ID', clientSecret: 'MNG_CLIENT_SECRET' ) ->test(false) ->kargoHareketleri('REF-1001'); $dhlDurum = MPLogistics::dhl() ->account( username: 'MNG_CUSTOMER_NUMBER', password: 'MNG_PASSWORD', clientId: 'MNG_CLIENT_ID', clientSecret: 'MNG_CLIENT_SECRET' ) ->test(false) ->kargoDurum('REF-1001');
Iade gonderi:
$response = MPLogistics::dhl() ->account( username: 'MNG_CUSTOMER_NUMBER', password: 'MNG_PASSWORD', clientId: 'MNG_CLIENT_ID', clientSecret: 'MNG_CLIENT_SECRET' ) ->payload( referenceId: 'REF-1001', barcode: 'REF-1001', isCOD: false, codAmount: 0, shipmentServiceType: 1, packagingType: 1, paymentType: 2, deliveryType: 1, content: '1001', description: 'Order : 1001', cityCode: 34, cityName: 'ISTANBUL', districtName: 'KADIKOY', districtCode: 34001, address: 'Alici adresi', fullName: 'Alici Ad Soyad', mobilePhoneNumber: '905551112233', shipper: [ 'customerId' => '', 'refCustomerId' => '', 'cityCode' => 34, 'cityName' => 'ISTANBUL', 'districtName' => 'KADIKOY', 'districtCode' => 34001, 'address' => 'Gonderici adresi', 'bussinessPhoneNumber' => '', 'email' => 'mail@ornek.com', 'taxOffice' => '', 'taxNumber' => '', 'fullName' => 'Gonderici Ad Soyad', 'homePhoneNumber' => '', 'mobilePhoneNumber' => '905551112233', ] ) ->test(false) ->return();
MPLogistics::dhl()DHL olarak adlandirildi (MNG API endpointlerini kullanir).->return()cagrisinda otomatik olarakcreateReturnOrderendpointine gider.- Token temp dosyada cachelenir (
30 dakika), suresi dolmadan yeniden token istenmez.
HepsiJet Entegrasyonu
HepsiJet tarafinda iade yoktur.
<?php use MPYazilim\Logistics\MPLogistics; $resp = MPLogistics::hepsijet() ->account( username: 'HEPSIJET_USERNAME', password: 'HEPSIJET_PASSWORD', companyName: 'SIRKET_ADI', companyCode: 'SIRKET_KODU' ) ->payload( customerDeliveryNo: 'BARCODE_1001', customerOrderId: 'BARCODE_1001', totalParcels: '1', desi: '1', deliveryDateOriginal: '2026-02-07', deliveryType: 'RETAIL', productCode: 'HX_STD', receiverCompanyCustomerId: 'BARCODE_1001_ADDR_1', receiverFirstName: 'Ad', receiverLastName: 'Soyad', receiverPhone1: '905551112233', receiverEmail: 'mail@ornek.com', senderCompanyAddressId: 'SENDER_ADDRESS_ID', senderCityName: 'ISTANBUL', senderTownName: 'KADIKOY', senderDistrictName: 'SARUHAN', senderAddressLine1: 'Depo adresi', recipientCompanyAddressId: 'RECIPIENT_ADDR_1', recipientCityName: 'ISTANBUL', recipientTownName: 'KADIKOY', recipientDistrictName: '', recipientAddressLine1: 'Musteri adresi', recipientPerson: 'Ad Soyad', recipientPersonPhone1: '905551112233', countryName: 'Turkiye', deliverySlotOriginal: '0', extra: [] // kapida odeme gibi ek alanlar ) ->test(false) ->send(); $takip = MPLogistics::hepsijet() ->account( username: 'HEPSIJET_USERNAME', password: 'HEPSIJET_PASSWORD', companyName: 'SIRKET_ADI', companyCode: 'SIRKET_KODU' ) ->test(false) ->kargoTakip('BARCODE_1001'); $takipLink = MPLogistics::hepsijet() ->account( username: 'HEPSIJET_USERNAME', password: 'HEPSIJET_PASSWORD', companyName: 'SIRKET_ADI', companyCode: 'SIRKET_KODU' ) ->test(false) ->takipLinkOlustur([ 'customerDeliveryNo' => 'BARCODE_1001', ]); $sil = MPLogistics::hepsijet() ->account( username: 'HEPSIJET_USERNAME', password: 'HEPSIJET_PASSWORD', companyName: 'SIRKET_ADI', companyCode: 'SIRKET_KODU' ) ->test(false) ->kargoSil('BARCODE_1001');
- HepsiJet token temp dosyada cachelenir (
30 dakika). - Token bitimine
5 dakikakala yenilenir. - Istersen
payloadRaw([...])ile HepsiJet'e ham payload da gonderebilirsin.
Aras Kargo Entegrasyonu
<?php use MPYazilim\Logistics\MPLogistics; $resp = MPLogistics::aras() ->account( username: 'ARAS_USERNAME', password: 'ARAS_PASSWORD', customerCode: 'ARAS_CUSTOMER_CODE' ) ->payload( tradingWaybillNumber: 'REF-1001', integrationCode: '1001', receiverName: 'Ad Soyad', receiverAddress: 'Mahalle Adres Ilce/Il', receiverPhone1: '905551112233', receiverCityName: 'ISTANBUL', receiverTownName: 'KADIKOY', payorTypeCode: 1, isWorldWide: 0, isCod: 0, codAmount: 0, codCollectionType: 0, barcodeNumber: 'BARCODE_1001' ) ->send(); $takip = MPLogistics::aras() ->account( username: 'ARAS_USERNAME', password: 'ARAS_PASSWORD', customerCode: 'ARAS_CUSTOMER_CODE' ) ->kargoTakip((string) $siparisId); $sil = MPLogistics::aras() ->account( username: 'ARAS_USERNAME', password: 'ARAS_PASSWORD', customerCode: 'ARAS_CUSTOMER_CODE' ) ->barkodSil((string) $siparisId);
- Aras icin de diger kargolar gibi ana kullanim
account(...)->payload(...)->send()seklindedir. - Dilersen Aras'a ham alan gondermek icin
payloadRaw([...])kullanabilirsin.
UPS Entegrasyonu
<?php use MPYazilim\Logistics\MPLogistics; $resp = MPLogistics::ups() ->account( customerNumber: 'UPS_CUSTOMER_NUMBER', username: 'UPS_USERNAME', password: 'UPS_PASSWORD' ) ->payload( shipperAccountNumber: $customer, shipperName: 'Firma Adi', shipperAddress: 'Gonderici adresi', shipperCityCode: 51, shipperAreaCode: 701, consigneeName: "{$adres->isim} {$adres->soyisim}", consigneeContactName: "{$adres->isim} {$adres->soyisim}", consigneeAddress: "{$adres->mahalle} {$adres->adres} {$adres->ilce}/{$adres->il}", consigneeCityCode: $ilCode, consigneeAreaCode: $ilceCode, consigneePhoneNumber: $telefon, consigneeMobilePhoneNumber: $telefon, packageType: 'D', serviceLevel: 3, paymentType: 2, idControlFlag: 0, phonePrealertFlag: 0, smsToShipper: 0, smsToConsignee: 1, insuranceValue: 0, insuranceValueCurrency: 'TL', numberOfPackages: 1, descriptionOfGoods: '0.5', length: 0.5, height: 0.5, width: 0.5, valueOfGoods: $siparisTutari, valueOfGoodsCurrency: 'TL', valueOfGoodsPaymentType: $odemeSekli ) ->send(); $takip = MPLogistics::ups() ->account( customerNumber: 'UPS_CUSTOMER_NUMBER', username: 'UPS_USERNAME', password: 'UPS_PASSWORD' ) ->kargoTakip('1Z999AA1234567890');
- UPS icin iade metodu yoktur.
- Dilersen UPS'e ham alan gondermek icin
payloadRaw([...])kullanabilirsin.