Centro de ayuda

Manual WISPX

Guías claras para configurar su ISP: portal de clientes, dominio propio, MikroTik y más.

Integraciones

API de integración (por tenant)

Conecte un CRM, una app de TV u otro sistema externo con su cuenta Wispx. La API entrega solo datos de sus clientes, protegida por una clave que usted genera y puede revocar en cualquier momento.

Acceso al panel

La clave de API se crea en Sistema → API de integración después de iniciar sesión como administrador de su ISP.

¿Qué es esta API?

Es una API HTTP pensada para integraciones externas (CRM, apps de TV, etc.). Permite buscar clientes por cédula, consultar facturas pendientes y registrar pagos por transferencia sin comprobante adjunto. Los datos incluyen nombre, contacto, estado del servicio, plan, zona y saldo pendiente.

Registro de pagos

Los pagos registrados por API se aprueban automáticamente si cubren la factura completa. Los pagos parciales (si su cuenta lo permite) quedan en revisión en el panel de finanzas, igual que otros reportes de pago.

¿Sirve para un CRM?

Sí. Un CRM puede identificar al cliente por cédula, mostrar deuda pendiente y registrar transferencias reportadas por el operador, todo con la misma clave API y sin acceso al panel.

  • Consulta de cliente: estado, plan, teléfono, correo, usuario del portal.
  • Pendientes: facturas en estado PENDING u OVERDUE con montos y fechas.
  • Registrar pago: transferencia con referencia numérica; sin imagen de comprobante.

Seguridad y aislamiento por tenant

Cada ISP (tenant) tiene su propia clave de API. La clave identifica automáticamente a qué empresa pertenece la consulta; no hace falta enviar el ID del tenant en la URL.

  • Solo ve clientes de su tenant. Una clave de TecnoLaing no puede leer datos de otro proveedor.
  • La clave se guarda hasheada en el servidor; ni siquiera el equipo de Wispx la puede recuperar después de generarla.
  • Puede deshabilitar o revocar la clave al instante si deja de confiar en una integración.
  • No expone contraseñas, código del programa, configuración interna ni listados masivos de todos los clientes.
  • No da acceso al panel web ni permisos de administrador: es únicamente el endpoint documentado.

Qué entregar a quien integra

Comparta solo dos cosas: la URL base de su Wispx (ej. https://app.suisp.com) y la clave API generada en el panel. No comparta usuarios ni contraseñas del panel.

Activar la API en su cuenta

1

Entrar como administrador

Inicie sesión en su panel Wispx con un usuario ADMIN.

2

Generar la clave

Vaya a Sistema → API de integración, pulse Generar clave y cópiela en ese momento. No se vuelve a mostrar completa.

3

Habilitar y probar

Marque API habilitada, copie la URL de ejemplo del panel y pruebe con curl o Postman antes de pasar la clave al CRM.

Autenticación

En cada petición incluya la clave en uno de estos headers:

Authorization: Bearer wispx_xxxxxxxxxxxxxxxx
# o
X-Api-Key: wispx_xxxxxxxxxxxxxxxx

Si la clave es incorrecta, está revocada o la API está deshabilitada, la respuesta será 401 sin revelar si el tenant existe.

1. Consulta por cédula

Método GET. La cédula va como parámetro de consulta (solo números o con formato habitual).

GET {BASE_URL}/api/public/integration/customers?cedula=1712345678

Ejemplo con curl

curl -s \
  -H "Authorization: Bearer TU_API_KEY" \
  "{BASE_URL}/api/public/integration/customers?cedula=1712345678"

Respuesta — cliente (JSON)

{
  "ok": true,
  "cedula": "1712345678",
  "count": 1,
  "customers": [{
    "id": "cl_abc123",
    "cedula": "1712345678",
    "firstName": "Juan",
    "lastName": "Pérez",
    "fullName": "Juan Pérez",
    "email": "[email protected]",
    "phone": "0991234567",
    "status": "ACTIVE",
    "portalUsername": "1712345678",
    "address": "Calle principal",
    "city": "Quito",
    "neighborhood": "Centro",
    "plan": {
      "id": "plan_1",
      "name": "50 Mbps",
      "download": 50,
      "upload": 50,
      "price": 25
    },
    "zone": { "id": "zone_1", "name": "Zona Norte" }
  }]
}

status suele ser ACTIVE, SUSPENDED u otros estados del servicio. Si no hay coincidencias, count es 0 y customers es un arreglo vacío.

2. Pendientes por cédula

Método GET. Devuelve los mismos datos del cliente más un bloque pending con facturas PENDING u OVERDUE.

GET {BASE_URL}/api/public/integration/pending?cedula=1712345678

Ejemplo con curl

curl -s \
  -H "Authorization: Bearer TU_API_KEY" \
  "{BASE_URL}/api/public/integration/pending?cedula=1712345678"

Respuesta (fragmento)

{
  "ok": true,
  "cedula": "1712345678",
  "count": 1,
  "customers": [{
    "id": "cl_abc123",
    "fullName": "Juan Pérez",
    "status": "ACTIVE",
    "pending": {
      "totalPending": 25,
      "invoiceCount": 1,
      "invoices": [{
        "id": "inv_1",
        "invoiceNumber": "F-001",
        "amount": 25,
        "status": "PENDING",
        "dueDate": "2026-07-01T00:00:00.000Z",
        "issueDate": "2026-06-01T00:00:00.000Z"
      }]
    }
  }]
}

3. Registrar pago por transferencia

Método POST con cuerpo JSON. No requiere imagen de comprobante. Si hay varias facturas pendientes y no envía invoiceId, se aplica a la más antigua por fecha de vencimiento.

POST {BASE_URL}/api/public/integration/payments
Content-Type: application/json

{
  "cedula": "1712345678",
  "amount": 25,
  "paymentReference": "12345678",
  "customerId": "opcional si hay varios servicios",
  "invoiceId": "opcional",
  "paymentMethodId": "opcional",
  "paidDate": "2026-07-01",
  "clientNote": "Transferencia reportada por operador"
}

Ejemplo con curl

curl -s -X POST \
  -H "Authorization: Bearer TU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cedula":"1712345678","amount":25,"paymentReference":"12345678"}' \
  "{BASE_URL}/api/public/integration/payments"

Respuesta exitosa

{
  "ok": true,
  "status": "APPROVED",
  "reportId": "cpr_xxx",
  "invoiceId": "inv_1",
  "customerId": "cl_abc123",
  "message": "Pago registrado y factura marcada como pagada."
}

Si hay varios servicios con la misma cédula, el POST devuelve 409 hasta que envíe customerId (obténgalo del GET de clientes o pendientes).

Códigos de error habituales

  • 401 — Clave ausente, inválida o API deshabilitada.
  • 400 — Falta parámetro, referencia inválida o monto incorrecto.
  • 404 — Cédula o factura pendiente no encontrada.
  • 409 — Varios servicios con la misma cédula (indique customerId) o pago ya en revisión.
  • 200 con count: 0 — Cédula no encontrada en su base (no es error HTTP).

Límites y buenas prácticas

  • Consulte por cédula cuando el operador o el CRM ya la conocen; no haga barridos masivos.
  • Guarde la clave como secreto; no la incluya en apps móviles públicas ni en repositorios Git.
  • Si sospecha filtración, regenere o revoque la clave en el panel.
  • Una misma cédula puede devolver varios registros si hay más de un servicio a nombre de esa persona (máx. 20).

Preguntas frecuentes

¿Necesitan URL distinta por cliente del CRM?

No. Todos usan la misma URL base de su Wispx; la clave API define el tenant. El CRM arma las peticiones GET o POST según el flujo (consulta, pendientes o pago).

¿Se puede adjuntar comprobante por API?

No en esta versión. El endpoint de pagos registra transferencias con referencia numérica. Para comprobantes con imagen, use el bot de WhatsApp o el panel de finanzas.