Saltar al contenido principal

Puntos de Conexión de Giving

El módulo Giving gestiona donaciones, fondos, procesamiento de pagos, suscripciones y operaciones financieras relacionadas. Admite múltiples pasarelas de pago (Stripe, PayPal), gestiona donaciones de una sola vez y recurrentes, rastrea lotes de donaciones y proporciona procesamiento de webhooks para eventos de pago asincronos.

Ruta base: /giving

Donaciones

Ruta base: /giving/donations

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.Ver o personId propioListar todas las donaciones. Filtrar por ?batchId= o ?personId=
GET/:idJWTDonaciones.VerObtener una donación por ID
GET/myJWTObtener las donaciones del usuario actual
GET/summaryJWTDonaciones.VerResumenObtener resumen de donaciones. Filtrar por ?startDate=&endDate=&type=. Usar type=person para desglose por persona
GET/testEmailPúblicoEnviar un correo de prueba (desarrollo/depuración)
POST/JWTDonaciones.EditarCrear o actualizar donaciones (lote)
DELETE/:idJWTDonaciones.EditarEliminar una donación

Ejemplo: Listar Donaciones por Lote

GET /giving/donations?batchId=abc-123
Authorization: Bearer <token>
[
{
"id": "don-456",
"batchId": "abc-123",
"personId": "per-789",
"donationDate": "2025-03-15T00:00:00.000Z",
"amount": 100.00,
"method": "card"
}
]

Ejemplo: Obtener Resumen de Donaciones

GET /giving/donations/summary?startDate=2025-01-01&endDate=2025-12-31
Authorization: Bearer <token>
[
{
"week": "2025-01-06",
"fund": "General Fund",
"totalAmount": 2500.00,
"count": 15
}
]

Lotes de Donaciones

Ruta base: /giving/donationbatches

Extiende GenericCrudController con rutas CRUD: getById, getAll, post, delete. La operación de eliminación también elimina todas las donaciones dentro del lote.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.VerResumenListar todos los lotes de donaciones
GET/:idJWTDonaciones.VerResumenObtener un lote de donaciones por ID
POST/JWTDonaciones.EditarCrear o actualizar lotes de donaciones
DELETE/:idJWTDonaciones.EditarEliminar un lote y todas sus donaciones

Donativos

Ruta base: /giving/donate

Gestiona el flujo de donación de cara al público incluyendo cargos, suscripciones, webhooks y cálculos de honorarios. No se habilitan rutas CRUD base; todos los puntos de conexión son personalizados.

MétodoRutaAutenticaciónPermisoDescripción
GET/gateways/:churchIdPúblicoObtener pasarelas de pago disponibles para una iglesia (solo claves públicas)
POST/client-tokenJWTGenerar un token de cliente para inicialización de pasarela
POST/create-orderJWTCrear una orden de pago (estilo de compra PayPal)
POST/chargeJWTProcesar un cargo de donación de una sola vez
POST/subscribeJWTCrear una suscripción de donación recurrente
POST/logPúblicoRegistrar una donación. Cuerpo: { donation, fundData }
POST/webhook/:providerPúblicoRecibir eventos webhook de pago (Stripe, PayPal). Requiere ?churchId=
POST/replay-stripe-eventsJWTDonaciones.EditarReproducir eventos de Stripe para un rango de fechas. Cuerpo: { startDate, endDate, dryRun }
POST/feePúblicoCalcular honorarios de transacción. Cuerpo: { type, provider, gatewayId, amount, currency }. Requiere ?churchId=
POST/captcha-verifyPúblicoVerificar token de reCAPTCHA. Cuerpo: { token }

Ejemplo: Procesar un Cargo de Donación

POST /giving/donate/charge
Authorization: Bearer <token>

{
"provider": "stripe",
"amount": 50.00,
"currency": "usd",
"person": { "id": "per-123", "email": "donor@example.com" },
"funds": [{ "id": "fund-001", "name": "General Fund", "amount": 50.00 }],
"church": { "name": "First Church", "subDomain": "firstchurch" }
}
{
"id": "ch_abc123",
"status": "succeeded",
"provider": "stripe"
}

Ejemplo: Crear una Suscripción Recurrente

POST /giving/donate/subscribe
Authorization: Bearer <token>

{
"provider": "stripe",
"amount": 100.00,
"customerId": "cus_abc123",
"interval": { "interval_count": 1, "interval": "month" },
"billing_cycle_anchor": 1710460800,
"person": { "id": "per-123", "email": "donor@example.com" },
"funds": [{ "id": "fund-001", "name": "General Fund", "amount": 100.00 }],
"church": { "name": "First Church", "subDomain": "firstchurch" }
}
{
"id": "sub_xyz789",
"status": "active",
"provider": "stripe"
}

Fondos

Ruta base: /giving/funds

Extiende GenericCrudController con rutas CRUD: getById, getAll, post, delete. El permiso view es null (no se requiere permiso para ver fondos).

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTListar todos los fondos
GET/:idJWTObtener un fondo por ID
GET/churchId/:churchIdPúblicoObtener todos los fondos para una iglesia específica (público)
POST/JWTDonaciones.EditarCrear o actualizar fondos
DELETE/:idJWTDonaciones.EditarEliminar un fondo

Donaciones de Fondos

Ruta base: /giving/funddonations

Rastrea cómo las donaciones individuales se asignan entre fondos. No se habilitan rutas CRUD base; todos los puntos de conexión son personalizados.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.VerListar donaciones de fondos. Filtrar por ?donationId=, ?personId=, ?fundId= o ?fundName=. Opcionalmente agregue ?startDate=&endDate= para filtrado de fecha
GET/:idJWTDonaciones.VerObtener una donación de fondo por ID
GET/myJWTObtener las donaciones de fondos del usuario actual
POST/JWTDonaciones.EditarCrear o actualizar donaciones de fondos (lote)
DELETE/:idJWTDonaciones.EditarEliminar una donación de fondo

Pasarelas

Ruta base: /giving/gateways

Gestiona configuraciones de pasarela de pago (Stripe, PayPal, etc.). No se habilitan rutas CRUD base; todos los puntos de conexión son personalizados. Los secretos de pasarela se cifran en reposo.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTListar todas las pasarelas para la iglesia
GET/:idJWTConfiguración.EditarObtener una pasarela por ID
GET/churchId/:churchIdPúblicoObtener pasarelas para una iglesia (solo claves públicas)
GET/configured/:churchIdPúblicoVerificar si una iglesia tiene una pasarela de pago configurada
POST/JWTConfiguración.EditarCrear o actualizar pasarelas (cifra claves, proporciona webhooks y productos)
PATCH/:idJWTConfiguración.EditarActualizar parcialmente una pasarela
DELETE/:idJWTConfiguración.EditarEliminar una pasarela (también elimina sus webhooks)

Ejemplo: Verificar Configuración de Pasarela

GET /giving/gateways/configured/church-123
{
"configured": true
}

Clientes

Ruta base: /giving/customers

Extiende GenericCrudController con rutas CRUD: getAll, delete. Vincula personas a sus registros de cliente de pasarela de pago.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.VerResumenListar todos los clientes
GET/:idJWTDonaciones.VerResumen o registro propioObtener un cliente por ID
GET/:id/subscriptionsJWTDonaciones.VerResumen o registro propioObtener suscripciones de pasarela para un cliente
DELETE/:idJWTDonaciones.EditarEliminar un cliente

Suscripciones

Ruta base: /giving/subscriptions

Gestiona suscripciones de donaciones recurrentes. No se habilitan rutas CRUD base; todos los puntos de conexión son personalizados.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.VerResumenListar todas las suscripciones
GET/:idJWTDonaciones.VerResumenObtener una suscripción por ID
POST/JWTDonaciones.Editar o suscripción propiaActualizar suscripciones con la pasarela de pago
DELETE/:idJWTDonaciones.Editar o suscripción propiaCancelar una suscripción y eliminarla de la base de datos. Cuerpo: { provider, reason }

Fondos de Suscripción

Ruta base: /giving/subscriptionfunds

Rastrea asignaciones de fondos para suscripciones recurrentes. No se habilitan rutas CRUD base; todos los puntos de conexión son personalizados.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.Ver o suscripción propiaListar fondos de suscripción. Filtrar por ?subscriptionId=
GET/:idJWTDonaciones.VerResumenObtener un fondo de suscripción por ID
DELETE/:idJWTDonaciones.EditarEliminar un fondo de suscripción
DELETE/subscription/:idJWTDonaciones.Editar o suscripción propiaEliminar todos los fondos para una suscripción

Métodos de Pago

Ruta base: /giving/paymentmethods

Gestiona métodos de pago almacenados (tarjetas, cuentas bancarias) a través de API de pasarelas de pago. No se habilitan rutas CRUD base; todos los puntos de conexión son personalizados.

MétodoRutaAutenticaciónPermisoDescripción
GET/personid/:idJWTDonaciones.Ver o personId propioObtener todos los métodos de pago almacenados para una persona (tarjetas, cuentas bancarias)
POST/addcardJWTAdjuntar un método de pago de tarjeta. Cuerpo: { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonaciones.Editar o personId propioActualizar detalles de tarjeta. Cuerpo: { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonaciones.Editar o personId propioCrear una Intención de Configuración ACH de Stripe para vincular cuentas bancarias. Cuerpo: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPúblicoCrear una Intención de Configuración ACH anónima para donaciones de invitados. Cuerpo: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonaciones.Editar o personId propioAgregar una cuenta bancaria a través de token (obsoleto; usar ach-setup-intent). Cuerpo: { id, personId, customerId, email, name }
POST/updatebankJWTDonaciones.Editar o personId propioActualizar detalles de cuenta bancaria. Cuerpo: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonaciones.Editar o cliente propioVerificar una cuenta bancaria con micro-depósitos. Cuerpo: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonaciones.Editar o cliente propioEliminar un método de pago (tarjeta o cuenta bancaria)

Registro de Eventos

Ruta base: /giving/eventLog

Extiende GenericCrudController con rutas CRUD: getById, getAll, post, delete. Rastrea eventos webhook de pasarela de pago para auditoría y deduplicación.

MétodoRutaAutenticaciónPermisoDescripción
GET/JWTDonaciones.VerResumenListar todos los registros de eventos
GET/:idJWTDonaciones.VerResumenObtener un registro de eventos por ID
GET/type/:typeJWTDonaciones.VerResumenObtener registros de eventos filtrados por tipo de evento
POST/JWTDonaciones.EditarCrear o actualizar registros de eventos
DELETE/:idJWTDonaciones.EditarEliminar un registro de eventos

Páginas Relacionadas