Flujo de Creación de Cuenta
La creación de una cuenta CLABE involucra dos fases: el registro sincrónico y la activación asíncrona por parte de STP.
Fase 1 — Registro (síncrono)
Sección titulada «Fase 1 — Registro (síncrono)»Backend Finalitix │ │ POST /api/v1/connection │ { module: "account", method: "postAccount", │ params: { user_id, alias } } │ ▼finalitixspeiapi │ ├─ 1. Obtener credenciales DB (Secrets Manager: CREDENTIALS_SECRET) ├─ 2. Obtener config STP (Secrets Manager: STP_SECRET_NAME) ├─ 3. Consultar última secuencia para la plaza ├─ 4. Generar CLABE: institutionCode + plazaCode + prefix + sequence + checkDigit ├─ 5. Guardar cuenta en MySQL (active=false) ├─ 6. Guardar periodo de cuenta ├─ 7. Firmar: CryptoHandlerCuenta.getSign(passphrase, privateKey) │ ├─ 8. PUT STP: regPersonaFisicaUrl | regPersonaMoralUrl │ { cuenta, empresa, nombre, rfcCurp, firma, ... } │ ├─ 9. Marcar cuenta como pendiente de revisión manual en STP ├─ 10. Lambda: ACCOUNT_CREATED (email de bienvenida) │ ▼Backend Finalitix { success: true, account_number: "64618001000001237" }Fase 2 — Activación (asíncrono, iniciada por STP)
Sección titulada «Fase 2 — Activación (asíncrono, iniciada por STP)»Después del registro, STP revisa la cuenta. Cuando aprueba o rechaza, llama:
STP Bank │ │ PUT /stp/v1/account │ { cuenta: "64618001000001237", estado: "A", firma: "..." } │ ▼finalitixspeiapi │ ├─ Verificar firma RSA (solo prod) │ ├─ Si estado = "A" (ACTIVA): │ ├─ account.active = true │ ├─ SQS → Odoo: create_finalitix_partner (res.partner) │ └─ Lambda: notificación de activación exitosa al usuario │ └─ Si estado ≠ "A" (RECHAZADA): ├─ Crear alerta VRSTP (URL: /users/review) ├─ Lambda: ON_BOARDING_RESULT_REJECT (correo al cliente) ├─ Lambda: ON_BOARDING_RESULT_REJECT_PLD (correo a PLD) └─ Lambda PubSub: notificación al portal admin (WebSocket)Modo MOCK
Sección titulada «Modo MOCK»En desarrollo con API_IMPLMENTATION=MOCK:
- Al crear la cuenta en STP, la respuesta simulada devuelve éxito inmediatamente
- La API ejecuta automáticamente el callback
putAccountconestado: 'A' - La cuenta queda activa sin esperar respuesta real de STP
Datos del secreto STP usados
Sección titulada «Datos del secreto STP usados»// De STP_SECRET_NAME en Secrets Manager{ empresaAlias: "FINALITIX", institutionCode: "00000", plazaCode: "821", prefijoCliente: "0000", privateKey: "<PEM en Base64>", passphrase: "...", regPersonaFisicaUrl: "https://{URL_STP}}/...", regPersonaMoralUrl: "https://{URL_STP}}/..."}