Интегрируйте Perfect Day в PrestaShop.
Продавайте купоны Perfect Day через свой PrestaShop. В PrestaShop нет встроенной функции веб-хуков — вам потребуется небольшой пользовательский модуль, который будет отслеживать событие оформления заказа. Уведомление: Данное руководство применимо к PrestaShop версии 1.7 и выше.
Необходимо сделать заранее: Сходите как раз общая подготовка Это включает в себя создание купона, получение пароля приложения и указание URL-адреса веб-перехватчика. Процедура занимает приблизительно пять минут и применима ко всем системам интернет-магазинов.
Шаг 1 — Создайте свойство для идентификатора купона.
В PrestaShop есть так называемые „функции", которые позволяют прикреплять к товарам любые данные.
-
Создать новый объект
Административная панель PrestaShop → Каталог → Атрибуты и свойства → Свойства → „"Добавить новый объект"". Имя:
Идентификатор купона Perfect Day. Сохранить. Затем в разделе „"Ценности"" Присвойте значение каждому варианту купона (например,.15114,15115). -
Присвойте свойство каждому продукту.
В редакторе товаров → вкладка „Функции" → „Идентификатор купона Perfect Day" Выберите → присвойте соответствующее значение → сохраните.
Вариант с использованием свойств более подходит, чем пользовательское поле, поскольку пользовательские поля в PrestaShop предназначены только для ввода данных покупателем, а не для создания ссылок на административную панель.
Шаг 2 — Пользовательский модуль для веб-хука
Модуль отслеживает наличие хука. действиеValidateOrder и отправляет заказ в компанию Perfect Day.
-
Создайте структуру модулей.
Модуль состоит из двух файлов:
modules/perfectdayconnector/ ├── perfectdayconnector.php └── config.xml -
perfectdayconnector.php
Основной файл модуля регистрирует обработчик заказов, считывает свойство ID купона для каждого товара и отправляет веб-хук. Примерно 80 строк кода.
Просмотреть полный код — 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 на платформу.'); $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; $items = []; 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); } } -
Установить модуль
Упакуйте папку с модулем в ZIP-архив, затем откройте панель администратора PrestaShop → Модули → Менеджер модулей → Загрузка модуля → Вставьте ZIP-файл → установить → активировать.
-
Настройте учетные данные
Введите свои учетные данные в качестве значений конфигурации.
PFD_API_USER(Ваше имя пользователя WordPress) иPFD_API_PASSWORD(Ваш пароль приложения). Это можно сделать через конфигурацию модуля или непосредственно вps_configuration-Таблица.
Шаг 3 — Порядок проведения тестирования
-
Оформите и проверьте заказ
Разместите тестовый заказ во фронтенде PrestaShop и завершите оплату (для тестирования достаточно банковского перевода). Затем проверьте: Административная панель платформы → Идеальный день → Заказы в магазине (Запись с)
shop_type=prestashop?) и почтовый ящик клиента для отправки фирменного электронного письма с кнопкой печати.
Поиск неисправностей.
Модульный хук не срабатывает.
Очистите кэш PrestaShop: Расширенные параметры → Производительность → Очистить кэш. Также проверьте, активен ли модуль.
Стоимость недвижимости остается нулевой.
Код модуля выполняет поиск по названию функции. Идентификатор купона Perfect Day. Если вы изменили название, вам необходимо внести корректировки в код. Для многоязычных магазинов название функции должно быть переведено для каждого языка.
HTTP 401 / 403
401 = Неверное имя пользователя или пароль приложения (Имя пользователя — это ваше имя пользователя WordPress, а не адрес электронной почты). 403 = Идентификатор купона не принадлежит вашей учетной записи провайдера.
Вы бы предпочли, чтобы мы это для вас настроили?
Мы предлагаем вам готовый модуль PrestaShop с удобным интерфейсом настройки, хостинг через Make.com/Zapier или проверку кода вашего собственного пользовательского модуля.
Остались вопросы?
Работает ли это также с PrestaShop 1.6?
Можно ли использовать пользовательское поле вместо свойства?
Магазин подключен к сети — и что дальше?
После запуска веб-хука все заказы автоматически отобразятся в вашей административной панели. Если вам потребуется дополнительное подключение, каждый дополнительный магазин можно настроить всего за несколько минут.
Перейти к обзору магазина