Integra Perfect Day en PrestaShop.
Vende tus cupones de Perfect Day a través de tu PrestaShop. PrestaShop no tiene una función de webhook integrada; necesitas un pequeño módulo personalizado que detecte el evento del pedido. Un aviso: Esta guía se aplica a PrestaShop 1.7 y versiones posteriores.
Requisitos previos: Ve una vez que preparación general Esto implica crear un cupón, obtener la contraseña de la aplicación y proporcionar la URL del webhook. El proceso dura aproximadamente cinco minutos y se aplica a todos los sistemas de la tienda.
Paso 1: Crea una propiedad para el ID del cupón.
PrestaShop cuenta con las llamadas "funciones" que permiten adjuntar cualquier dato a los productos.
-
Crear nueva propiedad
Administrador de PrestaShop → Catálogo → Atributos y propiedades → Propiedades → „"Añadir nueva propiedad"". Nombre:
ID de cupón de Perfect Day. Guardar. Luego debajo „"Valores"" Asigne un valor a cada variante de cupón (por ejemplo,.15114,15115). -
Asignar propiedad a cada producto
En el editor de productos → Pestaña „"Funciones"" → „"ID de cupón de día perfecto"" Seleccionar → Asignar el valor apropiado → Guardar.
La opción de propiedades es más adecuada que un campo personalizado, ya que los campos personalizados en PrestaShop están destinados únicamente a la entrada de datos por parte del cliente, no a enlaces del panel de administración.
Paso 2: Módulo personalizado para el webhook
El módulo escucha el gancho acciónValidarOrden y envía el pedido a Perfect Day.
-
Crear una estructura de módulo
El módulo consta de dos archivos:
módulos/perfectdayconnector/ ├── perfectdayconnector.php └── config.xml -
perfectdayconnector.php
El archivo principal del módulo registra el webhook de pedidos, lee la propiedad ID del cupón para cada producto y envía el webhook. Aproximadamente 80 líneas.
Ver código completo — PHP · perfectdayconnector.php
nombre = 'perfectdayconnector'; $this->tab = 'exportar'; $this->version = '1.0.0'; $this->author = 'DigElite'; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Perfect Day Connector'); $this->description = $this->l('Envía pedidos con ID de cupones Perfect Day a la plataforma.'); $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); } } -
Instalar módulo
Comprime la carpeta del módulo como un archivo ZIP y luego abre el panel de administración de PrestaShop → Módulos → Gestor de módulos → Cargar módulo → Insertar archivo ZIP → instalar → activar.
-
Configurar credenciales
Introduzca sus datos de inicio de sesión como valores de configuración —
PFD_API_USER(tu nombre de usuario de WordPress) yContraseña de la API de PFD(Su contraseña de aplicación). Esto se puede hacer a través de la configuración del módulo o directamente en elps_configuration-Tabla.
Paso 3: Orden de prueba
-
Realizar y verificar el pedido
Realice un pedido de prueba en la interfaz de PrestaShop y complete el pago (una transferencia bancaria es suficiente para la prueba). Luego verifique: Back office de la plataforma → Día perfecto → Pedidos de la tienda (Entrada con
tipo_tienda=tienda_presta?) y el buzón del cliente al correo electrónico de la marca con botón de impresión.
Solución de problemas.
El gancho del módulo no se está ejecutando.
Borrar la caché de PrestaShop: Parámetros avanzados → Rendimiento → Borrar caché. Compruebe también si el módulo está activo.
El valor de la propiedad permanece vacío
El código del módulo busca el nombre de la característica. ID de cupón de Perfect Day. Si has cambiado el nombre, debes ajustarlo en el código. Para tiendas multilingües, el nombre de la función debe traducirse para cada idioma.
HTTP 401 / 403
401 = Nombre de usuario o contraseña de la aplicación incorrectos (el nombre de usuario es tu nombre de usuario de WordPress, no tu dirección de correo electrónico). 403 = El ID del cupón no pertenece a tu cuenta de proveedor.
¿Prefiere que lo configuremos por usted?
Le ofrecemos un módulo completo para PrestaShop con una interfaz de configuración intuitiva, un puente alojado a través de Make.com/Zapier o una revisión del código de su propio módulo personalizado.
¿Aún tienes preguntas?
¿Esto también funciona con PrestaShop 1.6?
¿Puedo usar un campo personalizado en lugar de la propiedad?
Compra conectada, ¿y ahora qué?
Una vez que el webhook esté funcionando, todos los pedidos aparecerán automáticamente en tu panel de administración. Si necesitas otra conexión, puedes configurar cada tienda adicional en tan solo unos minutos.
Ir a la descripción general de la tienda