İçeriğe atla
 PrestaShop · 20-25 dk · orta seviye

Perfect Day'i PrestaShop'a entegre edin.

PrestaShop üzerinden Perfect Day kuponlarınızı satabilirsiniz. PrestaShop'un yerleşik bir webhook işlevi yoktur; sipariş olayını dinleyen küçük bir özel modüle ihtiyacınız vardır. Bir duyuru: Bu kılavuz PrestaShop 1.7 ve üzeri sürümler için geçerlidir.

Önceden gerekli olanlar: Bir kere git genel hazırlık Bu işlem, bir kupon oluşturmayı, uygulama şifresini almayı ve webhook URL'sini sağlamayı içerir. Yaklaşık beş dakika sürer ve tüm mağaza sistemleri için geçerlidir.

Adım 1 — Kupon kimliği için bir özellik oluşturun

PrestaShop'ta ürünlere herhangi bir veriyi eklemenize olanak tanıyan "özellikler" bulunur.

  1. Yeni özellik oluştur

    PrestaShop yönetici paneli → Katalog → Nitelikler ve Özellikler → Özellikler„"Yeni özellik ekle"". İsim: Mükemmel Gün Kupon Kimliği. Kaydet. Ardından altında „"Değerler"" Her kupon çeşidine bir değer atayın (örneğin,. 15114, 15115).

  2. Her ürüne bir özellik atayın.

    Ürün düzenleyicisinde → Sekme „"Fonksiyonlar""„"Mükemmel Gün Kuponu"" Seç → uygun değeri atayın → kaydedin.

    Özellikler seçeneği, özel alan seçeneğine göre daha uygundur, çünkü PrestaShop'taki özel alanlar yalnızca müşteri girdisi için tasarlanmıştır, arka uç bağlantıları için değil.

Adım 2 — Web kancası için özel modül

Modül, kanca sinyalini dinler. actionValidateOrder ve siparişi Perfect Day'e gönderir.

  1. Modül yapısı oluşturun

    Bu modül iki dosyadan oluşmaktadır:

    Dizin yapısı
    modüller/perfectdayconnector/ ├── perfectdayconnector.php └── config.xml
  2. mükemmelgünbağlantısı.php

    Modülün ana dosyası sipariş kancasını kaydeder, her ürün için kupon kimliği özelliğini okur ve web kancasını gönderir. Yaklaşık 80 satır.

    Kodun tamamını görüntüle — PHP · perfectdayconnector.php
    PHP · perfectdayconnector.php
    name = 'perfectdayconnector'; $this->tab = 'export'; $this->version = '1.0.0'; $this->author = 'DigElite'; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Perfect Day Connector'); $this->description = $this->l('Perfect Day Kupon Kimlikleri içeren siparişleri platforma gönderir.'); $this->ps_versions_compliancy = ['min' => '1.7', 'max' => _PS_VERSION_]; } public function install() { return parent::install() && $this->registerHook('actionValidateOrder') && Configuration::updateValue('PFD_API_USER', '') && Configuration::updateValue('PFD_API_PASSWORD', ''); } public function uninstall() { Configuration::deleteByName('PFD_API_USER'); Configuration::deleteByName('PFD_API_PASSWORD'); return parent::uninstall(); } public function hookActionValidateOrder($params) { $order = $params['order']; if (!$order) return; $tems = []; foreach ($params['cart']->getProducts() as $p) { $couponId = $this->getProductFeatureValue($p['id_product'], 'Perfect Day Coupon-ID'); if (!$couponId) continue; $items[] = ['coupon_id' => (int)$couponId, 'count' => (int)$p['cart_quantity']]; } if (empty($items)) return; $customer = new Customer($order->id_customer); $payload = [ 'shop_order_id' => (string) $order->reference, 'shop_type' => 'prestashop', 'shop_domain' => Tools::getShopDomain(), 'customer' => [ 'email' => $customer->email, 'name' => trim($customer->firstname . ' ' . $customer->lastname), 'locale' => substr(Context::getContext()->language->iso_code, 0, 2), ], 'items' => $items, 'order_total_cents' => (int) round($order->total_paid * 100), 'currency' => Context::getContext()->currency->iso_code, 'placed_at' => $order->date_add, ]; $user = Configuration::get('PFD_API_USER'); $pwd = Configuration::get('PFD_API_PASSWORD'); $ch = curl_init('https://plattform.deinperfectday.de/wp-json/perfectday/shop/webhook/order'); curl_setopt_array($ch, [ CURLOPT_POST => 1, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Basic ' . base64_encode($user . ':' . $pwd), ], CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_TIMEOUT => 15, ]); curl_exec($ch); curl_close($ch); } private function getProductFeatureValue($idProduct, $featureName) { $sql = 'SELECT fvl.value FROM ' . _DB_PREFIX_ . 'feature_product fp' . 'INNER JOIN'. _DB_PREFIX_ . 'feature_lang fl ON fl.id_feature = fp.id_feature' . 'INNER JOIN'. _DB_PREFIX_ . 'feature_value_lang fvl ON fvl.id_feature_value = fp.id_feature_value' . ' WHERE fp.id_product = ' . (int)$idProduct . "AND fl.name = '". pSQL($featureName) . "'". 'LIMIT 1'; return Db::getInstance()->getValue($sql); } }
  3. Modülü yükle

    Modül klasörünü ZIP dosyası olarak sıkıştırın, ardından PrestaShop yönetim panelini açın → Modüller → Modül Yöneticisi → Modül Yükle → ZIP dosyasını takın → yükleyin → etkinleştirin.

  4. Kimlik bilgilerini yapılandırın

    Giriş bilgilerinizi yapılandırma değerleri olarak girin — PFD_API_KULLANICISI (WordPress kullanıcı adınız) ve PFD_API_ŞİFRESİ (Uygulama şifreniz). Bu işlem modül yapılandırması üzerinden veya doğrudan yapılabilir. ps_yapılandırması-Tablo.

Adım 3 — Test sırası

  1. Sipariş verin ve kontrol edin.

    PrestaShop ön yüzünde bir test siparişi verin ve ödemeyi tamamlayın (test için banka havalesi yeterlidir). Ardından kontrol edin: Platform arka ofisi → Mükemmel Gün → Mağaza siparişleri (Giriş ile) mağaza_türü=prestashop?) ve müşteri posta kutusundan yazdırma düğmesi bulunan marka e-postasına.

Bir şey sıkışmışsa

Sorun giderme.

Modül kancası tetiklenmiyor.

PrestaShop önbelleğini temizleyin: Gelişmiş parametreler → Performans → Önbelleği temizle. Ayrıca modülün etkin olup olmadığını da kontrol edin.

Mülk değeri boş kalıyor.

Modül kodu özellik adını arar. Mükemmel Gün Kupon Kimliği. Adı değiştirdiyseniz, bunu kodda da ayarlamanız gerekir. Çok dilli mağazalar için, özellik adı her dil için ayrı ayrı çevrilmelidir.

HTTP 401 / 403

401 = Yanlış kullanıcı adı veya uygulama şifresi (Kullanıcı adı, e-posta adresiniz değil, WordPress kullanıcı adınızdır). 403 = Kupon kimliği sağlayıcı hesabınıza ait değil.

Kurulum hizmeti

Bunu sizin için biz mi kurmamızı tercih edersiniz?

Size kullanışlı bir yapılandırma arayüzüne sahip eksiksiz bir PrestaShop modülü, Make.com/Zapier üzerinden barındırılan bir köprü veya kendi özel modülünüzün kod incelemesini sunuyoruz.

Sıkça Sorulan Sorular

Hâlâ sorularınız var mı?

Bu yöntem PrestaShop 1.6 ile de çalışıyor mu?
Bu kılavuz PrestaShop 1.7 ve üzeri sürümler içindir. Daha eski sürümler için lütfen bize bir destek talebi gönderin; modül kodunun ayarlanması gerekecektir.
Özellik yerine özel bir alan kullanabilir miyim?
Teknik olarak evet, ancak tavsiye edilmez. PrestaShop'taki özel alanlar, arka uç bağlantıları için değil, müşteri girdisi için tasarlanmıştır. Özellikler yöntemi daha istikrarlıdır.

Mağaza bağlantısı kuruldu — peki şimdi ne olacak?

Webhook çalışmaya başladıktan sonra, tüm siparişler otomatik olarak arka ofisinizde görünecektir. Başka bir bağlantıya ihtiyacınız varsa, her ek mağaza birkaç dakika içinde kurulabilir.

Mağaza genel görünümüne git