Saltar al contenido
 PrestaShop · 20–25 min · medio

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.

  1. 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).

  2. 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.

  1. Crear una estructura de módulo

    El módulo consta de dos archivos:

    Estructura de directorios
    módulos/perfectdayconnector/ ├── perfectdayconnector.php └── config.xml
  2. 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
    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); } }
  3. 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.

  4. Configurar credenciales

    Introduzca sus datos de inicio de sesión como valores de configuración — PFD_API_USER (tu nombre de usuario de WordPress) y Contraseñ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 el ps_configuration-Tabla.

Paso 3: Orden de prueba

  1. 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.

Si algo está atascado

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.

Servicio de configuración

¿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.

Preguntas frecuentes

¿Aún tienes preguntas?

¿Esto también funciona con PrestaShop 1.6?
Esta guía es para PrestaShop 1.7 o superior. Para versiones anteriores, envíenos una solicitud de soporte; será necesario ajustar el código del módulo.
¿Puedo usar un campo personalizado en lugar de la propiedad?
Técnicamente sí, pero no es recomendable. Los campos personalizados en PrestaShop están pensados para que el cliente introduzca datos, no para enlaces en el panel de administración. El método de propiedades es más estable.

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