N11.Com Api ile Yeni Sipariş Bilgilerini Çekme

Paylaş
 

Merhaba arkadaşlar, bu yazımızda C# dışında PHP ile bir uygulama yapacağız. Bu uygulamamızda N11.Com’ un bize sağladığı servis sayesinde kategori çekme, il bilgilerini çekme, yüklenmiş ürünleri veya ürünün bilgilerini çekme, ürün kaydetme, ürünü sistemden silme ve sipariş bilgilerini çekme gibi konulardan ilk olarak yeni sipariş bilgilerini çekme konusuna değineceğiz.
Tabi bu konuları uygulayabilmeniz için N11.Com sitesinde mağaza sahibi olmanız gerekmektedir. N11.Com sitesinde mağaza sahibi değilseniz ve mağaza sahibi olmak istiyorsanız buraya tıklayınız. Mağazamızı oluşturduktan sonra giriş yapıyoruz ve üst tarafta bulunan Hesabım yazısının üzerine gelip açılan menüden API Hesapları seçeneğine tıklıyoruz. Açılan sayfada + Yeni Hesap Oluştur butonuna tıklayarak api hesabımızı oluşturuyoruz. Bütün işlemler tamam ise konuya dalalım artık 🙂

İlk olarak n11.com’ dan verileri çekebilmemiz için bir class sayfası oluşturalım. Class.php sayfa içeriği aşağıdadır.

<?php
Class N11 {
    protected static $_appKey, $_appSecret, $_parameters, $_sclient;
    public $_debug = false;
    
    public function __construct(array $attributes = array()) {
        self::$_appKey = $attributes['appKey'];
        self::$_appSecret = $attributes['appSecret'];
        self::$_parameters = ['auth' => ['appKey' => self::$_appKey, 'appSecret' => self::$_appSecret]];
    }
    
    public function setUrl($url) {
        self::$_sclient = new \SoapClient($url);
    }
	
    public function DetailedOrderList(array $searchData = Array()) {
        $this->setUrl('https://api.n11.com/ws/OrderService.wsdl');
        self::$_parameters['searchData'] = $searchData;
	self::$_parameters['pagingData'] = ['itemsPerPage' => 5, 'currentPage' => 0];
        return self::$_sclient->DetailedOrderList(self::$_parameters);
    }
	
    public function __destruct() {
        if ($this->_debug) {
            print_r(self::$_parameters);
        }
    }
}
?>

Class sayfamızı oluşturduğumuza göre artık mağazamızdaki yeni siparişleri çekme vakti geldi 🙂 Siparis.php sayfamızın içeriği aşağıdaki gibi

<?php
error_reporting(E_ALL);
include "class.php";
$n11Params = ['appKey' => 'ApiAnahtarınız',
              'appSecret' => 'ApiŞifreniz'];
$n11 = new N11($n11Params); 
$i=0;
?>
<html>
<head>
<meta charset="UTF-8">
<title>N11.Com Api ile Yeni Sipariş Bilgilerini Çekme - BSoylu.Com</title>
</head>
<body>
<?php
$DetailedOrderList= $n11->DetailedOrderList(
[
    "productId"=>'',
    "status"=> 'new', 
    "buyerName"=> '',
    "orderNumber"=> '',
    "productSellerCode" =>'',
    "recipient"=> '',
    "period"=>[
        "startDate"=> '?',
        "endDate"=> '?'     
    ]     
]                
);
$say=count($DetailedOrderList->orderList->order);
echo "<table border='1' cellpadding='5' cellspacing='0'>";
for($i = 0; $i < $say; $i++)
{
	echo "<tr>";
	echo "<td><table border='1' cellpadding='5' cellspacing='0' width='100%'><tbody>";
	echo "<tr><th>ID:</th><td>";
	echo $DetailedOrderList->orderList->order[$i]->id; 
	echo "</td></tr>";
	echo "<tr><th>Sipariş No:</th><td>";
	echo $DetailedOrderList->orderList->order[$i]->orderNumber; 
	echo "</td></tr>";
	echo "<tr>";
	echo "<th>Ürün Adı:</th><td>";
	echo $DetailedOrderList->orderList->order[$i]->orderItemList->orderItem->productName; 
	echo "</td></tr>";
	echo "<tr><th>Sipariş Tarih:</th><td>";
	echo $DetailedOrderList->orderList->order[$i]->createDate; 
	echo "</td></tr>";	echo "<tr><th>Sipariş Tutar:</th><td>";
	echo $DetailedOrderList->orderList->order[$i]->totalAmount."TL"; 
	echo "</td></tr>";
	echo "</tbody></table></td>";
	echo "</tr>";
}
echo "</table>";
?>
</body>
</html>

Evet arkadaşlar n11.com’ dan yeni siparişleri çekme işlemi bu kadar kolay. Daha sonraki yazılarda diğer konulara değineceğiz. Kendinize iyi bakın görüşmek üzere…

Bu yazı 7.198 kere okundu.
  • Site Yorum

18 adet yorum var.

  1. Mesut Altunkülah dedi ki:

    Merhaba üstadım;
    Belirttiğin class ile siparişleri listelemeye çalıştığımda.

    stdClass Object
    (
    [result] => stdClass Object
    (
    [status] => failure
    [errorCode] => systemError
    [errorMessage] => Sistemde bir hata oluştu.
    [errorCategory] => SELLER_API
    )
    )
    Böyle bir çıktı alıyorum bunun sebebi konusunda yardımcı olabilirmisin?

  2. Aykut dedi ki:

    Merhaba
    Sipariş detaylarında “orderItemList” gelmiyor. Burda bir yanlışlık olabilir mi?
    Sipariş içerisinde satılan ürünlere ulaşmaya çalışıyorum.

  3. kerem dedi ki:

    dediğiniz şekilde kodları yaptım ama boş bir sayfa geliyor hep hata falanda vermiyor sebebi ne olabilir acaba? teşekkür ederim

    • Bülent dedi ki:

      Merhaba, kodları kontrol ettiğimde herhangi bir problem gözükmemekte. Ben de normal çalışmakta. Api kodlarınızın doğruluğunu kontrol edip benimle iletişime geçebilirsiniz.

  4. Barış dedi ki:

    Merhaba bu güzel konun için ilk önce teşekkür ederim. Oldukça faydalı bir soru sormak istiyorum tüm classları nasıl bulabiliriz? Yardımcı olabilirmisin (Fonksiyon)

    • Bülent dedi ki:

      Merhaba, n11′ in api sayfasında tüm fonksiyonlar mevcut oradan bulabilirsiniz istediğinizi. Kolay gelsin 🙂

      • Barış dedi ki:

        PHP Döküman olarak göremedim. Başka bir sayfasımı var fonksiyonlarım çok eksik örneğin sipariş onaylama ve kargo takip girme hakkında bilgi verirsen çok memnun olurum

  5. ciha dedi ki:

    Fatal error: Cannot use object of type stdClass as array in siparis.php on line 37
    37.satırda.
    echo $DetailedOrderList->orderList->order[$i]->id;
    yazmasına rağmen hata alıyorum dün bu kodlar çalışıyordu bugün çalışmıyor.

  6. ciha dedi ki:

    n11 yeni sipariş ve onaylanmış siparişleri almada ara ara sorun oluyor
    bazen sorunsuz yeni siparişi almakta iken bazen şu şekilde hata alıyor.
    Fatal error: Cannot use object of type stdClass as array in /yeni.php on line 37
    37 satırda
    ———————
    echo $DetailedOrderList->orderList->order[$i]->id;
    ———————
    bulunmakta.
    sayfayı yenileyince de
    Notice: Undefined property: stdClass::$orderList in yeni.php on line 30 şeklinde hata veriyor.
    30. satırda
    ————————
    $say=count($DetailedOrderList->orderList->order);
    ————————
    yazmakta
    bazen ise bu kodlarla siparişler açılmakta
    tam randumanlı bir çalışma şekli olmadı
    ne yapmalıyız.

  7. ciha dedi ki:

    DetailedOrderList(
    [
    “productId”=>”,
    “status”=> ‘Shipped’,

    shipped yazıldığında tüm siparişleri alıyor

    new ve approwed yazınca sipariş olmasına ve onaylanmasına rağmen almıyor. bazen kendi kendine değişiklik yapmadan geliyor.

    Sipariş durumu:
    “New”: Yeni siparişler
    “Approved”: Onaylanmış Siparişler
    “Rejected”: İptal Edilmiş Siparişler
    “Shipped”: Kargolanmış Siparişler
    “Delivered”: Teslim Edilen Siparişler
    “Completed”: Tamamlanmış Siparişler

  8. Mert Demirel dedi ki:

    Merhaba, bilgiler için teşekkürler, entegrasyon modülü yazmak ile uğraşıyorum eğer Siparis.php dosyasında appkey ve secret ı değişkene bağlayıp çağırmak istiyorsak nasıl yapmalıyız?

  9. cihan dedi ki:

    merhaba n11 de siparişlwerin bazen alınıp bazen alınanamasına yönelik bir gelişmeye ulaştınız mı sipariş sayısı bir olduğunda bilgilewr gelmiyor ancak sipariş sayısı 1 ve üzerinde olduğu vakit veriler gelmekte buna yönelik bir gelişme var mı?

  10. veysel koru dedi ki:

    Çalışmayan servisler için wsdl cache’i kapatmayı unutmayın özellikle DetailedOrderList için…. bazen alınıp bazen alınmamasının nedeni cache’in aktif olması. kolaylıklar

  11. İbrahim bayrakçı dedi ki:

    Merhaba, aşağıdaki hatayı alıyorum, ne yapılabilir.

    PHP Parse error: syntax error, unexpected ‘[‘ in /home/vestelha/public_html/n11/siparis.php on line 4

    Teşekkürler.

  12. uğur dedi ki:

    Merhaba.. kargolanan siparişlerin kargo takip numaralarını api ile siparişlere girme şansımız var mı? varsa yönlendirebilir misiniz?

  13. yalcinas dedi ki:

    aynı uygulamayı windows form uygulaması ile nasıl yaparsak daha sağlıklı olur ?

Bir yorum bırak

YAZAR HAKKINDA

Bağımsız çalışan, çok düşünen, kodlamaya aşık ve güldürmeyi seven bir developer...
SPONSOR BAĞLANTILAR
SPONSOR BAĞLANTILAR

Facebookta Takip Edin