Vai al contenuto principale

Endpoint Giving

Il modulo Giving gestisce le donazioni, i fondi, l'elaborazione dei pagamenti, gli abbonamenti e le operazioni finanziarie correlate. Supporta più gateway di pagamento (Stripe, PayPal), gestisce donazioni una tantum e ricorrenti, traccia i lotti di donazioni e fornisce l'elaborazione dei webhook per eventi di pagamento asincroni.

Percorso base: /giving

Donazioni

Percorso base: /giving/donations

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.View o proprio personIdElenca tutte le donazioni. Filtra per ?batchId= o ?personId=
GET/:idJWTDonations.ViewOttieni una donazione per ID
GET/myJWTOttieni le donazioni dell'utente corrente
GET/summaryJWTDonations.ViewSummaryOttieni il riepilogo delle donazioni. Filtra per ?startDate=&endDate=&type=. Usa type=person per il dettaglio per persona
GET/testEmailPubblicoInvia un'email di test (sviluppo/debug)
POST/JWTDonations.EditCrea o aggiorna donazioni (batch)
DELETE/:idJWTDonations.EditElimina una donazione

Esempio: Elenca Donazioni per Lotto

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"
}
]

Esempio: Ottieni Riepilogo Donazioni

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
}
]

Lotti di Donazioni

Percorso base: /giving/donationbatches

Estende GenericCrudController con le route CRUD: getById, getAll, post, delete. L'operazione di eliminazione rimuove anche tutte le donazioni all'interno del lotto.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewSummaryElenca tutti i lotti di donazioni
GET/:idJWTDonations.ViewSummaryOttieni un lotto di donazioni per ID
POST/JWTDonations.EditCrea o aggiorna lotti di donazioni
DELETE/:idJWTDonations.EditElimina un lotto e tutte le sue donazioni

Dona

Percorso base: /giving/donate

Gestisce il flusso di donazione pubblica inclusi addebiti, abbonamenti, webhook e calcolo delle commissioni. Nessuna route CRUD base è abilitata; tutti gli endpoint sono personalizzati.

MetodoPercorsoAuthPermessoDescrizione
GET/gateways/:churchIdPubblicoOttieni i gateway di pagamento disponibili per una chiesa (solo chiavi pubbliche)
POST/client-tokenJWTGenera un token client per l'inizializzazione del gateway
POST/create-orderJWTCrea un ordine di pagamento (checkout stile PayPal)
POST/chargeJWTElabora un addebito di donazione una tantum
POST/subscribeJWTCrea un abbonamento per donazione ricorrente
POST/logPubblicoRegistra una donazione. Body: { donation, fundData }
POST/webhook/:providerPubblicoRicevi eventi webhook di pagamento (Stripe, PayPal). Richiede ?churchId=
POST/replay-stripe-eventsJWTDonations.EditRiproduce gli eventi Stripe per un intervallo di date. Body: { startDate, endDate, dryRun }
POST/feePubblicoCalcola le commissioni di transazione. Body: { type, provider, gatewayId, amount, currency }. Richiede ?churchId=
POST/captcha-verifyPubblicoVerifica il token reCAPTCHA. Body: { token }

Esempio: Elabora un Addebito di Donazione

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"
}

Esempio: Crea un Abbonamento Ricorrente

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"
}

Fondi

Percorso base: /giving/funds

Estende GenericCrudController con le route CRUD: getById, getAll, post, delete. Il permesso view è null (nessun permesso richiesto per visualizzare i fondi).

MetodoPercorsoAuthPermessoDescrizione
GET/JWTElenca tutti i fondi
GET/:idJWTOttieni un fondo per ID
GET/churchId/:churchIdPubblicoOttieni tutti i fondi per una chiesa specifica (pubblico)
POST/JWTDonations.EditCrea o aggiorna fondi
DELETE/:idJWTDonations.EditElimina un fondo

Donazioni ai Fondi

Percorso base: /giving/funddonations

Traccia come le singole donazioni vengono allocate tra i fondi. Nessuna route CRUD base è abilitata; tutti gli endpoint sono personalizzati.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewElenca le donazioni ai fondi. Filtra per ?donationId=, ?personId=, ?fundId=, o ?fundName=. Opzionalmente aggiungi ?startDate=&endDate= per filtrare per date
GET/:idJWTDonations.ViewOttieni una donazione al fondo per ID
GET/myJWTOttieni le donazioni ai fondi dell'utente corrente
POST/JWTDonations.EditCrea o aggiorna donazioni ai fondi (batch)
DELETE/:idJWTDonations.EditElimina una donazione al fondo

Gateway

Percorso base: /giving/gateways

Gestisce le configurazioni dei gateway di pagamento (Stripe, PayPal, ecc.). Nessuna route CRUD base è abilitata; tutti gli endpoint sono personalizzati. I segreti del gateway sono crittografati a riposo.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTElenca tutti i gateway per la chiesa
GET/:idJWTSettings.EditOttieni un gateway per ID
GET/churchId/:churchIdPubblicoOttieni i gateway per una chiesa (solo chiavi pubbliche)
GET/configured/:churchIdPubblicoVerifica se una chiesa ha un gateway di pagamento configurato
POST/JWTSettings.EditCrea o aggiorna gateway (crittografa le chiavi, provisiona webhook e prodotti)
PATCH/:idJWTSettings.EditAggiorna parzialmente un gateway
DELETE/:idJWTSettings.EditElimina un gateway (rimuove anche i suoi webhook)

Esempio: Verifica Configurazione Gateway

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

Clienti

Percorso base: /giving/customers

Estende GenericCrudController con le route CRUD: getAll, delete. Collega le persone ai loro record cliente del gateway di pagamento.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewSummaryElenca tutti i clienti
GET/:idJWTDonations.ViewSummary o proprio recordOttieni un cliente per ID
GET/:id/subscriptionsJWTDonations.ViewSummary o proprio recordOttieni gli abbonamenti del gateway per un cliente
DELETE/:idJWTDonations.EditElimina un cliente

Abbonamenti

Percorso base: /giving/subscriptions

Gestisce gli abbonamenti per donazioni ricorrenti. Nessuna route CRUD base è abilitata; tutti gli endpoint sono personalizzati.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewSummaryElenca tutti gli abbonamenti
GET/:idJWTDonations.ViewSummaryOttieni un abbonamento per ID
POST/JWTDonations.Edit o proprio abbonamentoAggiorna gli abbonamenti con il gateway di pagamento
DELETE/:idJWTDonations.Edit o proprio abbonamentoCancella un abbonamento e rimuovilo dal database. Body: { provider, reason }

Fondi Abbonamento

Percorso base: /giving/subscriptionfunds

Traccia le allocazioni dei fondi per gli abbonamenti ricorrenti. Nessuna route CRUD base è abilitata; tutti gli endpoint sono personalizzati.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.View o proprio abbonamentoElenca i fondi degli abbonamenti. Filtra per ?subscriptionId=
GET/:idJWTDonations.ViewSummaryOttieni un fondo abbonamento per ID
DELETE/:idJWTDonations.EditElimina un fondo abbonamento
DELETE/subscription/:idJWTDonations.Edit o proprio abbonamentoElimina tutti i fondi per un abbonamento

Metodi di Pagamento

Percorso base: /giving/paymentmethods

Gestisce i metodi di pagamento memorizzati (carte, conti bancari) tramite le API del gateway di pagamento. Nessuna route CRUD base è abilitata; tutti gli endpoint sono personalizzati.

MetodoPercorsoAuthPermessoDescrizione
GET/personid/:idJWTDonations.View o proprio personIdOttieni tutti i metodi di pagamento memorizzati per una persona (carte, conti bancari)
POST/addcardJWTAggiungi un metodo di pagamento con carta. Body: { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit o proprio personIdAggiorna i dettagli della carta. Body: { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit o proprio personIdCrea un SetupIntent ACH Stripe per il collegamento del conto bancario. Body: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPubblicoCrea un SetupIntent ACH anonimo per donazioni ospite. Body: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit o proprio personIdAggiungi un conto bancario tramite token (deprecato; usa ach-setup-intent). Body: { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit o proprio personIdAggiorna i dettagli del conto bancario. Body: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit o proprio clienteVerifica un conto bancario con micro-depositi. Body: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit o proprio clienteElimina un metodo di pagamento (carta o conto bancario)

Log Eventi

Percorso base: /giving/eventLog

Estende GenericCrudController con le route CRUD: getById, getAll, post, delete. Traccia gli eventi webhook del gateway di pagamento per audit e deduplicazione.

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewSummaryElenca tutti i log degli eventi
GET/:idJWTDonations.ViewSummaryOttieni un log evento per ID
GET/type/:typeJWTDonations.ViewSummaryOttieni i log degli eventi filtrati per tipo di evento
POST/JWTDonations.EditCrea o aggiorna log degli eventi
DELETE/:idJWTDonations.EditElimina un log evento

Pagine Correlate