Esta versión añade acceso programático sin navegador, seguimiento exacto de montos de liquidación, códigos QR para pagos por depósito y una ronda de mejoras de seguridad.
Cambio importante: rutas de API renombradas
Todos los endpoints del panel de comerciante se han movido de /api/dashboard/* a /api/merchant/*. Las rutas antiguas ya no funcionan. Actualiza tus integraciones.
Clave API maestra
Los comerciantes ahora pueden generar una clave API maestra (prefijo msk_) desde Panel → Configuración. Esta clave autentica contra todos los endpoints de /api/merchant/*: crear pagos, gestionar canales, configurar liquidación, sin necesidad de sesión de navegador. Útil para servicios backend, scripts y pipelines CI.
La gestión de la clave maestra (generar, rotar, revocar) requiere inicio de sesión en el navegador. Una clave maestra no puede rotarse o revocarse a sí misma.
Monto de liquidación en webhooks
Los payloads de webhook ahora incluyen dest_amount y dest_decimals, la cantidad exacta de tokens que llegaron a tu billetera. Esto es crítico para liquidaciones en tokens no estables (por ejemplo, TON) donde amount_usd no indica la cantidad de tokens. Divide dest_amount entre 10^dest_decimals para obtener la cifra legible.
Códigos QR en pagos por depósito
Los clientes que pagan mediante depósito (rutas cross-chain de Rubic, TON, Tron) ahora ven un código QR escaneable sobre los campos de copia. URIs inteligentes por cadena: EIP-681 para EVM nativo, ton://transfer con memo para TON, Solana Pay para Solana y BIP-21 para BTC.
Página de edición de canal
Cada canal ahora tiene una página de edición dedicada en /dashboard/channels/:id con secciones para marca, URL de webhook, override de liquidación, rotación de clave API y una zona de peligro para revocar acceso.
Canal de página “Págame”
Configurar una página “Págame” ahora crea automáticamente un canal dedicado. Esto le da a tu página su propia marca, destino de liquidación y webhook, independientes de tus otros canales.
Fiabilidad de webhooks
Una nueva tarea cron dispara webhooks para cualquier pago que se completó mediante polling de estado en línea pero cuyo webhook fue omitido silenciosamente. No más notificaciones perdidas.
Seguridad
- Límite de intentos en login de administrador (5 intentos / 15 min por IP)
- CORS restringido a mutopay.com + localhost
- Cabecera Content-Security-Policy en todas las páginas
- Cifrado AES-256-GCM para claves API almacenadas
- Protección contra redirección abierta en URLs de retorno