Merhaba, bu devam yazımda Opencart N11 API entegrasyon işlemerimize kaldığımız yerden devam ediyoruz. Okumadıysanız ilk yazıya buradan ulaşabilirsiniz: Opencart N11 API İşlemleri
Hatırlayacağınız üzere önceki yazıda admin tarafını tamamlamış API Anahtarı ve API Key’i N11’den edinerek sistemimizin ayarlarına kaydetmiştik. Şimdi ise API entegrasyonuna başlayabiliriz.
Kullandığımız dosyalar,
- /admin/language/tr-tr/extension/module/n11.php
- /admin/controller/extension/module/n11.php
- /admin/view/template/extension/module/n11.tpl
- Bir de artık bu dosyaların yanında yeni olarak bir model dosyası oluşturacağız. Bu dosyayı da /admin/model/extension/n11/n11.php olarak oluşturdum.
Şimdi dosyalarımız şu hali aldı;
- /admin/language/tr-tr/extension/module/n11.php
- /admin/controller/extension/module/n11.php
- /admin/view/template/extension/module/n11.tpl
- /admin/model/extension/n11/n11.php
Şimdi ürün servisleri için N11 tarafında request edeceğimiz adres bilgisine ihtiyacımız var. Bu adresi dökümantasyondan da bulabilirsiniz, ben şimdilik belirteyim;
https://api.n11.com/ws/ProductService.wsdl
Artık controller dosyamızda geçerek aşağıda fonksiyonu ekleyelim.
protected function getN11ProductList($cp,$ps){
$this->load->model('setting/setting');
$n11_api_key = $this->model_setting_setting->getSettingValue('n11_api_key', $this->request->get['store_id']);
$n11_api_pass = $this->model_setting_setting->getSettingValue('n11_api_pass', $this->request->get['store_id']);
if($n11_api_key != '' && $n11_api_pass != ''){
$client = new SoapClient('https://api.n11.com/ws/ProductService.wsdl');
$parameters['auth'] = array('appKey' => $n11_api_key, 'appSecret' => $n11_api_pass);
$parameters['pagingData'] = array('currentPage' => $cp, 'pageSize' => $ps);
if($return = $client->GetProductList($parameters)){
return $return->products->product;
} else {
return NULL;
}
}
}
Bu fonksiyonu index fonksiyonumuzdan şu şekilde çağırabiliriz;
$data['products'] = $this->getN11ProductList(0,20);
Buradaki 0,20 bölümü 0. sayfa 20 kayıt için kullanılıyor. Sayfalama yaparken kullanabilirsiniz. Örnek olarak oluşturduğum view dosyama da aşağıdaki kodları ekledim.
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-pencil"></i> <?php echo $text_edit; ?></h3>
</div>
<div class="panel-body">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab-products" data-toggle="tab"><?php echo $text_products; ?></a></li>
</ul>
<div class="tab-content">
<div id="tab-products" class="tab-pane active">
<form action="<?php echo $delete; ?>" method="post" enctype="multipart/form-data" id="form-product">
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<td style="width: 1px;" class="text-center"><input type="checkbox" onclick="$('input[name*=\'selected\']').prop('checked', this.checked);" /></td>
</tr>
</thead>
<tbody>
<?php if ($products) { ?>
<?php foreach ($products as $product) { ?>
<tr>
<td class="text-center"><?php if (in_array($product->id, $selected)) { ?>
<input type="checkbox" name="selected[]" value="<?php echo $product->id; ?>" checked="checked" />
<?php } else { ?>
<input type="checkbox" name="selected[]" value="<?php echo $product->id; ?>" />
<?php } ?></td>
<td class="text-left"><?php echo $product->id; ?></td>
<td class="text-left"><?php echo $product->productSellerCode; ?></td>
<td class="text-left"><?php echo $product->title; ?></td>
<td class="text-left"><?php echo $product->subtitle; ?></td>
<td class="text-left"><?php echo $product->price; ?></td>
<td class="text-left"><?php echo $product->displayPrice; ?></td>
<td class="text-left"><?php echo $product->saleStatus; ?></td>
<td class="text-left"><?php echo $product->approvalStatus; ?></td>
<td class="text-right"><a href="#" data-toggle="tooltip" title="<?php echo $button_edit; ?>" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
</tr>
<?php foreach ($product->stockItems->stockItem as $stockItem) { ?>
<tr>
<td colspan="9" class="text-left">
<table class="table table-bordered table-hover" style="margin:3px;">
<tr>
<td class="text-left"> </td>
<td class="text-left"><?php echo $stockItem->id; ?></td>
<td class="text-left"><?php echo $stockItem->sellerStockCode; ?></td>
<td class="text-left"><?php echo $stockItem->optionPrice; ?></td>
<td class="text-left"><?php echo $stockItem->currencyAmount; ?></td>
<td class="text-left"><?php echo $stockItem->displayPrice; ?></td>
<td class="text-left"><?php echo $stockItem->gtin; ?></td>
<td class="text-left"><?php echo $stockItem->quantity; ?></td>
<td class="text-left"><?php echo $stockItem->attributes->attribute->id; ?></td>
<td class="text-left"><?php echo $stockItem->attributes->attribute->name; ?></td>
<td class="text-left"><?php echo $stockItem->attributes->attribute->value; ?></td>
</tr>
</table>
</td>
</tr>
<?php } ?>
<?php } ?>
<?php } else { ?>
<tr>
<td class="text-center" colspan="8"><?php echo $text_no_results; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</form>
</div>
</div>
</div>
</div>
Gördüğünüz üzere ben bu şekilde admin panelimde N11’de yayınlanan ürünlerimi listelettim. Ayrıca bir düzenleme butonu da koydum. Yaptığım değişikleri API aracılığı ile N11’e post edebiliyorum. Bir sonraki yazıma kadar da silme ve ürün onayını kaldırma butonlarını da ekleyeceğim. Anlaşılacağı üzere bu yazının bir sonraki bölümünde;
Opencart N11 API ile ürünü düzenleme, ürünü silme ve/veya yayından alma, ürün arama gibi işlemlerinden bahsedeceğim.
Not: Bir sonraki yazıyı 09.02.2019 Cumartesi günü yazmayı planlıyorum.
Merrhabalar öncelikle çalışmalarınızda başarılar diliyorum.
Opencart kllanıyorum ilk aşamayı tamamladım ama 2. kısımda takıldım
controller kısmında fonksiyonu ekledi fakat opencart admin kısmında herhangi bir menü eklenmedi yardımcı olurmusunuz.
Versiyon 2.3.0.2
Tekrar Merhabalar
Yanlış yere bakıyormuşum :))
Api key ve şifre işlemlerin tamamladım.
Yanlız ürünlerin nerede listeleyeceğimi bulamadım
Örnek olarak oluşturduğum view dosyama da aşağıdaki kodları ekledim
bu kısmı hangi dosyaya ekleme gerekiyor
Merhaba.
Konu hakkında sizinle paylaşmak istediklerimiz var. Lütfen iletişime geçer misiniz?
Gökmen Bey, paylaşımınız için teşekkürler.
Model dosyasını da paylaşır mısınız?
Merhaba Hocam, Rica etsem İletişim kurarmısınız . [email protected]
Selamlar, n11 entegrasyon yazılarınızı merakla takip ediyorum, devamini yazmaniz dileğiyle…
hocam yapıştır gelsin daha :))
Notice: Undefined property: stdClass::$product in /home/xyz/public_html/admin/controller/extension/module/n11.php on line 99
hocam merhaba bu sayfadaki kodları son oluşturduğunuz dosyanın içinemi ekliyoruz ?
Evet.
Merhaba Gökmen bey,
Uzun zamandan beri bekliyoruz opencart n11 3.Yazınızı 09.02.2019 demişsiniz ama aradan 2 ay gibi bir süre geçti. Daha uzun zaman sürer mi? N11 entegrasyonu için sizi bekliyorum
İş yoğunluğu. Kısmetse Haziran 16 2019 dan sonra devam edeceğim.
merhaba yazınızın devamı gelecekmi ?
Merhaba, Entegrasyonun devamını yazmaya devam edecek misiniz?
İş yoğunluğu. Kısmetse Haziran 16 dan sonra devam edeceğim.
Merhaba hocam ne güzel gidiyorduk neden bitti
İş yoğunluğu. Kısmetse Haziran 16 (2019) dan sonra devam edeceğim.
opencart n11 modülü yazımı için video hazırlamayı düşünüyor musunuz? makaleleriniz de yazdıklarınızı harfiyen yapmama rağmen eksik bir yer çıkıyor.
Gerçeketen çok faydalı bir paylaşım olmuş. Ama bir sonraki yazınızdan henüz faydalanamadık.
İş yoğunluğu. Kısmetse Haziran 16 dan sonra devam edeceğim.
Merhaba,
Çok güzel başlamıştınız neden ara verdiniz acaba ?
İş yoğunluğu. Kısmetse Haziran 16 dan sonra devam edeceğim.
Merhabalar , bir sonraki yazıyı paylaşacak mısınız ? şimdiye kadar olan bölüm çok işime yaradı ellerinize sağlık 🙂
Merhaba
Çok güzel bir makale. Devamı gelecek mi acaba ?
Birde stok ve fiyat değişimlerini opencart toplu olarak yaptığımızda.
Bunu n11 yansıtmak için ne yapıyor. Cron job mu tanımlıyoruz. Bu işlem nasıl oluyor.
Sadece tetiklemeye bağlı olarak mı işlem yapıyor. Yani illa n11 ürünlerini güncelle mi dememiz gerekiyor.
Evet cron job tanımlayarak belirli saat ararlıklarında tetikliyoruz. Ancak bazı durumlarda (n11 ile çalışma şeklinize bağlı) n11 kendi gelip request ediyor.
Güzel yazı devamı ?
16 Hazirandan sonra devamı gelecek.
Merhaba,
OC 2.2 sürümüne entegre ettim, fakat modül ekranında aşağıdaki hataları alıyorum. API Anahtarı ve şifresini girip kaydettiğimde de Erişim İzniniz Yok! hatası veriyor. Yardımcı olabilirseniz sevinirim.
Notice: Undefined index: store_id in C:\wamp64\www\opencart\admin\controller\module\n11.php on line 49
Notice: Undefined index: store_id in C:\wamp64\www\opencart\admin\controller\module\n11.php on line 51
Notice: Undefined index: store_id in C:\wamp64\www\opencart\admin\controller\module\n11.php on line 57
Notice: Undefined index: store_id in C:\wamp64\www\opencart\admin\controller\module\n11.php on line 62
Notice: Undefined index: store_id in C:\wamp64\www\opencart\admin\controller\module\n11.php on line 67
OC 2.2 ile denemedim fakat controller dosyanızı tarafıma iletirseniz yardımcı olabilirim.
ayni hatayi aliyorum;bu sorun cozuldu mu?
Merhaba,
1. bölümdeki işlemleri yaptım ama 2. bölümde takıldım yardımcı olurmusunuz
takıldığım yer
4.dosyayı açtım /admin/model/extension/n11/n11.php
1.buraya hangi kodu yapıştırıcam bu kodumu ;
protected function getN11ProductList($cp,$ps){
$this->load->model(‘setting/setting’);
$n11_api_key = $this->model_setting_setting->getSettingValue(‘n11_api_key’, $this->request->get[‘store_id’]);
$n11_api_pass = $this->model_setting_setting->getSettingValue(‘n11_api_pass’, $this->request->get[‘store_id’]);
if($n11_api_key != ” && $n11_api_pass != ”){
$client = new SoapClient(‘https://api.n11.com/ws/ProductService.wsdl’);
$parameters[‘auth’] = array(‘appKey’ => $n11_api_key, ‘appSecret’ => $n11_api_pass);
$parameters[‘pagingData’] = array(‘currentPage’ => $cp, ‘pageSize’ => $ps);
if($return = $client->GetProductList($parameters)){
return $return->products->product;
} else {
return NULL;
}
}
}
2.sorumda view dosyası oluşturun demişsiniz bu dosyayı hangi klasörün içine hangi adla açıcam acaba birde bu ürün listesi opencart admin panelinde nerde gözükecek acaba şimdiden teşekkür ederim
Merhaba, yazınızım devamı için 16 haziran sonrası şeklinde bilgi paylaşmıştınız merakla bekliyoruz. Yazmaya başlayabildiniz mi acaba ? Emeğine yüreğine sağlık.
Hocam modülün devamını yazarsanız herkesi çok mutlu edersiniz 🙂
Yazıyorum şu anda…
Gökmen Bey, 2 senedir bekliyoruz. 🙂
güzel haberlerinizi…
Gözünü sevdiğim madem bu kadar yazmışsın şunları dosya olarak yayınlasanda milletin 3 kuruşluk karına ortak olan entegrasyon firmalarına dünyanın kaç bucak oluğunu bi göstersen diyorum
Merhabalar, çok uzun zamandır yazamadım. Yurtdışında bir kaç proje ile uğraşıyordum ki şu Corona virüsü peydahlandı. Artık #evdekal durumundayım. Günlük olarak devam etmeyi planlıyorum. İlginiz için teşekkür ederim.
Yakında…
Emeğinize sağlık ..bu ay beklemedeyiz 😉
Merhaba yazının devamı gelecekmi ?
/admin/model/extension/n11/n11.php dosyasının nasıl oluşturacağız..
Ftp üzerinden oluşturabilirsiniz.
cok tesekkur ederım sagolun opencart 3 ıcınde yapabılırsenız tesekkur ederım yapamassanız canınız sagolsun.. bu bılgı ıcın bıle ayakta alkıslanmayı hakediyorsunuz, keyifnargile diye nargile urunleri satan bir sitem var ona uygulamak istiyorum
Sabaha karşı 4.50 de yazıyorum bu yorumu. Umarım yazının devamı gelir ya da bitmiş hazır hali paylaşılır da şu fahiş fiyatlardan kurtuluruz. Çok teşekkür ederim şimdiden.
Uzun zamandır tamamlanması için takip ediyorum. Corona’nın insanlığa tek faydası, bu makalenin tamamlanması olacak sanırım.
Gökhan hocam medya ajansı olarak şu işten gram beklentimiz yok yeter ki bir dökümasyon hazırlansın. Geri dönüş yapmanı bekliyoruz
Yazının devamını merakla bekliyoruz, başarılar dilerim.
Gökhan bey merhaba, pazaryeri entegrasyonları için çalışma yaptırmak istiyoruz size ulaşabileceğimiz bir email adresi verebilir misiniz ?
Hocam nerde kaldınız 🙂
Çok meşgulüm kusura bakmayın 🙂