PHP ile N11 Soap Api Kullanımı

Merhaba arkadaşlar, uzun zaman önce yazmayı düşündüğüm bir örnek yazının taslak metni ile şuanda başlamış bulunuyorum. Tek yazıdan ziyade bir kaç yazıda n11 mağazamız için soap api kullanarak her türlü işlemi size anlatmayı hedefliyorum.

Bu yazıda anlatılanları kendi mağazanız için yapabilmek adına basit düzeyde PHP bilgisine sahip olmanız yeterli.

İlerleyen zamanlarda fırsat bulursam otomatik güncelleme yapabileceğiniz basit yazılımları da sizlerle paylaşmayı hedefliyorum.

ÖNCELİKLE bu yazının devamını okumadan önce n11 mağaza paneline giriş yaparak sırasıyla Hesabım -> API Hesapları -> Yeni Hesap Oluştur diyerek API Anahtarı ve API Şifresi almalısınız.

Aynı sayfadan SOAP tabanlı n11 api dökümanına da ulaşabilirsiniz.

DİKKAT! Bu bilgiler oldukça önemli olduğu için tanımadığınız veya güvenmediğiniz kişiler ile paylaşmayın. Aksi taktirde bu bilgiler ile mağazanızdaki tüm ürünlerin silinmesi dahil her türlü işlem yapılabilir.

Entegrasyon için bir sınıfa ihtiyacımız var. Her türlü işlemi bu sınıfa fonksiyon olarak ekleyerek daha derli-toplu bir işlem yapabiliriz.

Ben anlatacağım her örnekten sonra sınıfa ekleme yaparak sınıf dosyasını oluşturacağım. Sizde güncel sınıf dosyasına bu mesajın altındaki kod alanından ulaşabilirsiniz.

Güncelleme: 09.11.2019
Ürün ekleme fonksiyonu eklendi
Ürün silme fonksiyonu eklendi

Sınıfımızı kaydettikten sonra testlerimize başlayabiliriz. Öncelikle ürün eklemeden önce o ürünü belirli bir kategoriye eklememiz gerekli. n11 deki tüm ana kategorileri alttaki kod ile bulabilirsiniz. Dizide gelen kategori idlerini not edin, birazdan ürünümüze ait uygun alt kategorileri de listeleyeceğiz.

Az önce bulduğumuz ana kategori idsi ile alt kategorileri alttaki kod ile getirebiliriz.

Kategorimizi de bulduğumuza göre artık ürün eklememizi yapabiliriz.

Ürün eklemek için SaveProduct fonksiyonunu kullanacağız. Bu alan çok fazla detay barındırıyor. Alttaki örnekte en yalın hali yer alıyor. Ne bir ürün seçeneği, ne de fiyat kampanyası var.

Sonuç;

Bu arada $n11id ile gelen değişkeni mutlaka veritabanın da kayıt altına alın, zira üründeki tüm değişiklikler, güncellemeler o id vasıtasıyla gerçekleşiyor.

Eklediğimiz ürünü silmek için ise DeleteProductById fonksiyonunu kullanabilirsiniz.

Eğer ürününüze ait seçenekleri (Beden-Renk-Yaş) de eklemek isterseniz o zaman SaveProduct da kullandığımız dizide attiribute alanını alttaki gibi değiştirebilirsiniz.

N11 de kalıp ürün seçenekleri yer almıyor siz nasıl eklerseniz o şekilde gösteriyor. Esnek bir yapısı var. Her seçime farklı stok, fiyat ekleyebilirsiniz. Mesela M beden Siyah Kot 50 TL iken S beden Siyah Kot 30 TL yapabilirsiniz.

Bunu yapmak için ise üst tarafta yer alan

kodlarını alttaki kod dizisi ile değiştirmek

Bu yapılan işlem ile $stokItem dizimiz artık ürünlere ait seçenekleri tutuyor. Dediğim gibi ürünlerin alt seçeneklerindeki adet, fiyat bilgisini tek tek sisteme işleyebilirsiniz.

Birden fazla seçenek için örnekte olduğu gibi stockItem[0] kısmını çoğaltabilirsiniz. Indis değerini de arttırmayı unutmayın. Bu işlem biraz kafa karıştırıcı oldu en kısa zamanda daha sadece bir şekle çevireceğim 🙂

Eklenme:
9 Aralık 2019
Okunma:
693
Puan Ver
1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız
Toplam Oy: 3 - Ortalama:3,67

19 Yorum

  • sait

    6 Kasım 2019

    Merhaba, Blogunuz için teşekkürler. Rica etsem ürün ekleme ile ilgili de blog paylaşabilir misiniz

    Cevapla
    • Hakan

      11 Kasım 2019

      Bu hafta içerisinde hazırlayıp paylaşırım.

      Cevapla
  • ahmet

    10 Kasım 2019

    Merhaba, Bloğunuz için teşekkürler. Ürün ekleme örneğinizi ne zaman paylaşırsınız?

    Cevapla
    • Hakan

      11 Kasım 2019

      Bu hafta içerisinde hazırlayıp paylaşırım muhtemelen.

      Cevapla
  • devran

    20 Aralık 2019

    Merhaba , paylaşımınız için çok teşekkürler öncelikle. Benim aklıma takılan renk ve ayak numarası değerlerini aynı anda nası gönderebiliriz?

    Cevapla
    • Hakan

      23 Aralık 2019

      Konuyu güncelledim. Seçenek kısmı için bilgi verdim.

      Cevapla
      • devran

        24 Aralık 2019

        İlginiz için çok teşekkürler. Bir türlü saveProduct edemedim bu yapı ile sürekli aynı satırda aynı hatayı alıyorum:
        http://prntscr.com/qf2zez
        hata aldığım satır:
        http://prntscr.com/qf30i2

        Cevapla
        • Hakan

          24 Aralık 2019

          php tagından hemen sonra şu satırlar var dimi dosyanızda

          Cevapla
          • devran

            25 Aralık 2019

            tabi bulunuyor, hatta ayrı bir kodlama ile yaptığımda oluyor. veri gönderebiliyorum n11 ‘e ama sizin kodlamanız çok daha yalın ve düzenli olduğu için kullanmak istiyorum. Sadece nerede hata yaptığımı göremiyorum 🙂

          • Hakan

            25 Aralık 2019

            Yani aldığınız hata kodlamadan ziyade eksik bir veriden kaynaklanıyor. Ya include ettiğiniz n11.class dosyasında bir eksiklik var yada başta oluşturduğumuz n11 değişkenini ikinci kez başka bir yerde kullanarak (dizide vs) içini boşaltıyorsunuz.

  • Mertcan Karaçalı

    15 Ocak 2020

    Merhaba Kategorileri Nasıl Düzenli Gösterebilirim Karışık Biçimde Geliyor ?
    https://prnt.sc/qo0n03

    Cevapla
    • Hakan

      16 Ocak 2020

      n11 bu şekilde sağlıyor veriyi ona müdahale edemeyiz ama kategorileri çektikten sonra diziyi alfabetik olarak sırayabilirsiniz.

      array_msort fonksiyonu için: http://blog.betabilisim.net/php-ile-cok-boyutlu-dizilerde-siralama/

      Cevapla
  • adnan

    24 Ocak 2020

    merhaba, UpdateProductBasic ile ilgili hiç bir yerde kaynak bulamadım yardımcı olurmsunuz. fiyat, stok ve indirim satırlarını toplu şekilde UpdateProductBasic class dan göndermem gerekiyor. tek tek güncelleyebiliyorum. ancak 3 alandan 2 sini güncelliyor.

    Cevapla
    • Hakan

      23 Mart 2020

      Müsait bir zamanda konuya ekleyeceğim ürün güncellemeleri.

      Cevapla
  • Yusuf

    26 Ocak 2020

    Merhaba hocam Çok Teşekkurler.
    ürünleri kampanyalı olarak nasıl ekleyebılırız

    Cevapla
    • Hakan

      23 Mart 2020

      r10 da çözülmüştü sanırım bu sorunuz. Konuyu da güncelledim bu sayede (:

      Cevapla
  • mehmet

    17 Mart 2020

    merhaba, hocam ben bu hatayı alıyorum devamlı. Yardımlarınız ve dökümanlarınız için teşekkürler
    https://i.hizliresim.com/QX8gRe.png

    Cevapla
    • Hakan

      23 Mart 2020

      24.02 de n11 api güncellemesi yapmış hata o yüzden çıkıyor.

      $saveProduct = $n11->SaveProduct($array);

      satırından önce

      kodlarını ekleyip denerseniz muhtemelen hata vermeyecektir sistem.

      Cevapla
  • Yahya Aydın

    18 Mart 2020

    Allah razı olsun sizden, çok teşekkür ederim. Sizden sağlam kaynak yok nette.

    Cevapla

Bir cevap yazın