template-saas/docs/03-integraciones/INT-001-stripe.md
Adrian Flores Cortes 806612a4db
Some checks are pending
CI / Backend CI (push) Waiting to run
CI / Frontend CI (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / CI Summary (push) Blocked by required conditions
[REESTRUCTURA-DOCS] refactor: Corregir estructura docs/ segun SIMCO-DOCUMENTACION-PROYECTO
- Renombrar 02-integraciones/ → 03-integraciones/ (resolver prefijo duplicado)
- Renombrar 02-devops/ → 04-devops/ (resolver prefijo duplicado)
- Renombrar architecture/ → 97-adr/ (agregar prefijo numerico)
- Actualizar _MAP.md con nueva estructura y version 2.1.0

Estructura final:
- 00-vision-general/
- 01-modulos/
- 02-especificaciones/
- 03-integraciones/
- 04-devops/
- 97-adr/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 20:34:14 -06:00

131 lines
4.1 KiB
Markdown

---
id: "INT-001"
title: "Integracion Stripe Billing"
type: "Integration"
status: "Implemented"
priority: "P0"
provider: "Stripe"
category: "Payments"
multi_tenant: true
version: "1.0.0"
created_date: "2026-01-07"
updated_date: "2026-01-10"
---
# INT-001: Stripe Integration
## Metadata
| Campo | Valor |
|-------|-------|
| Codigo | INT-001 |
| Proveedor | Stripe Inc |
| Tipo | Pagos |
| Estado | Implementado |
| Multi-tenant | Si |
| Fecha integracion | 2026-01-10 |
---
**Documentacion completa:** Ver [SAAS-004-billing.md](../01-modulos/SAAS-004-billing.md)
## Resumen
Integracion con Stripe para pagos y suscripciones.
## Caracteristicas
- Suscripciones recurrentes (monthly/yearly)
- Webhooks para eventos de pago
- Billing portal para clientes
- Metered billing opcional
- Manejo de invoices y payments
## Configuracion
```env
STRIPE_SECRET_KEY=sk_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_PUBLISHABLE_KEY=pk_...
```
## Endpoints/SDK Utilizados
| Operacion | Endpoint/Metodo | Descripcion |
|-----------|-----------------|-------------|
| Crear cliente | `stripe.customers.create()` | Crea customer en Stripe |
| Obtener cliente | `stripe.customers.retrieve()` | Obtiene datos de customer |
| Actualizar cliente | `stripe.customers.update()` | Actualiza datos de customer |
| Crear suscripcion | `stripe.subscriptions.create()` | Inicia nueva suscripcion |
| Cancelar suscripcion | `stripe.subscriptions.cancel()` | Cancela suscripcion activa |
| Pausar suscripcion | `stripe.subscriptions.update()` | Pausa cobros |
| Reanudar suscripcion | `stripe.subscriptions.resume()` | Reanuda suscripcion pausada |
| Crear checkout | `stripe.checkout.sessions.create()` | Crea sesion de checkout |
| Crear portal | `stripe.billingPortal.sessions.create()` | Acceso a portal de billing |
| Crear precio | `stripe.prices.create()` | Crea nuevo precio |
| Listar precios | `stripe.prices.list()` | Lista precios disponibles |
| Crear invoice | `stripe.invoices.create()` | Crea factura manual |
| Obtener invoice | `stripe.invoices.retrieve()` | Obtiene factura |
| Pagar invoice | `stripe.invoices.pay()` | Marca invoice como pagada |
| Crear payment intent | `stripe.paymentIntents.create()` | Inicia intent de pago |
| Confirmar payment | `stripe.paymentIntents.confirm()` | Confirma pago |
| Webhook handler | `stripe.webhooks.constructEvent()` | Valida webhooks |
## Rate Limits
| Limite | Valor | Accion si excede |
|--------|-------|------------------|
| Requests/seg | 100 | Retry con backoff exponencial |
| Requests/dia | Sin limite | N/A |
## Manejo de Errores
| Codigo | Descripcion | Accion |
|--------|-------------|--------|
| 400 | Bad Request | Log + no retry |
| 401 | Unauthorized | Renovar credenciales |
| 429 | Rate Limited | Backoff exponencial |
| 500 | Server Error | Retry con backoff |
## Fallbacks
### Estrategia si Stripe no disponible
| Escenario | Estrategia | Accion |
|-----------|------------|--------|
| API timeout | Reintentar con backoff | 3 reintentos: 1s, 2s, 4s |
| Webhook perdido | Verificacion periodica | Cron cada 5 min verifica estado |
| Pago fallido | Dunning automatico | 3 reintentos en 7 dias |
| Suscripcion cancelada | Periodo de gracia | 7 dias antes de suspender |
### Circuit Breaker
- Umbral apertura: 5 fallos consecutivos
- Timeout semi-abierto: 30 segundos
- Fallback: Cola BullMQ para retry posterior
## Multi-tenant
- Credenciales: Por tenant (cada tenant puede tener su propia cuenta Stripe Connect)
- Configuracion: Por tenant via tenant_config
- Aislamiento: Prefijo tenant_id en todas las operaciones
## Testing
### Sandbox/Test Mode
- Usar claves de prueba en desarrollo (sk_test_*, pk_test_*)
- Tarjetas de prueba: 4242424242424242 (exito), 4000000000000002 (decline)
- Fixtures disponibles para testing unitario
## Monitoreo
| Metrica | Descripcion | Alerta |
|---------|-------------|--------|
| Latencia | Tiempo de respuesta | >2s |
| Errores | Tasa de errores | >1% |
| Disponibilidad | Uptime del servicio | <99.9% |
## Referencias
- [Stripe API Documentation](https://stripe.com/docs/api)
- Modulo relacionado: SAAS-004-billing.md
---
**Ultima actualizacion:** 2026-01-10
**Version:** 1.0.0