cPanel yıllıkta ücretsiz taşıma + SSLHemen İncele
Buyukweb
Kargo ve Lojistik Entegrasyonu: E-Ticaret Teslimat Otomasyonu

Kargo ve Lojistik Entegrasyonu: E-Ticaret Teslimat Otomasyonu

WooCommerce ve OpenCart için Türkiye'de kargo firması entegrasyonu: MNG Kargo, Yurtiçi, Aras, PTT Kargo API entegrasyonu ve otomatik sipariş takibi.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü7 dakika okuma

Kargo ve Lojistik Entegrasyonu: E-Ticaret Teslimat Otomasyonu

Hızlı ve güvenilir kargo, e-ticaret başarısının temel taşlarından biridir. Bu rehberde Türkiye'deki kargo firmalarının API entegrasyonunu ve lojistik otomasyonunu ele alıyoruz.

Türkiye'deki Kargo Firmaları

Firma          | API | WooCommerce | Fiyat (Desi başı)
---------------|-----|-------------|------------------
MNG Kargo      | ✓   | Eklenti     | Anlaşmalı
Yurtiçi Kargo  | ✓   | Eklenti     | Anlaşmalı
Aras Kargo     | ✓   | Eklenti     | Anlaşmalı
PTT Kargo      | ✓   | Eklenti     | Sabit tarife
Sürat Kargo    | ✓   | Eklenti     | Anlaşmalı
HepsiJet       | ✓   | Eklenti     | Hepsiburada bağlı
Trendyol Express| ✓  | Trendyol bağlı| Platform bağlı

MNG Kargo Entegrasyonu (WooCommerce)

<?php
// MNG Kargo API Entegrasyonu
class MNGKargoAPI {
    private $username;
    private $password;
    private $customerCode;
    private $apiUrl = 'https://api.mngkargo.com.tr/';

    public function __construct($username, $password, $customerCode) {
        $this->username = $username;
        $this->password = $password;
        $this->customerCode = $customerCode;
    }

    public function createShipment($orderData) {
        $body = [
            'CUSTOMER_CODE' => $this->customerCode,
            'SHIPMENT_ORDER_TYPE_CODE' => '1',
            'SENDER_NAME' => $orderData['sender']['name'],
            'SENDER_ADDRESS' => $orderData['sender']['address'],
            'SENDER_CITY' => $orderData['sender']['city'],
            'RECEIVER_NAME' => $orderData['receiver']['name'],
            'RECEIVER_ADDRESS' => $orderData['receiver']['address'],
            'RECEIVER_CITY' => $orderData['receiver']['city'],
            'RECEIVER_PHONE' => $orderData['receiver']['phone'],
            'DESI' => $orderData['desi'],
            'ORDER_NUMBER' => $orderData['order_number'],
            'DESCRIPTION' => $orderData['description'],
        ];

        $response = wp_remote_post(
            $this->apiUrl . 'shipment/create',
            [
                'headers' => [
                    'Authorization' => 'Basic ' . base64_encode($this->username . ':' . $this->password),
                    'Content-Type' => 'application/json',
                ],
                'body' => json_encode($body),
                'timeout' => 30,
            ]
        );

        if (is_wp_error($response)) {
            return false;
        }

        return json_decode(wp_remote_retrieve_body($response), true);
    }

    public function trackShipment($trackingNumber) {
        $response = wp_remote_get(
            $this->apiUrl . 'shipment/track/' . $trackingNumber,
            [
                'headers' => [
                    'Authorization' => 'Basic ' . base64_encode($this->username . ':' . $this->password),
                ],
            ]
        );

        return json_decode(wp_remote_retrieve_body($response), true);
    }
}

// WooCommerce sipariş tamamlandığında otomatik kargo oluştur
add_action('woocommerce_order_status_processing', 'create_cargo_shipment');

function create_cargo_shipment($order_id) {
    $order = wc_get_order($order_id);

    $mng = new MNGKargoAPI(
        get_option('mng_username'),
        get_option('mng_password'),
        get_option('mng_customer_code')
    );

    $result = $mng->createShipment([
        'sender' => [
            'name'    => 'MagazaNız',
            'address' => 'Depo Adres',
            'city'    => 'İstanbul',
        ],
        'receiver' => [
            'name'    => $order->get_shipping_first_name() . ' ' . $order->get_shipping_last_name(),
            'address' => $order->get_shipping_address_1(),
            'city'    => $order->get_shipping_city(),
            'phone'   => $order->get_billing_phone(),
        ],
        'desi'         => calculate_order_desi($order),
        'order_number' => $order->get_order_number(),
        'description'  => 'Sipariş #' . $order->get_order_number(),
    ]);

    if ($result && isset($result['TRACKING_NUMBER'])) {
        $order->update_meta_data('_tracking_number', $result['TRACKING_NUMBER']);
        $order->update_meta_data('_cargo_company', 'MNG');
        $order->save();

        $order->add_order_note('MNG Kargo takip: ' . $result['TRACKING_NUMBER']);
    }
}

Desi Hesaplama

function calculate_order_desi($order) {
    $total_desi = 0;

    foreach ($order->get_items() as $item) {
        $product = $item->get_product();
        $qty = $item->get_quantity();

        $weight = $product->get_weight(); // kg
        $length = $product->get_length(); // cm
        $width = $product->get_width();   // cm
        $height = $product->get_height(); // cm

        // Desi = (En x Boy x Yükseklik) / 3000
        $volumetric_desi = ($length * $width * $height) / 3000;

        // Ağırlık kg cinsinden
        $weight_desi = $weight;

        // Büyük olan desi hesaba katılır
        $desi = max($volumetric_desi, $weight_desi);
        $total_desi += $desi * $qty;
    }

    return ceil($total_desi); // Yukarı yuvarla
}

Webhook ile Kargo Durum Güncelleme

// Kargo firması webhook endpoint'i
add_action('rest_api_init', function() {
    register_rest_route('magazaniz/v1', '/cargo-webhook', [
        'methods'  => 'POST',
        'callback' => 'handle_cargo_webhook',
        'permission_callback' => '__return_true',
    ]);
});

function handle_cargo_webhook($request) {
    $data = $request->get_json_params();

    $tracking_number = $data['tracking_number'];
    $status = $data['status'];

    // Sipariş bul
    $orders = wc_get_orders([
        'meta_key'   => '_tracking_number',
        'meta_value' => $tracking_number,
        'limit'      => 1,
    ]);

    if (!empty($orders)) {
        $order = $orders[0];

        // Teslim edildiyse
        if ($status === 'DELIVERED') {
            $order->update_status('completed', 'Kargo teslim edildi.');
        }

        // Müşteriye bildirim
        WC()->mailer()->emails['WC_Email_Customer_Note']->trigger(
            $order->get_id(),
            'Kargo durumunuz: ' . $status
        );
    }

    return rest_ensure_response(['success' => true]);
}

Çoklu Kargo Fiyat Karşılaştırması

// En ucuz kargo seçeneklerini göster
function get_shipping_rates($weight, $city) {
    $rates = [];

    // MNG Kargo tarifesi
    $rates['mng'] = [
        'name'  => 'MNG Kargo (1-3 İş Günü)',
        'price' => calculate_mng_rate($weight, $city),
    ];

    // Yurtiçi Kargo tarifesi
    $rates['yurtici'] = [
        'name'  => 'Yurtiçi Kargo (1-3 İş Günü)',
        'price' => calculate_yurtici_rate($weight, $city),
    ];

    // Fiyata göre sırala
    usort($rates, fn($a, $b) => $a['price'] <=> $b['price']);

    return $rates;
}

Sonuç

Kargo entegrasyonu, e-ticaret operasyonlarını otomatize eder ve müşteri memnuniyetini artırır. Otomatik kargo oluşturma, webhook ile durum takibi ve çoklu kargo karşılaştırması ile profesyonel lojistik altyapısı kurabilirsiniz. Büyükweb e-ticaret hosting çözümleriyle bu entegrasyonlar sorunsuz çalışır.


İlgili Büyükweb Hizmetleri:


E-Ticaret Başlangıç Kontrol Listesi

Yasal

  • Şirket/şahıs kurulumu
  • Vergi levhası
  • Mesafeli satış sözleşmesi
  • KVKK aydınlatma metni
  • Çerez politikası
  • İade koşulları

Teknik

  • Hosting/VDS seçimi
  • SSL sertifikası
  • E-ticaret platformu
  • Sanal pos (3D Secure)
  • Kargo entegrasyonu
  • E-fatura entegrasyonu
  • Google Analytics + Search Console

Pazarlama

  • Google Business Profile
  • Sosyal medya hesapları
  • Google Shopping
  • Facebook/Instagram Shop
  • E-posta pazarlama

E-Ticaret VDS vs Ev İnterneti

Özellik Ev İnterneti E-Ticaret VDS
IP Dinamik Sabit
Temizlik Bilinmiyor Temiz
Kesinti Elektrik/internet %99.8 uptime
Hız Değişken 1 Gbps
Güvenlik Düşük DDoS korumalı

Marketplace işlemleri için sabit ve temiz IP kritik. Ban riski en aza iner.

Teknik Destek ve Yardım Kanalları

Büyükweb olarak müşterilerimize birden fazla destek kanalı sunuyoruz:

Satış Öncesi Destek

0850 302 60 70 satış öncesi destek numaramızdır; paket seçimi ve sipariş öncesi sorularınız için bu numarayı arayabilirsiniz. Teknik konular müşteri panelindeki ticket sistemi üzerinden yürütülür.

E-posta Desteği

destek@buyukweb.com adresine detaylı sorun tanımlamanizi gönderin. Ekran görüntüleri ve hata mesajları ile birlikte gönderdiğiniz talepler daha hızlı çözümlenir.

Müşteri Paneli

my.buyukweb.com üzerinden destek talepleri oluşturun, faturalarınızı yönetin ve hizmetlerinizi kontrol edin. Ticket sistemi ile tüm iletişiminiz kayıt altındadır.

Bilgi Bankası

Blog yazılarımız ve rehberlerimiz ile sık karşılaşılan sorunların çözümlerini kendiniz bulabilirsiniz. WordPress kurulumu, DNS ayarları, e-posta yapılandırması gibi konularda adım adım rehberler mevcuttur.

Büyükweb teknik ekibi, hosting alanında 17 yıllık tecrübesi ile her türlü sorununuza profesyonel çözüm sunar.

Türkiye Kargo Entegrasyon Pratiği

E-ticaret sitenizin kargo entegrasyonunda Türkiye operatörlerine özel notlar:

Yurt İçi Kargo API'leri

Türkiye'de yaygın kullanılan kargo firmalarının (Yurtiçi, MNG, Aras, Sürat, PTT vb.) çoğunda SOAP veya REST tabanlı entegrasyon API'si bulunur. Tipik akış:

1. Sipariş oluştur → kargo firmasından takip no al
2. Etiket bas (PDF veya ZPL formatı)
3. Webhook ile durum güncellemesi al
4. Müşteriye SMS/e-posta bildir

API entegrasyonu yapmadan önce kargo firmasıyla kurumsal sözleşme ve API erişim talebinde bulunmanız gerekir. Sözleşmesiz hesaplarda günlük limit düşüktür.

Webhook Almak için Sabit IP

Kargo firmaları webhook'ları yalnızca belirli IP'lerden gönderir; sizin tarafınızda da sabit IP olması güvenlik açısından önemlidir. Büyükweb VDS sunucu paketleri tüm paketlerde sabit Türkiye IP sunar.

Yüksek Sipariş Hacminde Sıra (Queue)

Saniyede 10+ sipariş geliyorsa kargo API'sini doğrudan çağırmak yerine queue kullanın:

// BullMQ + Redis örneği
const Queue = require('bullmq').Queue;
const cargoQueue = new Queue('cargo-creation');

cargoQueue.add('create-shipment', { orderId: 12345 });

Bu yapı:

  • Kargo API rate limit'ini aşmaz
  • Hata durumunda otomatik retry yapar
  • Müşteri sipariş tamamlama deneyimini hızlandırır (sipariş yazıldıktan sonra arka planda etiket basılır)

Performans ve İzleme

Kargo entegrasyonunda kritik metrikler:

Metrik Hedef
Etiket oluşturma süresi < 2 sn
Webhook gecikme < 30 sn
Hata oranı < %0.5
Failover (ikinci kargo firmasına geçiş) < 5 dk

Bu metrikleri Zabbix veya Prometheus üzerinde dashboard olarak takip edin.

Sıkça Sorulan Sorular

Birden fazla kargo firması ile çalışmak gerekli mi?

Evet, iki firma minimum. Bir firmanın geçici problem yaşadığında alternatife geçmek müşteri deneyimini korur. WMS yazılımları genelde multi-carrier desteği sunar.

Kargo entegrasyon hosting'de mi çalışmalı?

Hosting paylaşımlı paketinde cron + webhook çalışabilir, ancak yüksek hacim için VDS önerilir. Büyükweb E-Ticaret VDS paketinde Redis + queue altyapısı için optimize kaynak ayrılır.

KVKK açısından kargo verisi nasıl tutulmalı?

Müşterinin adı, adresi, telefonu, sipariş içeriği kişisel veri kapsamındadır. KVKK 5. ve 6. maddeler gereği yurt içinde tutulmalı, 6 ay-3 yıl arasında saklama süresi politikası tanımlanmalıdır. Büyükweb Türkiye lokasyonu bu uyumu kolaylaştırır.

İlgili Büyükweb Hizmetleri

E-ticaret sitenizin yükü için ölçeklenebilir Türkiye lokasyonlu paketler:

Sorularınız için 0850 302 60 70 numaralı satış öncesi destek numaramıza ulaşabilir veya iletişim sayfamıza yazabilirsiniz.

E-Ticaret İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#kargo entegrasyonu#mng kargo#woocommerce kargo#lojistik#sipariş takibi#desi hesaplama

Bu yazıyı paylaş

WhatsApp0850 302 60 70