El archivo zip y el script de verificación reproducible están incluidos en la versión candidata.
Instalación
Descarga saazly-chat.zip desde la vía de distribución indicada por Saazly.
Abre Plugins en WordPress Admin, selecciona Añadir nuevo y, después, Subir plugin.
Instala el archivo zip y activa Saazly Chat.
Abre Ajustes y Saazly Chat. Pega el Widget ID de Saazly y guarda los cambios.
Abre la página pública de la tienda y comprueba que aparezca el botón del chat.
Para consultar pedidos, un administrador de WooCommerce crea una clave de REST API con permiso read y conecta la tienda desde Ajustes y Conexiones de pedidos en Saazly.
Permisos y scopes
Solo los usuarios con manage_options pueden modificar el Widget ID.
El plugin no necesita ningún permiso especial de WooCommerce ni utiliza claves de REST API.
La conexión independiente del servidor utiliza una clave de WooCommerce REST API con permiso read. Saazly no escribe datos de pedidos, pagos, fulfillment ni clientes.
Un correo electrónico o número de pedido por sí solos nunca generan una coincidencia verificada. El número de pedido debe combinarse con un nombre o correo electrónico que coincida con el pedido del proveedor.
Datos leídos y escritos
El Widget ID público guardado. La página de ajustes puede leer el nombre público del widget desde Saazly.
Un único valor option de WordPress con el Widget ID público.
El widget puede leer productos, cantidades, precios y moneda del carrito actual del visitante. Se trata de contexto de comportamiento, no de datos de pedidos verificados.
El adaptador del servidor lee el order-id, número de pedido para el cliente, importe, moneda, estado del pago, estado del fulfillment, envíos, horas del proveedor, fuente de datos y actualidad de estos.
Webhooks
La versión 1.2.0 del plugin del widget no registra ni recibe webhooks.
La conexión del servidor registra order.created y order.updated. Cada entrega se verifica con HMAC SHA 256, se deduplica mediante delivery id y se concilia con la hora modified del proveedor.
Una ejecución firmada en el servidor lee los pedidos modificados de WooCommerce y recupera los webhooks perdidos sin permitir que los eventos antiguos sobrescriban datos más recientes.
El widget cargado utiliza la configuración pública de widgets y el servicio de chat de Saazly conforme a la política de privacidad de Saazly.
Almacenamiento de tokens
El plugin del widget no almacena access tokens, refresh tokens, claves de API ni contraseñas.
Consumer key, consumer secret y webhook secret se cifran con AES 256 GCM antes de guardarse en la base de datos. Los clientes autenticados no tienen acceso a los valores de la tabla.
Widget ID es un identificador público y se almacena como valor option de WordPress.
Desinstalación
Desactiva Saazly Chat en Plugins.
Elimina el plugin si quieres borrarlo por completo.
Al eliminarlo, uninstall.php borra la clave option saazly_chat_widget_id de una instalación normal, de cada sitio de WordPress multisite y de las site options de la red.
La eliminación de datos del navegador se rige por el proceso habitual de eliminación de datos de Saazly y no se ve afectada por la eliminación de los archivos de WordPress.
La conexión de pedidos se desactiva por separado en Saazly. Se eliminan las credentials cifradas, se bloquea el acceso local y se borran los webhooks de pedidos registrados en WooCommerce cuando la tienda responde.
Resolución de problemas
Copia el valor UUID completo desde Saazly. Los espacios se eliminan, pero los valores incompletos no se guardan.
Comprueba que el plugin esté activo, que se haya guardado el Widget ID y que la Content Security Policy de la página permita cdn.saazly.com.
El Widget ID se guarda aunque la comprobación del nombre falle temporalmente. Comprueba las conexiones HTTPS salientes del servidor de WordPress.
Comprueba que la clave tenga permiso read, que la dirección HTTPS sea exacta y que el estado del sistema muestre la misma dirección del sitio web.
Comprueba el estado de la integración en Saazly. Repetir un webhook es inocuo y reconciliation recupera los pedidos modificados desde el último cursor.
Envíe el dominio de la tienda, la hora y el mensaje de error. Nunca envíe tokens ni contraseñas.