Merhabalar, bu yazımda sizlere Opencart ile N11 arasında nasıl entegrasyon yapabileceğinizi kalemim döndüğünce anlatmaya çalışacağım. Aslında “SOAP” işlemlerine aşina iseniz bu işlemlerin pek de zor olmadığını bilirsiniz. Ancak, nedendir bilinmez piyasada bulunan Opencart ile N11 arasında entegrasyon yapan bazı uygulamaların fahiş fiyatlar istediğine şahit oluyorum. Kimisi de işi abartarak yıllık aboneliğe dönmüş durumda.
Eğer eliniz biraz PHP tutuyorsa ve Opencart’ın frameworkü hakkında biraz bilgiye sahipseniz, araştırarak ve kurcalayarak entegrasyonu yapmak işten bile değil, göreceksiniz.
Not: Burada önemli olan SOAP’ı kavramak. Eğer SOAP’ı kavrarsanız bir kaç günlük bir çalışma ile N11 entegrasyonunu tamamlayabilirsiniz.
Opencart’ın MVC yapısı ile çalıştığı malumunuz. Bu sebeple yine aynı şekilde yapıya uygun olarak bizde MVC olarak çalışmaya devam edeceğiz. Ayrıca belirtmek isterim ki anlattığım N11 entegrasyon işlemleri Opencart’ın 2.3.0.2 versiyonu ile birebir uyumlu olup bazı değişiklikler ile beraber Opencart 3 versiyonu ile de çalışabilir. Zaten sizlere bire bir hazır kod sağlamadığımdan kendi versiyonunuza göre şekillendirebilirsiniz.
Başlarken N11 API referans dökümantasyonunu mutlaka okumanızı öneririm. Dökümantasyona buradan erişebilirsiniz.
Öncelikle so.n11.com üzerinden API hesabımızı aktif etmemiz gerekiyor. Bunun için sisteme girdiğinizde “hesabım” bölümünden “API Hesapları” linkine tıklıyoruz. Oradan “Yeni Hesap Oluştur” diyerek API anahtarını ve API şifresini oluşturuyoruz. Oluşturduğunuz anahtarı ve şifreyi şimdilik bir yere not edin.
Bu işlemi de tamamladığınızda bulunduğunuz sayfa şu şekilde görünmeli:
Bu işlem bittikten sonra artık Opencart tarafına geçebiliriz. Başlangıçta Admin sayfasını yapacağız. Bu sayfada API ayarlarımızı yapacağımız seçenekler bulunacak. Anahtar, şifre, aktif olup olmadığı ve hangi servisleri kullanacağımız ile ilgili ayarlar.
Ben eklentinin adını N11 olarak koyduğumdan;
- /admin/language/tr-tr/extension/module klasörünün içerisine n11.php adlı bir dosya oluşturdum
- /admin/controller/extension/module klasörünün içerisine n11.php adlı bir dosya oluşturdum
- /admin/view/template/extension/module klasörünün içerisine n11.tpl adlı bir dosya oluşturdum
/admin/language/tr-tr/extension/module /n11.php
<?php
$_['heading_title'] = 'N11 API';
// Text
$_['text_extension'] = 'Eklentiler';
$_['text_success'] = 'Başarılı: N11 Modülü başarılı bir biçimde değiştirildi!';
$_['text_default'] = 'Default';
$_['text_signup'] = ' Api Anahtarı almak için <a href="https://so.n11.com" target="_blank">so.n11.com</a> adresini ziyaret ediniz!';
// Entry
$_['entry_api_key'] = 'N11 API Anahtarı';
$_['entry_api_pass'] = 'N11 API Şifresi';
$_['entry_status'] = 'Durum';
// Error
$_['error_permission'] = 'Uyarı: N11 API modülünü değiştirme izniniz bulunmamaktadır!';
$_['error_api_key'] = 'API anahtarı gerekli!';
$_['error_api_pass'] = 'API şifresi gerekli!';
/admin/controller/extension/module/n11.php
<?php
class ControllerExtensionModuleN11 extends Controller {
private $error = array();
public function index() {
$this->load->language('extension/module/n11');
$this->document->setTitle($this->language->get('heading_title'));
$this->load->model('setting/setting');
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
$this->model_setting_setting->editSetting('n11', $this->request->post, $this->request->get['store_id']);
$this->session->data['success'] = $this->language->get('text_success');
$this->response->redirect($this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true));
}
$data['heading_title'] = $this->language->get('heading_title');
$data['text_edit'] = $this->language->get('text_edit');
$data['text_enabled'] = $this->language->get('text_enabled');
$data['text_disabled'] = $this->language->get('text_disabled');
$data['entry_api_key'] = $this->language->get('entry_api_key');
$data['entry_api_pass'] = $this->language->get('entry_api_pass');
$data['text_signup'] = $this->language->get('text_signup');
$data['entry_status'] = $this->language->get('entry_status');
$data['button_save'] = $this->language->get('button_save');
$data['button_cancel'] = $this->language->get('button_cancel');
if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
if (isset($this->error['api_key'])) {
$data['error_api_key'] = $this->error['api_key'];
} else {
$data['error_api_key'] = '';
}
if (isset($this->error['api_pass'])) {
$data['error_api_pass'] = $this->error['api_pass'];
} else {
$data['error_api_pass'] = '';
}
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_extension'),
'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true)
);
$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('extension/module/n11', 'token=' . $this->session->data['token'] . '&store_id=' . $this->request->get['store_id'], true)
);
$data['action'] = $this->url->link('extension/module/n11', 'token=' . $this->session->data['token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true);
$data['token'] = $this->session->data['token'];
if (isset($this->request->post['n11_api_key'])) {
$data['n11_api_key'] = $this->request->post['n11_api_key'];
} else {
$data['n11_api_key'] = $this->model_setting_setting->getSettingValue('n11_api_key', $this->request->get['store_id']);
}
if (isset($this->request->post['n11_api_pass'])) {
$data['n11_api_pass'] = $this->request->post['n11_api_pass'];
} else {
$data['n11_api_pass'] = $this->model_setting_setting->getSettingValue('n11_api_pass', $this->request->get['store_id']);
}
if (isset($this->request->post['n11_api_status'])) {
$data['n11_api_status'] = $this->request->post['n11_api_status'];
} else {
$data['n11_api_status'] = $this->model_setting_setting->getSettingValue('n11_api_status', $this->request->get['store_id']);
}
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
$this->response->setOutput($this->load->view('extension/module/n11', $data));
}
protected function validate() {
if (!$this->user->hasPermission('modify', 'extension/module/n11')) {
$this->error['warning'] = $this->language->get('error_permission');
}
if (!$this->request->post['n11_api_key']) {
$this->error['api_key'] = $this->language->get('error_api_key');
}
if (!$this->request->post['n11_api_pass']) {
$this->error['api_pass'] = $this->language->get('error_api_pass');
}
return !$this->error;
}
}
/admin/view/template/extension/module/n11.tpl
<?php echo $header; ?><?php echo $column_left; ?>
<div id="content">
<div class="page-header">
<div class="container-fluid">
<div class="pull-right">
<button type="submit" form="form-n11-api" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary"><i class="fa fa-save"></i></button>
<a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
<h1><?php echo $heading_title; ?></h1>
<ul class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li>
<?php } ?>
</ul>
</div>
</div>
<div class="container-fluid">
<?php if ($error_warning) { ?>
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> <?php echo $error_warning; ?>
<button type="button" class="close" data-dismiss="alert">×</button>
</div>
<?php } ?>
<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">
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-n11-api" class="form-horizontal">
<div class="alert alert-info"><i class="fa fa-info-circle"></i><?php echo $text_signup; ?>
<button type="button" class="close" data-dismiss="alert">×</button>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-n11_api_key"><?php echo $entry_api_key; ?></label>
<div class="col-sm-10">
<input type="text" name="n11_api_key" placeholder="<?php echo $entry_api_key; ?>" id="input-n11_api_key" class="form-control" value="<?php echo $n11_api_key; ?>">
<?php if ($error_api_key) { ?>
<div class="text-danger"><?php echo $error_api_key; ?></div>
<?php } ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-n11_api_pass"><?php echo $entry_api_pass; ?></label>
<div class="col-sm-10">
<input type="text" name="n11_api_pass" placeholder="<?php echo $entry_api_pass; ?>" id="input-n11_api_pass" class="form-control" value="<?php echo $n11_api_pass; ?>">
<?php if ($error_api_pass) { ?>
<div class="text-danger"><?php echo $error_api_pass; ?></div>
<?php } ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-n11_api_status"><?php echo $entry_status; ?></label>
<div class="col-sm-10">
<select name="n11_api_status" id="input-n11_api_status" class="form-control">
<?php if ($n11_api_status) { ?>
<option value="1" selected="selected"><?php echo $text_enabled; ?></option>
<option value="0"><?php echo $text_disabled; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_enabled; ?></option>
<option value="0" selected="selected"><?php echo $text_disabled; ?></option>
<?php } ?>
</select>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php echo $footer; ?>
Evet, bu günkü yazımda N11 API için admin tarafında ayar sayfamızı yapılandırdık. Tabiki ilerleyen bölümlerde bu sayfaya geri dönerek bazı yeni ayar alanları eklememiz gerekecek. Bunları yazının diğer bölümlerinde tek tek inceleyeceğiz. Bu günlük bu kadar diyerek bu yazı dizisinin ilk bölümünü bitirmiş bulunuyoruz. Makalenin devamı için sitemi ara sıra ziyaret etmeyi ihmal etmeyin.
Sonraki Yazı: Opencart N11 API İşlemleri Bölüm 2: Ürün Servisleri
n11 api entegrasyonunuz var mı?
Yapmış olduğum n11 api entegrasyonları var.
Merhabalar. N11 ve Trendyol opencart apisi için fiyat vermeniz mümkün müdür? Open source olarak.
Gayet başarılı güzel bir çalışma olmuş.
Merhaba yeni olduğum için deneme yapıyorum çok fazla bilgim yok.
Önce dediğiniz dosyaları admin panelindeki gerekli yerlere açıp,sonra vermil olduğunuz kodları not defterinde gerekli mağaza api bilgilerimizi yazıp kaydet diyerek tukarıdaki dosyalara mı ekliyoruz? bilgilendirir misiniz lütfen,çok teşekkür ederim.
Evet.
N11 api anahtarımızı nereye giriyoruz
Model dosyanıza veya tabloya. Eğer tablonuza yerleştirirseniz oradan çekmeniz gerekir.
Tebrik ediyorum, bu kadar güzel ve işin özünü anlattığın için.
sitemde uygulamaya calısacam tesekkur ederım
N11 gittigidiyor trendyol ve hepsi burada için entegrasyon yapabilir misiniz cevabınız evet ise fiyat alabilirmiyim
Yazıyorum arkadaşlar. Korona günleri boşa gitmesin. Buradan paylaşacağım.
Free olarak.
selam
üstadım vb 6.0 ile bir ticari yazılımım var basit bişi opencart 3xx ile beraber entegre nasıl çalıştırırım ücretli yardımınızı rica ediyorum saygılarımla
Merhaba,
Opencart harici tek başına çalışan n11’den tek ürün, ürün listesi, sipariş ve müşteri bilgileri çeken php uygulamanız varmı?
Öğrenme amacıyla sadece listeletebilsem yeter.
merhaba
n11, hepsiburada, trendyol, çiçeksepeti, gittigidiyor, eptt ve amazon için api entegratöre ihtiyacımız var fiyat ne olur özel olarak bilgi alabilir miyiz?
Üstad Devamı ne zaman?
Bekliyoruz. :))
merhaba, makalenin devamı gelecek mi? bir de sosyal medya bağlantılarınızı göremedim takip etmek isterim, iyi çalışmalar