Skip to content

Introducción

Kaizen Payments es una librería NestJS para cobrar con distintas pasarelas de pago detrás de un contrato único. La instalas en tu API como una dependencia y la usas como una caja negra: no clonas su código ni la levantas aparte, solo la consumes.

Tú te quedas con tu lógica de negocio (pedidos, usuarios…); ella habla con cada pasarela, verifica los webhooks y guarda el estado de cada pago en su propio espacio de la BD.

Qué te aporta

  • Una sola forma de cobrar, independiente de la pasarela. Hoy soporta Stripe, Redsys y PayPal.
  • No gestionas su base de datos — ver Configuración.
  • No gestionas la seguridad de los webhooks — ver Webhooks y eventos.
  • Reaccionas con tus propios eventos de dominio.

La superficie que expone en tu API

Al registrar el módulo, tu app gana dos rutas HTTP:

MétodoRutaQuién la llama
POST/payments/chargeLa llamas tú para iniciar un cobro.
POST/webhooks/:gatewayLa llama la pasarela para notificarte.

La pasarela no es un endpoint, es un dato

Para cobrar siempre llamas al mismo endpoint, POST /payments/charge. La pasarela va como un campo del cuerpo (gateway: "stripe" | "redsys" | "paypal"), no en la URL: se lo pasas al servicio junto con el importe y él enruta al gateway correcto.

El flujo de un pago

  1. Cobras. POST /payments/charge con { gateway, amount, currency, reference, redirect }. La respuesta te dice cómo llevar al usuario a pagar (según la pasarela).
  2. La pasarela notifica. Cuando el pago se resuelve, llama a POST /webhooks/:gateway (esa URL se la das tú a la pasarela al configurarla). La librería verifica la firma y casa la notificación con el pago.
  3. Reaccionas. Escuchas payment.captured / payment.failed con tu propio listener y haces lo tuyo: marcar el pedido como pagado, enviar un email…

Requisitos

  • NestJS 11+ y TypeORM 0.3+ (van como peerDependencies, deben ser los de tu app).
  • PostgreSQL (aporta tú el driver, p. ej. pg).
  • autoLoadEntities: true y rawBody: true — ver Configuración.

Sigue con la Instalación.