Vai al contenuto principale

Endpoint Giving

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

Percorso base: /giving

Donations

Percorso base: /giving/donations

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

Esempio: elencare le 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: ottenere il riepilogo delle 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
}
]

Donation Batches

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.ViewSummaryOttiene un lotto di donazioni per ID
POST/JWTDonations.EditCrea o aggiorna lotti di donazioni
DELETE/:idJWTDonations.EditElimina un lotto e tutte le sue donazioni

Percorso base: /giving/donate

Gestisce il flusso di donazione rivolto al pubblico, comprese le addebiti, gli abbonamenti, i webhook e i calcoli delle commissioni. Nessuna route CRUD di base è abilitata; tutti gli endpoint sono personalizzati.

MetodoPercorsoAuthPermessoDescrizione
GET/gateways/:churchIdPublicOttiene 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 in stile PayPal)
POST/chargeJWTElabora un addebito per una donazione una tantum
POST/subscribeJWTCrea un abbonamento per una donazione ricorrente
POST/logPublicRegistra una donazione. Corpo: { donation, fundData }
POST/webhook/:providerPublicRiceve gli eventi webhook di pagamento (Stripe, PayPal). Richiede ?churchId=
POST/replay-stripe-eventsJWTDonations.EditRiproduce gli eventi Stripe per un intervallo di date. Corpo: { startDate, endDate, dryRun }
POST/feePublicCalcola le commissioni di transazione. Corpo: { type, provider, gatewayId, amount, currency }. Richiede ?churchId=
POST/captcha-verifyPublicVerifica il token reCAPTCHA. Corpo: { token }

Esempio: elaborare 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: creare 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"
}

Funds

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/:idJWTOttiene un fondo per ID
GET/churchId/:churchIdPublicOttiene tutti i fondi per una chiesa specifica (pubblico)
GET/public/:churchId/:fundId/total?startDate=&endDate=PublicOttiene il totale delle donazioni di un fondo: { fundId, totalAmount, donationCount }. Alimenta l'elemento campaignProgress del website builder
POST/JWTDonations.EditCrea o aggiorna fondi
DELETE/:idJWTDonations.EditElimina un fondo

Fund Donations

Percorso base: /giving/funddonations

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

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewElenca le donazioni per fondo. Filtra con ?donationId=, ?personId=, ?fundId= o ?fundName=. Aggiungi facoltativamente ?startDate=&endDate= per il filtro per data
GET/:idJWTDonations.ViewOttiene una donazione per fondo per ID
GET/myJWTOttiene le donazioni per fondo dell'utente corrente
POST/JWTDonations.EditCrea o aggiorna donazioni per fondo (batch)
DELETE/:idJWTDonations.EditElimina una donazione per fondo

Gateways

Percorso base: /giving/gateways

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

MetodoPercorsoAuthPermessoDescrizione
GET/JWTElenca tutti i gateway della chiesa
GET/:idJWTSettings.EditOttiene un gateway per ID
GET/churchId/:churchIdPublicOttiene i gateway di una chiesa (solo chiavi pubbliche)
GET/configured/:churchIdPublicVerifica se una chiesa ha un gateway di pagamento configurato
POST/JWTSettings.EditCrea o aggiorna gateway (cripta le chiavi, predispone webhook e prodotti)
PATCH/:idJWTSettings.EditAggiorna parzialmente un gateway
DELETE/:idJWTSettings.EditElimina un gateway (rimuove anche i suoi webhook)

Esempio: verificare la configurazione del gateway

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

Customers

Percorso base: /giving/customers

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

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

Subscriptions

Percorso base: /giving/subscriptions

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

MetodoPercorsoAuthPermessoDescrizione
GET/JWTDonations.ViewSummaryElenca tutti gli abbonamenti
GET/:idJWTDonations.ViewSummaryOttiene un abbonamento per ID
POST/JWTDonations.Edit o proprio abbonamentoAggiorna gli abbonamenti presso il gateway di pagamento
DELETE/:idJWTDonations.Edit o proprio abbonamentoAnnulla un abbonamento e lo rimuove dal database. Corpo: { provider, reason }

Subscription Funds

Percorso base: /giving/subscriptionfunds

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

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

Payment Methods

Percorso base: /giving/paymentmethods

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

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

Event Log

Percorso base: /giving/eventLog

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

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

Pagine correlate