Php ile N11 Api Entegrasyonu – Teslimat Şablonu Listeleme

Merhaba;

N11 içerisinde ürünlerinizi satışa sunmak için gerekli olan ayarlardan biride teslimat şablonudur. Teslimat şablonu farklı ürün gruplarına kargo sevkiyatları , belirli fiyat üstü kargo indirimleri , teslimat bölgeleri ve kargo firması seçimi ayrıca iptal ve iadeler ile ilgili genel kavramların ayarlanmasıdır. Diğer pazar yeri entegrasyonlarına göre n11 üzerinde sevdiğim bu yapı, ürünlerinizi teker teker düzenlemek yerine oldukça kolay bir yöntem sunar. Eğer N11 api entegrasyonu ile işlem yapacak iseniz öncelikli olarak zorunlu olan bazı ayarlarınızı sisteminize kaydetmeniz gerekmektedir. Ürün kaydetmelerinde teslimat şablonu zorunludur.

Teslimat şablonu ekleme işlemi için api dökümanlarında bir bölüm mevcut. Fakat ben N11 üzerinden teslimat şablonlarımı oluşturdum.

GetShipmentTemplate İle Teslimat Şablonu Listelemek

<?php
Class n11 {
    protected static $_appKey, $_appSecret, $_parameters, $_sclient;
    public $_debug = false;
    
    public function __construct(array $attributes = array()) {
        self::$_appKey = "ApiKey"; // N11 ApiKey
        self::$_appSecret = "AppSecret"; // N11 AppSecret
        self::$_parameters = ['auth' => ['appKey' => self::$_appKey, 'appSecret' => self::$_appSecret]];
    }
    //Her seferinde Soap Bağlantısı için tekrarlanan kod yazmamak adına bağlantımızı ayrı bir private fonskiyonda tutalım
    private function setUrl($url) {
        self::$_sclient = new \SoapClient($url);
    }
    // N11'de mağazanıza ait Teslimat Şablonları
    public function GetShipmentTemplateList()
    {
        $this->setUrl('https://api.n11.com/ws/ShipmentService.wsdl');
        $data = self::$_sclient->GetShipmentTemplateList(self::$_parameters);
        $data = json_decode(json_encode($data));
        if($data['result']['status'] != "success")
            die('Hata Durumu');
        
        foreach ($data['shipmentTemplates']['shipmentTemplate'] as $key => $value)
        {
            $set = array(
                "template_name" => $value['templateName'],
                "type" => "n11",
            );
           // Ben veritabanımda diğer pazaryeri entegrasyonları ile çalıştığım için type olarak ayırdım. Burada veritabınıza kayıt işlemini gerçekleştirebilirsiniz. 
        }
    }



}
?>

Yapılan istekler sonrası dönen değerleri json_decode(json_encode($data)) şeklinde tekrar array olarak dönüştürdük. Tabi herseferinde bu kodu tekrarlamak yerine eğer bir Framework ile çalışıyorsanız helper olarak yardımcı bir fonksiyon yazabilirsiniz. Ben codeigniter kullanıyorum.

function json_return($data)
{
   return json_decode(json_encode($data));
}

// Böylelikle bir üst taraftaki kısmı şu şekilde güncelleyebiliriz
json_return(self::$_sclient->GetShipmentTemplateList(self::$_parameters));
//veya tekrar data içerisine alıp 
$data = self::$_sclient->GetShipmentTemplateList(self::$_parameters);
$data = json_return($data);

Teslimat şablonu yukarda belirttiğim üzere ürünlerin kargo ve benzeri değişikliklerinde oldukça kolaylık sağlamaktadır.

Teşekkürler.