Перейти к содержимому
 PrestaShop · 20–25 мин · средний

Интегрируйте Perfect Day в PrestaShop.

Продавайте купоны Perfect Day через свой PrestaShop. В PrestaShop нет встроенной функции веб-хуков — вам потребуется небольшой пользовательский модуль, который будет отслеживать событие оформления заказа. Уведомление: Данное руководство применимо к PrestaShop версии 1.7 и выше.

Необходимо сделать заранее: Сходите как раз общая подготовка Это включает в себя создание купона, получение пароля приложения и указание URL-адреса веб-перехватчика. Процедура занимает приблизительно пять минут и применима ко всем системам интернет-магазинов.

Шаг 1 — Создайте свойство для идентификатора купона.

В PrestaShop есть так называемые „функции", которые позволяют прикреплять к товарам любые данные.

  1. Создать новый объект

    Административная панель PrestaShop → Каталог → Атрибуты и свойства → Свойства„"Добавить новый объект"". Имя: Идентификатор купона Perfect Day. Сохранить. Затем в разделе „"Ценности"" Присвойте значение каждому варианту купона (например,. 15114, 15115).

  2. Присвойте свойство каждому продукту.

    В редакторе товаров → вкладка „Функции"„Идентификатор купона Perfect Day" Выберите → присвойте соответствующее значение → сохраните.

    Вариант с использованием свойств более подходит, чем пользовательское поле, поскольку пользовательские поля в PrestaShop предназначены только для ввода данных покупателем, а не для создания ссылок на административную панель.

Шаг 2 — Пользовательский модуль для веб-хука

Модуль отслеживает наличие хука. действиеValidateOrder и отправляет заказ в компанию Perfect Day.

  1. Создайте структуру модулей.

    Модуль состоит из двух файлов:

    Структура каталогов
    modules/perfectdayconnector/ ├── perfectdayconnector.php └── config.xml
  2. perfectdayconnector.php

    Основной файл модуля регистрирует обработчик заказов, считывает свойство ID купона для каждого товара и отправляет веб-хук. Примерно 80 строк кода.

    Просмотреть полный код — 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 на платформу.'); $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); } }
  3. Установить модуль

    Упакуйте папку с модулем в ZIP-архив, затем откройте панель администратора PrestaShop → Модули → Менеджер модулей → Загрузка модуля → Вставьте ZIP-файл → установить → активировать.

  4. Настройте учетные данные

    Введите свои учетные данные в качестве значений конфигурации. PFD_API_USER (Ваше имя пользователя WordPress) и PFD_API_PASSWORD (Ваш пароль приложения). Это можно сделать через конфигурацию модуля или непосредственно в ps_configuration-Таблица.

Шаг 3 — Порядок проведения тестирования

  1. Оформите и проверьте заказ

    Разместите тестовый заказ во фронтенде PrestaShop и завершите оплату (для тестирования достаточно банковского перевода). Затем проверьте: Административная панель платформы → Идеальный день → Заказы в магазине (Запись с) shop_type=prestashop?) и почтовый ящик клиента для отправки фирменного электронного письма с кнопкой печати.

Если что-то застряло

Поиск неисправностей.

Модульный хук не срабатывает.

Очистите кэш PrestaShop: Расширенные параметры → Производительность → Очистить кэш. Также проверьте, активен ли модуль.

Стоимость недвижимости остается нулевой.

Код модуля выполняет поиск по названию функции. Идентификатор купона Perfect Day. Если вы изменили название, вам необходимо внести корректировки в код. Для многоязычных магазинов название функции должно быть переведено для каждого языка.

HTTP 401 / 403

401 = Неверное имя пользователя или пароль приложения (Имя пользователя — это ваше имя пользователя WordPress, а не адрес электронной почты). 403 = Идентификатор купона не принадлежит вашей учетной записи провайдера.

Настройка службы

Вы бы предпочли, чтобы мы это для вас настроили?

Мы предлагаем вам готовый модуль PrestaShop с удобным интерфейсом настройки, хостинг через Make.com/Zapier или проверку кода вашего собственного пользовательского модуля.

Часто задаваемые вопросы

Остались вопросы?

Работает ли это также с PrestaShop 1.6?
Данное руководство предназначено для PrestaShop 1.7 и выше. Для более старых версий, пожалуйста, отправьте нам запрос в службу поддержки — потребуется внести изменения в код модуля.
Можно ли использовать пользовательское поле вместо свойства?
Технически да, но не рекомендуется. Пользовательские поля в PrestaShop предназначены для ввода данных покупателями, а не для создания ссылок в административной панели. Метод с использованием свойств более стабилен.

Магазин подключен к сети — и что дальше?

После запуска веб-хука все заказы автоматически отобразятся в вашей административной панели. Если вам потребуется дополнительное подключение, каждый дополнительный магазин можно настроить всего за несколько минут.

Перейти к обзору магазина