payments with stripe

Signed-off-by: Omar Sánchez Pizarro <omar.sanchez@pistacero.net>
This commit is contained in:
Omar Sánchez Pizarro
2026-01-21 02:20:13 +01:00
parent 626e3342d0
commit cc6ffdc5a5
16 changed files with 1441 additions and 44 deletions

View File

@@ -8,6 +8,7 @@ import { initVAPIDKeys } from './services/webPush.js';
import { initWebSocket } from './services/websocket.js';
import { startArticleMonitoring } from './services/articleMonitor.js';
import { initFileWatcher } from './services/fileWatcher.js';
import { initStripe } from './services/stripe.js';
import routes from './routes/index.js';
import workersRouter from './routes/workers.js';
import articlesRouter from './routes/articles.js';
@@ -19,6 +20,7 @@ import pushRouter from './routes/push.js';
import usersRouter from './routes/users.js';
import adminRouter from './routes/admin.js';
import subscriptionRouter from './routes/subscription.js';
import paymentsRouter from './routes/payments.js';
const app = express();
const server = createServer(app);
@@ -28,6 +30,12 @@ app.set('trust proxy', true);
// Middlewares globales
app.use(cors());
// ⚠️ IMPORTANTE: Webhook de Stripe necesita el body RAW (sin parsear)
// Por eso usamos express.raw() SOLO para esta ruta, ANTES de express.json()
app.use('/api/payments/webhook', express.raw({ type: 'application/json' }));
// Ahora sí, parseamos JSON para todas las demás rutas
app.use(express.json());
// Aplicar rate limiting a todas las rutas API
@@ -36,6 +44,9 @@ app.use('/api', rateLimitMiddleware);
// Inicializar VAPID keys para Web Push
initVAPIDKeys();
// Inicializar Stripe
initStripe();
// Inicializar WebSocket
initWebSocket(server);
@@ -51,6 +62,7 @@ app.use('/api/push', pushRouter);
app.use('/api/users', usersRouter);
app.use('/api/admin', adminRouter);
app.use('/api/subscription', subscriptionRouter);
app.use('/api/payments', paymentsRouter);
// Inicializar servidor
async function startServer() {