Dashboard

Resumen automatizado de ingresos

Desconectado
Obteniendo Tasas en tiempo real...
0,00
Recibidos Hoy
0,00
Esta Semana
0,00
Este Mes
0
Total Transacciones
Historial Completo
Conectar Aplicaciones
Exportar Excel

Tendencia de Ingresos

Recepciones Recientes (En Vivo)

Cargando...

Base de Datos de Pagos

Fecha y Hora Nro. Referencia / User Origen Monto Recibido Estado Acciones
0
Procesados Exitosamente
0
Requieren Revisión
0
Anulados / Erróneos

Crecimiento del Monto Acumulado

Central de Integración Automática

Conecta PagoListo con tu banco o aplicaciones externas.

Configuración Definitiva de MacroDroid para PagoListo

Sigue estos pasos exactamente en este orden. Está diseñado para ser rápido, a prueba de errores y compatible con el sistema multimoneda.

  • 1
    Crear la Macro y las Variables Locales

    Es fundamental crear las variables antes de configurar las acciones para que aparezcan en los menús desplegables.

    1. Abre MacroDroid y toca en Añadir Macro.
    2. Arriba del todo, en "Introducir nombre", escribe: PagoListo BDV.
    3. Ve a la sección de Variables locales y toca el botón +:
       • Nombre: var_monto | Tipo: Cadena (String). Acepta.
       • Nombre: var_referencia | Tipo: Cadena (String). Acepta.

  • 2
    Configurar el Disparador (Panel Rojo)

    Esto le dirá a MacroDroid cuándo debe actuar.

    Para App Bancaria (Notificaciones):
    1. Toca el + en el panel rojo de Disparadores.
    2. Ve a Eventos de dispositivo -> Notificación -> Notificación recibida.
    3. Selecciona la app de tu banco (ej: BDV en línea). Acepta.
    4. En "Coincidencia de texto", déjalo en Cualquiera y acepta.

    Para Pagos por SMS (Provincial/Mercantil):
    1. Toca el + en el panel rojo.
    2. Ve a Eventos de llamadas/SMS -> SMS Recibido.
    3. Selecciona Seleccionar Número(s) y añade el número del banco (ej: 77107 para Provincial). Acepta.
    4. En "Contenido del SMS", déjalo en Cualquiera y acepta.

  • 3
    Configurar las Acciones (Panel Azul)

    Acción 1 (Extraer Monto): Toca + -> Manipulación de texto -> Extraer texto.
    - Texto original: Toca [...] -> Notificación -> Texto de la notificación [not_text] (Para SMS usa `sms_message`).
    - Expresión regular: (?<=Bs\.\s?)[0-9,.]+
    *SMS Provincial (77107) o Mercantil: (?<=Bs\s?)[0-9,.]+
    - Guardar en: Selecciona var_monto.

    Acción 2 (Extraer Referencia): Toca + -> Manipulación de texto -> Extraer texto.
    - Texto original: [not_text] (o `sms_message`)
    - Expresión regular: (?<=Ref[a-zA-Z:\. ]{0,4})[0-9]{4,}
    *SMS Mercantil: (?<=referencia\s)[0-9]+ | Provincial: (?<=Ref\.\s)[0-9]+
    - Guardar en: Selecciona var_referencia.

    Acción 3 (Enviar a Supabase): Toca + -> Aplicaciones -> Petición HTTP.
    - Método: POST
    - URL: Configura Supabase en Ajustes
    - Pestaña Cabecera: Añade apikey y Authorization (Bearer + Tu Key).
    - Pestaña Cuerpo: Tipo Personalizado (JSON). Pega esto:

    {
      "referencia": "[lv=var_referencia]",
      "monto": "[lv=var_monto]",
      "moneda": "Bs"
    }
  • 4
    Guardar

    En la esquina inferior derecha, toca el botón circular con el ícono de Check (✔️) para guardar la macro completa. ¡Listo!

Automatización en la Nube con Google Apps Script

Como los navegadores web bloquean la lectura directa de correos por seguridad, la forma más profesional y 100% gratuita de registrar pagos de Binance es usando un Script en tu Gmail. Este código se ejecutará automáticamente en los servidores de Google cada vez que llegue un correo, extrayendo el monto y el usuario remitente.

  • 1
    Abre Google Apps Script

    Ve a script.google.com e inicia sesión con el Gmail donde recibes las notificaciones de Binance. Haz clic en "Nuevo Proyecto".

  • 2
    Pega el Código de Integración

    Borra el código que aparece por defecto, copia el siguiente script y pégalo.
    ¡Importante! Si ya conectaste tu base de datos en Configuración, tus credenciales ya están inyectadas automáticamente en este código.

    function checkBinanceEmails() {
      var supabaseUrl = "URL_DE_TU_SUPABASE/rest/v1/pagos";
      var supabaseKey = "TU_API_KEY";
    
      // Bucle agresivo: Escanea varias veces dentro del minuto permitido por Google
      for (var loop = 0; loop < 5; loop++) {
        var threads = GmailApp.search('subject:"[Binance] Payment Receive Successful" is:unread newer_than:1d');
        
        for (var i = 0; i < threads.length; i++) {
          var messages = threads[i].getMessages();
          for (var j = 0; j < messages.length; j++) {
            var msg = messages[j];
            if (msg.isUnread()) {
              // Filtro estricto: ignorar correos con más de 60 segundos de antigüedad
              var msgDate = msg.getDate();
              var diffSeconds = (new Date().getTime() - msgDate.getTime()) / 1000;
              
              if (diffSeconds > 60) {
                 msg.markRead();
                 continue;
              }
    
              var body = msg.getPlainBody();
              var amountMatch = body.match(/Amount:[\s\S]*?([0-9.]+)\s*USDT/i);
              var monto = amountMatch ? parseFloat(amountMatch[1]) : 0;
              
              var fromMatch = body.match(/From:[\s\*]*([\s\S]*?)[\s\*]*Amount:/i);
              var referencia = fromMatch ? fromMatch[1].replace(/[\r\n\*_]/g, '').trim() : "BIN-" + msg.getId().substring(0, 8).toUpperCase();
              
              if(monto > 0) {
                var payload = { "referencia": referencia, "monto": monto, "moneda": "USDT", "estado": "pending" };
                try {
                  UrlFetchApp.fetch(supabaseUrl, {
                    "method": "post",
                    "headers": {
                      "apikey": supabaseKey,
                      "Authorization": "Bearer " + supabaseKey,
                      "Content-Type": "application/json"
                    },
                    "payload": JSON.stringify(payload)
                  });
                } catch (e) {}
              }
              msg.markRead();
            }
          }
        }
        // Pausa de 10 segundos antes de volver a escanear (hace la recepción casi instantánea)
        if (loop < 4) Utilities.sleep(10000);
      }
    }
  • 3
    Crear el Disparador (Automatización)

    1. Guarda el proyecto (icono de disquete).
    2. En el menú izquierdo, haz clic en el ícono de reloj (Disparadores).
    3. Añadir disparador -> Selecciona la función checkBinanceEmails -> Fuente del evento: Basado en el tiempo -> Tipo: Minutos -> Cada minuto.
    4. Guarda y acepta los permisos de Google. ¡Listo! Tu sistema procesará USDT automáticamente.

Conexión a Base de Datos (Supabase)

Configuración Crítica del Sistema

El acceso a las credenciales de la base de datos está protegido por seguridad.

La base de datos requiere una tabla llamada `pagos` (id, referencia, monto, moneda, estado, created_at).

Ajustes Financieros y Visuales

Moneda de Visualización

Moneda en la que se calculan los totales

Margen P2P USDT (%)

Aumenta la tasa automática para igualar anuncios más altos (Ej: 1.04)

Tasa Manual (USDT / USD)

Ignorar APIs y usar tasa fija en Bs.

Alerta Sonora

Sonido al sincronizar nuevos ingresos

Modo Oscuro

Cambiar apariencia de la interfaz

Notificaciones de Escritorio

Recibir alertas nativas de Windows/Mac

Mantenimiento

Estas acciones son destructivas y no se pueden deshacer.