michangarrito/docs/02-integraciones/INT-006-codi-banxico.md
rckrdmrd 928eb795e6 [SIMCO-V38] feat: Actualizar a SIMCO v3.8.0 + cambios apps
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Cambios en backend y frontend

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:05 -06:00

151 lines
6.3 KiB
Markdown

---
id: INT-006
type: Integration
title: "Pagos CoDi/SPEI"
provider: "Banxico/STP"
status: Mock
integration_type: "Pagos QR instantáneos"
created_at: 2026-01-10
updated_at: 2026-01-10
simco_version: "3.8.0"
tags:
- pagos
- codi
- spei
- qr
- banxico
- transferencias
---
# INT-006: Pagos CoDi/SPEI
## Metadata
| Campo | Valor |
|-------|-------|
| **Codigo** | INT-006 |
| **Proveedor** | Banxico/STP |
| **Tipo** | Pagos QR instantáneos |
| **Estado** | Mock (en desarrollo) |
| **Multi-tenant** | Si |
| **Fecha planeada** | 2026-Q1 |
| **Owner** | Backend Team |
---
## 1. Descripcion
Integración con el sistema de Cobro Digital (CoDi) de Banxico y transferencias SPEI a través de STP (Sistema de Transferencias y Pagos). Permite a los changarros recibir pagos instantáneos mediante códigos QR, sin comisiones por transacción. CoDi opera sobre la infraestructura de SPEI, garantizando transferencias en tiempo real 24/7.
**Casos de uso principales:**
- Generación de códigos QR para cobro instantáneo
- Recepción de pagos SPEI sin comisión
- Notificación en tiempo real de pagos recibidos
- Conciliación automática de transacciones
- Generación de comprobantes electrónicos de pago
---
## 2. Credenciales Requeridas
### Variables de Entorno
| Variable | Descripcion | Tipo | Obligatorio |
|----------|-------------|------|-------------|
| STP_EMPRESA | Identificador de empresa en STP | string | SI |
| STP_CLAVE_PRIVADA | Llave privada para firmar mensajes | string | SI |
| STP_CERTIFICADO | Certificado digital .cer | string | SI |
| STP_CUENTA_CLABE | CLABE de la cuenta receptora | string | SI |
| STP_WEBHOOK_URL | URL para recibir notificaciones | string | SI |
| CODI_MERCHANT_ID | ID de comercio registrado en CoDi | string | SI |
| CODI_API_KEY | Llave de API de CoDi | string | SI |
### Ejemplo de .env
```env
# Pagos CoDi/SPEI
STP_EMPRESA=MICHANGARRITO
STP_CLAVE_PRIVADA=/path/to/private_key.pem
STP_CERTIFICADO=/path/to/certificate.cer
STP_CUENTA_CLABE=646180157000000001
STP_WEBHOOK_URL=https://api.michangarrito.mx/webhooks/stp
CODI_MERCHANT_ID=codi_mer_xxxxxxxx
CODI_API_KEY=codi_key_xxxxxxxx
```
---
## 3. Arquitectura
```
┌─────────────────────────────────────────────────────────────────┐
│ MiChangarrito │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Frontend │───▶│ API Server │───▶│ CoDiService │ │
│ │ (POS/App) │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └────────┬─────────┘ │
└────────────────────────────────────────────────────┼────────────┘
┌─────────────────────────┼─────────────┐
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ STP Gateway │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ Banxico SPEI / CoDi │ │
│ │ (Red Interbancaria MX) │ │
│ └──────────────────────────────┘ │
│ Sistema Financiero │
└───────────────────────────────────────┘
```
### Flujo de Pago CoDi
1. Comercio genera solicitud de cobro con monto
2. Sistema genera código QR con datos CoDi
3. Cliente escanea QR con app bancaria
4. Banco del cliente procesa transferencia SPEI
5. STP notifica la recepción del pago
6. Sistema actualiza estado de la venta en tiempo real
---
## 4. Endpoints
### Endpoints Consumidos (STP/CoDi API)
| Método | Endpoint | Descripción |
|--------|----------|-------------|
| POST | `/v1/codi/cobros` | Generar solicitud de cobro CoDi |
| GET | `/v1/codi/cobros/{id}` | Consultar estado de cobro |
| POST | `/v1/spei/ordenPago` | Registrar orden de pago SPEI |
| GET | `/v1/spei/consultaOrden/{id}` | Consultar orden SPEI |
| GET | `/v1/cuentas/{clabe}/movimientos` | Consultar movimientos |
### Endpoints Expuestos (MiChangarrito)
| Método | Endpoint | Descripción |
|--------|----------|-------------|
| POST | `/api/v1/payments/codi/generate` | Generar QR de cobro |
| GET | `/api/v1/payments/codi/{id}/status` | Consultar estado |
| GET | `/api/v1/payments/codi/{id}/qr` | Obtener imagen QR |
| POST | `/api/v1/webhooks/stp` | Recibir notificaciones STP |
| GET | `/api/v1/payments/spei/movements` | Listar movimientos |
---
## 5. Notas de Implementacion
- CoDi no cobra comisiones por transacción (beneficio vs tarjetas)
- Las transferencias SPEI son irreversibles una vez confirmadas
- Implementar timeout de 5 minutos para códigos QR
- Validar firma digital en todas las notificaciones de STP
- El registro como participante CoDi requiere trámite con Banxico
- Generar referencia única por transacción para conciliación
- Los QR deben cumplir con el estándar EMVCo para CoDi
- Horario de operación SPEI: 24/7, pero cortes contables a las 17:30
- Considerar implementar caché de CLABEs validadas
- Manejar reintentos en caso de falla de comunicación con STP