VibeFox 99Minutos for PrestaShop — Ayuda
Requisitos
PrestaShop: 8.0 a 9.x.
PHP: 8.0 o posterior. El módulo no se instala con versiones anteriores de PHP.
Clave de API de 99minutos (solo para la comprobación de cobertura): consíguela con tu gestor de cuenta de 99minutos o en el portal de desarrolladores de 99minutos (developers.99minutos.com). Las claves de sandbox y de producción son distintas. Si solo usas la matriz de precios, no necesitas clave de API.
Países: 99minutos entrega en México, Colombia, Chile y Perú. Los países a los que envías deben estar activos en International > Locations.
Clave de licencia de VibeFox: se compra en vibefox.net. Una clave funciona en un dominio.
Instalación
1. En el back office ve a Modules > Module Manager y haz clic en Upload a module. Elige el archivo ZIP del módulo.
2. Cuando termine la subida, haz clic en Configure, o busca VibeFox 99Minutos en la lista de módulos más tarde y haz clic en Configure.
3. Introduce tu clave de licencia de VibeFox en License key, en el bloque de licencia de la parte superior de la página Configure, y haz clic en Activate (consulta Clave de licencia).
4. Rellena la Price matrix (al menos una fila, por ejemplo «* Default») y, opcionalmente, la clave de API y el modo de comprobación de cobertura (consulta Configuración). Haz clic en Save.
Al instalar, el módulo crea el transportista 99Minutos con el texto del tiempo de entrega Courier delivery. El transportista se asigna a todas las zonas y a todos los grupos de clientes. Puedes cambiar las zonas, los grupos de clientes, el tiempo de entrega, el logotipo y los límites de tamaño en Shipping > Carriers. Las zonas de México, Colombia, Chile y Perú deben seguir activadas para el transportista. No configures precios allí: el precio siempre viene del módulo.
Configuración
Todos los ajustes están en la página del módulo: Modules > Module Manager > VibeFox 99Minutos > Configure. Cada sección tiene su propio botón Save, que guarda toda la página. Cada guardado también borra los resultados de cobertura en caché. Después de guardar, la página te avisa si la matriz de precios está vacía, si tiene filas para países que 99minutos no atiende, si se elige un modo de comprobación de cobertura sin clave de API, o si el módulo no reconoce la unidad de peso de la tienda (en ese caso los pesos se toman como kilogramos). No se guarda nada y se muestra un error si Method title tiene más de 64 caracteres, si un campo de peso o de importe no es un número igual o mayor que 0, o si Min weight (kg) es mayor que Max weight (kg). Si la página muestra The 99Minutos carrier was not found — reset the module to create it again., consulta Solución de problemas.
General
Enable 99Minutos: activa o desactiva el transportista. Es el mismo interruptor que el estado del transportista en Shipping > Carriers.
Method title: el nombre del transportista que ve el cliente en el carrito y en la finalización de compra. Predeterminado: 99Minutos. Obligatorio, hasta 64 caracteres.
Tax: la regla de impuestos del transportista, o No tax. Con una regla de impuestos, PrestaShop añade el impuesto al precio de envío de la matriz.
API de 99minutos (comprobación de cobertura) (opcional)
La API solo se usa para comprobar si 99minutos entrega en el código postal del cliente. El precio siempre viene de la matriz.
Coverage check: si se comprueba el código postal y cómo.
Con una comprobación de cobertura, el transportista aparece solo después de que el cliente introduzca un código postal. Los resultados se guardan en caché: cubierto durante 6 horas, no cubierto durante 30 minutos, error de API durante 5 minutos. A 99minutos solo se envía el código postal, en mayúsculas y con letras y dígitos únicamente.
API key: tu clave de API de 99minutos, enviada como token Bearer al endpoint de cobertura de 99minutos. Obligatoria cuando la comprobación de cobertura está activada. Después de guardar, el campo queda vacío y muestra Saved — leave empty to keep it. Escribe una clave nueva solo si quieres cambiarla. La clave se guarda tal como la escribes; solo se eliminan los espacios alrededor.
Remove the saved API key: se muestra solo cuando hay una clave guardada. Actívalo y haz clic en Save para eliminar la clave.
Environment: Sandbox (test) (predeterminado) o Production. Sandbox y producción usan claves de API distintas, así que elige el entorno que corresponda a tu clave.
Tarifas
Los precios están en la moneda predeterminada de tu tienda, sin impuestos, y se usan tal como se introducen. El precio final se muestra en la moneda del carrito del cliente.
Price matrix: una tabla de países de destino y precios. Haz clic en Add country para añadir una fila y en el icono de papelera para eliminar una. Cada fila tiene un Country (* Default, México, Colombia, Chile o Perú), un Base price y precios para los tamaños XS (hasta 1 kg), S (hasta 2 kg), M (hasta 3 kg), L (hasta 5 kg) y XL (más de 5 kg). Un precio de tamaño vacío o 0 usa el Base price. La fila * Default se aplica a los países sin fila propia. Si un país tiene varias filas, se usa la primera. Se aceptan tanto el punto como la coma como separador decimal; los precios vacíos, no válidos o negativos se guardan como 0. Mientras la matriz no tenga al menos una fila, el transportista no se muestra en la finalización de compra.
Calculation: Per order — size by the total cart weight (predeterminado) cobra un único precio según el tamaño del paquete de todo el carrito. Per item — each unit priced by its own weight asigna a cada unidad el precio de su tamaño según su propio peso y los suma.
Free shipping: activa el envío gratis a partir de un subtotal del carrito.
Free shipping from: el subtotal del carrito (después de descuentos, sin impuestos) a partir del cual la tarifa es 0. Se usa solo cuando Free shipping está activado.
Restricciones
Min weight (kg): oculta el transportista si el carrito pesa menos. 0 significa sin límite. No puede ser mayor que Max weight (kg). Los pesos de los productos se convierten desde la unidad de peso de tu tienda.
Max weight (kg): oculta el transportista si el carrito pesa más. Predeterminado: 25. 0 significa sin límite; un campo vacío significa 25 kg.
Minimum subtotal: muestra el transportista solo si el subtotal del carrito (después de descuentos, sin impuestos) es al menos este importe. Déjalo vacío para mostrarlo siempre.
Restrict countries: ofrece el transportista solo para los países siguientes. Es un filtro adicional sobre las zonas del transportista. Es útil cuando una zona cubre varios países.
Countries: una selección de los países de 99minutos (México, Colombia, Chile, Perú). Mantén pulsado Ctrl (Cmd) para seleccionar varios. Se usa solo cuando Restrict countries está activado. Déjalo vacío para permitir todos los países de 99minutos.
Avanzado
Debug log: escribe los cálculos de tarifas en logs/vfd_99m_debug.log.php en la carpeta del módulo. El archivo no se puede abrir desde la web. Los errores de la API se registran aunque esto esté desactivado. Las claves de API y los nombres y direcciones de los clientes nunca se registran. Desactiva el registro cuando termines.
Log: muestra el tamaño y las últimas entradas del registro de depuración. Haz clic en Clear log para vaciarlo.
Remove data on uninstall: si está activado, al desinstalar el módulo se eliminan los ajustes, el transportista, la caché de cobertura y el registro. Si está desactivado, todo se conserva para una reinstalación. Los pedidos se conservan en cualquier caso.
Cómo funciona en la finalización de compra
En el paso de envío, PrestaShop pide al módulo el precio de 99Minutos. Solo cuentan los productos físicos: los productos virtuales no suman peso y no se incluyen en el subtotal del carrito. El transportista se ofrece solo cuando el país de entrega es México, Colombia, Chile o Perú (y está en la lista Countries si Restrict countries está activado). Después, el módulo comprueba los límites de peso y el Minimum subtotal.
Si el modo de comprobación de cobertura está activado, el módulo pregunta a la API de 99minutos si el código postal está cubierto. La solicitud tiene un tiempo de espera de 10 segundos y la respuesta se guarda en caché, así que el mismo código postal no genera una nueva solicitud. Los errores de la API nunca se muestran al cliente: en el modo Strict el transportista se oculta, en el modo Soft se usa el precio de la matriz. El envío gratis no evita la comprobación de cobertura.
El precio se toma de la fila de la matriz del país de entrega, o de la fila * Default. Si no existe ninguna, el transportista se oculta. Si Free shipping está activado y el subtotal del carrito alcanza Free shipping from, la tarifa es 0. El precio se calcula en la moneda predeterminada de tu tienda y después se muestra en la moneda del carrito del cliente.
Si editas el transportista en Shipping > Carriers después de que tenga pedidos, PrestaShop lo guarda como una nueva versión del transportista. El módulo sigue la nueva versión automáticamente.
El módulo no obtiene tarifas en tiempo real de 99minutos: los precios siempre vienen de tu matriz. No crea envíos ni pedidos en 99minutos, no imprime etiquetas (guías), no rastrea paquetes, no ofrece puntos de recogida Punto99 ni gestiona el pago contra reembolso. Crea los envíos en tu cuenta de 99minutos como de costumbre.
Clave de licencia
El módulo funciona con una clave de licencia de VibeFox de vibefox.net. El bloque de licencia License — VibeFox 99Minutos es el primer bloque de Modules > Module Manager > VibeFox 99Minutos > Configure, por encima de los ajustes. Pega la clave en License key y haz clic en Activate. Después, el bloque muestra la clave oculta, el estado (por ejemplo, la fecha hasta la que la licencia está activa y tu dominio) y los botones Check now para volver a comprobar el estado, Change key para introducir otra clave y Remove key para eliminar la clave de esta tienda. Debajo aparecen la línea Product: presta-shipping-99minutos y el enlace Manage licenses and domains in your account, que abre tu cuenta de vibefox.net. Solo los empleados con el permiso Configure del módulo pueden cambiar la clave. Los textos del bloque siguen el idioma del back office (se incluyen inglés y ruso).
Si la clave no es aceptada, el bloque indica el motivo, por ejemplo Key not found, This key belongs to another product, Domain limit reached o License expired on seguido de una fecha. Después de que cambie la dirección de la tienda, o después de liberar una plaza de dominio en tu cuenta, haz clic en Check now. Si el servidor de licencias no se puede contactar, el módulo sigue funcionando con el último estado conocido.
Una clave funciona en un dominio: el dominio de la tienda principal, también en una configuración multitienda. Quitar la clave de la tienda no libera su plaza de dominio. Libérala en tu cuenta de vibefox.net.
Sin una clave activa, el transportista 99Minutos no se muestra a los clientes en la finalización de compra y no se calcula ninguna tarifa. La tienda no sabe que has iniciado sesión en el back office, así que el transportista también se oculta para ti: puedes configurar el módulo antes de comprar una clave, pero no probarlo en la finalización de compra. Aparece un recordatorio en Modules > Module Manager, en la pestaña Alerts. Los pedidos existentes no se ven afectados.
Cuando una licencia caduca, el módulo sigue funcionando, pero las actualizaciones y el soporte necesitan una renovación. El estado se vuelve a comprobar automáticamente mientras trabajas en el back office: una vez al día durante los primeros 14 días después de introducir la clave y después una vez por semana. No hace falta ninguna tarea cron. Desinstalar o restablecer el módulo elimina siempre la clave de licencia y el estado de la licencia.
Solución de problemas
99Minutos no aparece en la finalización de compra: comprueba que la licencia está activa y que Enable 99Minutos está activado. El país de entrega debe ser México, Colombia, Chile o Perú y estar activo en International > Locations. En Shipping > Carriers comprueba que el transportista cubre la zona del país del cliente y su grupo. Comprueba que la Price matrix tiene una fila para ese país o una fila * Default, y revisa los límites de peso, el Minimum subtotal y Restrict countries. En la página del producto también se pueden limitar los productos a determinados transportistas.
El transportista aparece solo después de introducir un código postal: es lo esperado con una comprobación de cobertura. En el modo Strict aparece solo cuando la API confirma la cobertura.
El transportista siempre está oculto en el modo Strict: activa Debug log, recarga la finalización de compra y mira el campo Log en la página del módulo. Un error HTTP 401 o 403 significa que la clave de API fue rechazada: revisa la clave y que Environment coincida con ella (las claves de sandbox y de producción son distintas). Usa el modo Soft si los clientes deben seguir viendo el precio de la matriz mientras la API no está disponible.
El precio no es el que esperabas: revisa Calculation (por pedido o por artículo), los pesos de los productos y la unidad de peso de tu tienda (International > Localization). Un precio de tamaño vacío o 0 usa el Base price. Con una regla de impuestos en Tax, el impuesto se añade al precio de la matriz.
Los resultados de cobertura parecen obsoletos después de un cambio: haz clic en Save en la página del módulo. Esto borra los resultados de cobertura en caché.
La página indica que no se encontró el transportista 99Minutos: el transportista se eliminó en Shipping > Carriers. Restablece el módulo en Modules > Module Manager para crearlo de nuevo. Lo mismo se aplica al mensaje The settings were saved, but the carrier could not be updated. Reset the module to create it again.
Desinstalación
Ve a Modules > Module Manager, abre el menú junto a VibeFox 99Minutos y elige Uninstall. La clave de licencia y el estado de la licencia siempre se eliminan. La caché de cobertura también se elimina siempre. Si Remove data on uninstall está activado, el transportista se elimina (los pedidos conservan su historial) y los ajustes y el registro se borran. Si está desactivado, el transportista solo se desactiva y todos los ajustes se conservan. Al volver a instalar el módulo, el transportista guardado recupera el estado que tenía antes de la desinstalación, así que Reset no activa un transportista desactivado.
99minutos es una marca registrada de su respectivo titular. Este módulo no está afiliado ni avalado por 99minutos.
