antes del reemplazo de archivos

This commit is contained in:
DANYDHSV 2026-03-09 13:35:16 -06:00
parent 3cddcb548e
commit 8d4580e138
6 changed files with 2666 additions and 48 deletions

View File

@ -1,5 +1,30 @@
# CHANGELOG - SIIP WhatsApp Notifications Plugin # CHANGELOG - SIIP WhatsApp Notifications Plugin
## VERSIÓN 4.3.0 - 23-02-2026
### 🔐 Seguridad y Acceso (Login)
1**Sistema de Login Integrado**:
_ Implementada pantalla de inicio de sesión "Premium" para acceso externo
_ Validación estricta con la API de UISP (endpoint `/user/login`)
_ Soporte completo para autenticación de dos factores (2FA / TOTP)
_ Control de roles: Acceso restringido exclusivamente a administradores y súper administradores
\_ Manejo de estado de sesiones con `sessionStorage` y validación híbrida PHP/JS
2**Protección de Rutas (Proxy de Sesión)**:
_ Nuevo sistema PHP para detectar el contexto de la URL (Pública vs Privada CRM)
_ Auto-login transparente si existe una sesión válida en el navegador desde el portal UCRM
\_ Botón condicional de "Cerrar Sesión" exclusivo para accesos desde URL pública
### 💎 Rediseño Premium de Interfaz (UI/UX)
1**Autenticación Premium (Stitch Glassmorphism)**:
_ Pantalla de login elegante usando tendencias de Glassmorphism (`blur`, transparencias RGBA, bordes sutiles iluminados)
_ Partículas flotantes decorativas con efecto desenfoque radial en el fondo oscuro
_ Inputs "Glow" reactivos y botones con gradientes vibrantes y sombra perimetral flotante
_ Interruptor ('Toggle Switch') animado con física de rebote para alternar entre modo Claro y Oscuro
\_ Ocultamiento de textos truncados ("Modo Osc...") en favor de una experiencia más visual y limpia con íconos deslizables
## VERSIÓN 4.2.2 - 10-02-2026 ## VERSIÓN 4.2.2 - 10-02-2026
### ✨ Nuevas Características (Features) ### ✨ Nuevas Características (Features)

View File

@ -0,0 +1,88 @@
📢 Buenos días equipo, Mega Actualización del Plugin Notificaciones y Pagos WhatsApp SIIP 🚀 *Versiones 3.0.0 hasta 4.3.0*
Se ha completado una de las actualizaciones tecnológicas más grandes e importantes en la historia del sistema central de notificaciones y cobranza. Aquí se detallan todos los cambios monumentales:
━━━━━━━━━━━━━━━━━━━━━━
💻 *1. El Nuevo Portal Administrativo SIIP*
Se integró un portal web completo y dedicado directamente dentro del CRM. Este portal centraliza toda la operación en 4 módulos principales:
• 👷‍♂️ *Módulo de Instaladores*: Permite gestionar y vincular a los técnicos e instaladores de la empresa para el enrutamiento de notificaciones.
• ✉️ *Módulo de Notificaciones y Comprobantes*: Brinda un historial de los pagos de cada cliente, con la función (altamente solicitada) para **reenviar manualmente los comprobantes de pago** por WhatsApp con un solo clic.
• 💳 *Módulo de Cobranza con Tarjetas (Stripe)*: Permite realizar cargos a tarjetas de crédito/débito en tiempo real o generar enlaces de pago, además de visualizar el historial financiero de los clientes.
• 🏪 *Módulo de Cobranza en Efectivo (Oxxo)*: Desde aquí se generan referencias de Oxxo Pay al instante para que el cliente pague en tienda, llevando un control exacto de las referencias emitidas.
━━━━━━━━━━━━━━━━━━━━━━
🤖 *2. El Nuevo Cerebro de WhatsApp (Callbell)*
• 📱 *Nuevo Bot de Callbell*: Se migró toda la operación a un nuevo bot construido desde cero. Esto permite un envío de mensajes más estable y con mucha mayor capacidad de respuesta.
• ⚡ *Multiservicio*: Soporte ampliado para procesar múltiples servicios simultáneos sin cuellos de botella.
━━━━━━━━━━━━━━━━━━━━━━
🧾 *3. La Revolución de Oxxo Pay y Comprobantes*
• 🛒 *Flujo por Órdenes y Base de Datos*: Se cambió la forma en que el sistema de Oxxo Pay funciona. Ahora trabaja bajo un sistema de órdenes respaldado por base de datos, ¡eliminando por fin los fallos y cobros no reflejados por *timeout*!
• 🏭 *Nuevos Microservicios Dedicados*: Se extrajo la carga de trabajo pesada a un nuevo microservicio.
→ Ahora este se encarga de generar los vouchers de Oxxo y los comprobantes de pago.
→ Realiza el recorte automático (cropping) preciso de las imágenes.
→ Inserta dinámicamente el *nombre del cliente* en la imagen ("overlay"), dejándolos listos para enviar.
━━━━━━━━━━━━━━━━━━━━━━
☁️ *4. MinIO: La Nueva Nube Privada (Estilo AWS)*
• 🚀 *Adiós al FTP de WordPress*: Se ha dejado de depender de cargas lentas e inseguras por FTP hacia WordPress.
• 📦 *Almacenamiento MinIO*: Se implementó un sistema de almacenamiento de objetos idéntico a Amazon Web Services S3. Ahora todos los vouchers, comprobantes y PDFs se guardan de forma instantánea, segura y generan enlaces públicos a la velocidad de la luz.
━━━━━━━━━━━━━━━━━━━━━━
🎨 *5. Interfaz Gráfica y Experiencia (UI/UX)*
• 💎 *Diseño Premium (Glassmorphism)*: Renovación visual completa usando estética de cristal moderno en el nuevo Portal Administrativo.
• 🔐 *Sistema de Login Seguro*: Ya no cualquiera puede entrar; ahora el portal valida la sesión de manera segura directo con el core de UCRM (al igual que el Hub de Herramientas de Pagos).
• 👁️ *Vouchers Inline*: Ahora se pueden visualizar los vouchers generados directamente dentro de la interfaz del portal sin tener que descargarlos previamente.
• 🌙 *Modo Oscuro*: El portal ahora respeta la vista con un modo oscuro elegante y funcional para todo el equipo.
━━━━━━━━━━━━━━━━━━━━━━
📦 *Historial de Versiones Resumido (Desde v2.9.2)*
*v4.3.0* (Actual)
→ Sistema de Login con validación UCRM y Rediseño Premium Glassmorphism UI.
*v4.1.0*
→ Integración de Microservicio PDF y MinIO, Auto-recorte de comprobantes y textos dinámicos sobre imagen.
*v4.0.0*
→ Re-diseño UI con Nuevo Portal, integración Stripe (SPEI/OXXO), visualización inline y Optimización de seguridad FTP/Nube.
*v3.1.0*
→ Módulos Administrativos y Re-envío manual de notificaciones de pago.
*v3.0.0*
→ Soporte multiservicios y optimizaciones pesadas de rendimiento backend.
━━━━━━━━━━━━━━━━━━━━━━
🚀 *Cómo Acceder*
Al igual que siempre, lo encuentran integrado en el CRM en:
*Reportes → Portal Administrativo de Pagos de STRIPE y Notificaciones WhatsApp*.
━━━━━━━━━━━━━━━━━━━━━━
📝 *Notas Finales*
Esta no es solo una actualización visual, se cambió por completo el *motor interno* del plugin. Ahora el sistema opera con arquitectura de microservicios, cuenta con un portal administrativo completo y usa nubes privadas (MinIO) de nivel empresarial. Los fallos de timeout al cruzar cobros con Oxxo y las lentitudes de subir archivos por FTP pasaron a la historia.
Cualquier duda, favor de reportarla de inmediato para revisión.
*¡A sacarle provecho!* 💪
━━━━━━━━━━━━━━━━━━━━━━
_Desarrollado con ❤️ por SIIP Internet_
_Versión 4.3.0 - Marzo 2026_

View File

@ -1,12 +1,18 @@
# SIIP - WhatsApp Notifications & Integrated Payment Portal # SIIP - WhatsApp Notifications & Integrated Payment Portal
![Version](https://img.shields.io/badge/version-4.2.0-blue.svg?style=for-the-badge) ![Version](https://img.shields.io/badge/version-4.3.0-blue.svg?style=for-the-badge)
![UCRM Compatibility](https://img.shields.io/badge/UCRM-v2.1.0%2B-green.svg?style=for-the-badge) ![UCRM Compatibility](https://img.shields.io/badge/UCRM-v2.1.0%2B-green.svg?style=for-the-badge)
![Status](https://img.shields.io/badge/status-PRODUCTION-success.svg?style=for-the-badge) ![Status](https://img.shields.io/badge/status-PRODUCTION-success.svg?style=for-the-badge)
![Author](https://img.shields.io/badge/author-SIIP_INTERNET-orange.svg?style=for-the-badge) ![Author](https://img.shields.io/badge/author-SIIP_INTERNET-orange.svg?style=for-the-badge)
Este plugin es una solución integral que transforma tu UCRM en un **Portal Administrativo de Última Generación**. No solo automatiza la comunicación por WhatsApp, sino que integra un Dashboard completo para la gestión de pagos online (Stripe/OXXO), visualización de comprobantes y coordinación de equipos técnicos. Este plugin es una solución integral que transforma tu UCRM en un **Portal Administrativo de Última Generación**. No solo automatiza la comunicación por WhatsApp, sino que integra un Dashboard completo para la gestión de pagos online (Stripe/OXXO), visualización de comprobantes y coordinación de equipos técnicos.
## 🔐 Novedades v4.3.0 (Security & Premium UI)
- **🛡️ Sistema de Acceso Seguro**: Implementada validación híbrida (Server + Client). El plugin ahora protege las URLs públicas mediante una pantalla de inicio de sesión que requiere credenciales de Administrador de UCRM o autenticación 2FA.
- **💎 Autenticación Premium (Glassmorphism)**: Nueva pantalla de inicio de sesión con una interfaz elegante y de lujo basada en Glassmorphism interactivo (esferas flotantes, desenfoques profundos, switch animado tipo iOS para modo oscuro).
- **🚀 Single-Sign-On Ciego**: Si el administrador ya ingresó desde el portal interno UCRM, la capa de seguridad detecta la sesión local y le otorga acceso sin pedir credenciales, optimizando el flujo de trabajo.
## 🚀 Novedades v4.2.0 (Analytics & Sync) ## 🚀 Novedades v4.2.0 (Analytics & Sync)
- **📊 Visualizador de Pagos Mensuales**: Nueva herramienta de análisis que permite seleccionar cualquier mes y visualizar gráficamente: - **📊 Visualizador de Pagos Mensuales**: Nueva herramienta de análisis que permite seleccionar cualquier mes y visualizar gráficamente:
@ -37,16 +43,19 @@ Este plugin es una solución integral que transforma tu UCRM en un **Portal Admi
## ⚡ Funcionalidades Principales ## ⚡ Funcionalidades Principales
### 1. Gestión de Cobranza Avanzada ### 1. Gestión de Cobranza Avanzada
- **Pagos SPEI**: Instrucciones inmediatas con CLABE personalizada. - **Pagos SPEI**: Instrucciones inmediatas con CLABE personalizada.
- **Vouchers OXXO**: Generación instantánea de códigos de barras con vista previa "Split-Screen" (Datos + Imagen). - **Vouchers OXXO**: Generación instantánea de códigos de barras con vista previa "Split-Screen" (Datos + Imagen).
- **Historial en Tiempo Real**: Consulta los últimos 10 pagos de cualquier cliente al instante. - **Historial en Tiempo Real**: Consulta los últimos 10 pagos de cualquier cliente al instante.
### 2. Automatización WhatsApp (CallBell) ### 2. Automatización WhatsApp (CallBell)
- **Notificaciones Dinámicas**: Envío automático de facturas, recordatorios de pago y avisos de corte. - **Notificaciones Dinámicas**: Envío automático de facturas, recordatorios de pago y avisos de corte.
- **Re-envío Manual**: Herramienta para disparar notificaciones específicas desde el Dashboard si el proceso automático falla. - **Re-envío Manual**: Herramienta para disparar notificaciones específicas desde el Dashboard si el proceso automático falla.
- **Sincronización Total**: Mantiene los contactos de CallBell siempre actualizados con los datos del CRM. - **Sincronización Total**: Mantiene los contactos de CallBell siempre actualizados con los datos del CRM.
### 3. Coordinación Técnica (Jobs/Tasks) ### 3. Coordinación Técnica (Jobs/Tasks)
- **Agenda Inteligente**: Notifica a instaladores sobre nuevas tareas y reprogramaciones. - **Agenda Inteligente**: Notifica a instaladores sobre nuevas tareas y reprogramaciones.
- **Datos para Técnicos**: Envía coordenadas GPS y contraseñas de equipos (formato impresora térmica) directamente al WhatsApp del técnico. - **Datos para Técnicos**: Envía coordenadas GPS y contraseñas de equipos (formato impresora térmica) directamente al WhatsApp del técnico.
@ -82,6 +91,7 @@ Para desbloquear todo el potencial, el plugin requiere:
El plugin se configura directamente desde el panel de UCRM (`Ajustes -> Plugins -> siip-whatsapp-notifications`). El plugin se configura directamente desde el panel de UCRM (`Ajustes -> Plugins -> siip-whatsapp-notifications`).
### Parámetros Críticos ### Parámetros Críticos
- `ipserver`: Tu dominio UCRM. - `ipserver`: Tu dominio UCRM.
- `tokenstripe`: Tu Secret Key de Stripe. - `tokenstripe`: Tu Secret Key de Stripe.
- `tokencallbell`: Tu API Key de CallBell. - `tokencallbell`: Tu API Key de CallBell.

File diff suppressed because one or more lines are too long

View File

@ -5,13 +5,18 @@
"displayName": "SIIP - Procesador de Pagos en línea con Stripe, Oxxo y Transferencia, Sincronizador de CallBell y Envío de Notificaciones y comprobantes vía WhatsApp", "displayName": "SIIP - Procesador de Pagos en línea con Stripe, Oxxo y Transferencia, Sincronizador de CallBell y Envío de Notificaciones y comprobantes vía WhatsApp",
"description": "Este plugin sincroniza los clientes del sistema UISP CRM con los contactos de WhatsApp en CallBell, además procesa pagos de Stripe como las trasferencias bancarias y genera referencias de pago vía OXXO, además envía comprobantes de pago en formato imagen PNG o texto vía Whatsapp a los clientes", "description": "Este plugin sincroniza los clientes del sistema UISP CRM con los contactos de WhatsApp en CallBell, además procesa pagos de Stripe como las trasferencias bancarias y genera referencias de pago vía OXXO, además envía comprobantes de pago en formato imagen PNG o texto vía Whatsapp a los clientes",
"url": "https://siip.mx/", "url": "https://siip.mx/",
"version": "4.2.2", "version": "4.3.0",
"unmsVersionCompliancy": { "unmsVersionCompliancy": {
"min": "2.1.0", "min": "2.1.0",
"max": null "max": null
}, },
"author": "SIIP INTERNET", "author": "SIIP INTERNET",
"changelog": [ "changelog": [
{
"version": "4.3.0",
"date": "2026-02-23",
"changes": "Implementación de Sistema de Login Seguro con validación de sesiones UCRM y Rediseño Premium Glassmorphism UI."
},
{ {
"version": "4.1.0", "version": "4.1.0",
"date": "2026-01-15", "date": "2026-01-15",

View File

@ -1327,6 +1327,38 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
} }
} }
.login-theme-btn {
position: absolute;
top: 24px;
right: 24px;
z-index: 10000;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 10px 20px;
border-radius: 30px;
font-family: inherit;
font-size: 0.9rem;
font-weight: 600;
white-space: nowrap;
background: rgba(15, 23, 42, 0.6);
color: #f8fafc;
border: 1px solid rgba(255, 255, 255, 0.15);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.login-theme-btn:hover {
background: rgba(15, 23, 42, 0.8);
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
border-color: rgba(255, 255, 255, 0.3);
}
[data-theme="light"] #loginOverlay { [data-theme="light"] #loginOverlay {
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f8fafc 100%); background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f8fafc 100%);
} }
@ -1341,6 +1373,27 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
color: #0f172a; color: #0f172a;
} }
[data-theme="light"] .login-theme-btn {
background: rgba(255, 255, 255, 0.7);
color: #1e293b;
border: 1px solid rgba(255, 255, 255, 1);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
}
[data-theme="light"] .login-theme-btn:hover {
background: rgba(255, 255, 255, 0.95);
border-color: rgba(209, 213, 219, 0.8);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
}
.login-theme-btn .theme-icon,
.login-theme-btn .theme-icon-box {
flex-shrink: 0;
display: flex;
align-items: center;
font-size: 1.1rem;
}
[data-theme="light"] .login-subtitle, [data-theme="light"] .login-subtitle,
[data-theme="light"] .login-field label, [data-theme="light"] .login-field label,
[data-theme="light"] .login-footer { [data-theme="light"] .login-footer {
@ -1372,7 +1425,7 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
<body> <body>
<!-- ━━━ Login Overlay ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --> <!-- ━━━ Login Overlay ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -->
<div id="loginOverlay"> <div id="loginOverlay">
<button class="theme-toggle" onclick="toggleTheme()" style="position: absolute; top: 24px; right: 24px; z-index: 10000; display: flex; align-items: center; gap: 8px; padding: 10px 18px; border-radius: 20px; font-family: 'Outfit', sans-serif; font-size: 0.95rem; font-weight: 600; background: var(--bg-card); color: var(--text-main); border: 1px solid var(--border); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); cursor: pointer; transition: all 0.2s ease;"> <button class="theme-toggle login-theme-btn" onclick="toggleTheme()">
<div class="theme-icon-box" style="display: flex; align-items: center; justify-content: center;"></div> <div class="theme-icon-box" style="display: flex; align-items: center; justify-content: center;"></div>
<span class="theme-text">Modo Claro</span> <span class="theme-text">Modo Claro</span>
</button> </button>
@ -1431,8 +1484,7 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
</svg> </svg>
Menú Principal Menú Principal
</button> </button>
<?php if (strpos($_SERVER['REQUEST_URI'], '_plugins') !== false): ?> <button id="logoutBtn" class="btn btn-secondary" style="color: #ef4444; border-color: rgba(239, 68, 68, 0.3); background: rgba(239, 68, 68, 0.05);" onclick="handleLogout()">
<button class="btn btn-secondary" style="color: #ef4444; border-color: rgba(239, 68, 68, 0.3); background: rgba(239, 68, 68, 0.05);" onclick="handleLogout()">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align:middle; margin-right:6px;"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align:middle; margin-right:6px;">
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path> <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path>
<polyline points="16 17 21 12 16 7"></polyline> <polyline points="16 17 21 12 16 7"></polyline>
@ -1440,7 +1492,6 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
</svg> </svg>
Cerrar Sesión Cerrar Sesión
</button> </button>
<?php endif; ?>
<!-- RESTORED THEME BUTTON --> <!-- RESTORED THEME BUTTON -->
<!-- PREMIUM THEME BUTTON --> <!-- PREMIUM THEME BUTTON -->
<button class="theme-toggle" id="themeBtn" onclick="toggleTheme()"> <button class="theme-toggle" id="themeBtn" onclick="toggleTheme()">
@ -1938,7 +1989,12 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
window.handleLogout = () => { window.handleLogout = () => {
sessionStorage.removeItem('nms_auth_token'); sessionStorage.removeItem('nms_auth_token');
sessionStorage.removeItem('nms_user'); sessionStorage.removeItem('nms_user');
if (!NEEDS_LOGIN) {
window.top.location.href = '/crm/logout';
} else {
window.location.reload(); window.location.reload();
}
}; };
@ -2847,6 +2903,16 @@ $installersData = json_decode($config['installersDataWhatsApp'] ?? '{"instalador
}); });
// Inicialización: decidir si mostrar login o portal // Inicialización: decidir si mostrar login o portal
sessionStorage.removeItem('nms_force_local_login'); // Cleanup from previous versions
// Ocultar botón de Cerrar Sesión si estamos dentro del iframe del CRM
document.addEventListener('DOMContentLoaded', () => {
if (window.top !== window.self) {
const logoutBtn = document.getElementById('logoutBtn');
if (logoutBtn) logoutBtn.style.display = 'none';
}
});
if (NEEDS_LOGIN) { if (NEEDS_LOGIN) {
// No hay sesión UCRM, intentar con token almacenado // No hay sesión UCRM, intentar con token almacenado
verifyStoredSession().then(valid => { verifyStoredSession().then(valid => {