Naar hoofdinhoud gaan

Giving Endpoints

De Giving module beheert donaties, fondsen, betalingsverwerking, abonnementen en gerelateerde financiële bewerkingen. Het ondersteunt meerdere betalingsgateways (Stripe, PayPal), verwerkt eenmalige en terugkerende donaties, volgt donatiebatches bij en biedt webhook-verwerking voor asynchrone betalingsgebeurtenissen.

Base path: /giving

Donaties​

Base path: /giving/donations

MethodPathAuthPermissionDescription
GET/JWTDonations.View of eigen personIdAlle donaties weergeven. Filteren op ?batchId= of ?personId=
GET/:idJWTDonations.ViewEen donatie op ID ophalen
GET/myJWT—Donaties van huidige gebruiker ophalen
GET/summaryJWTDonations.ViewSummarySamenvatting donaties ophalen. Filteren op ?startDate=&endDate=&type=. Gebruik type=person voor verdeling per persoon
GET/testEmailPublic—Test-e-mail verzenden (ontwikkelings-/debugdoeleinden)
POST/JWTDonations.EditDonaties maken of bijwerken (batch)
DELETE/:idJWTDonations.EditEen donatie verwijderen

Voorbeeld: Donaties per Batch Weergeven​

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

Voorbeeld: Donatiessamenvatting Ophalen​

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

Donatiebatches​

Base path: /giving/donationbatches

Breidt GenericCrudController uit met CRUD-routes: getById, getAll, post, delete. De delete-bewerking verwijdert ook alle donaties in de batch.

MethodPathAuthPermissionDescription
GET/JWTDonations.ViewSummaryAlle donatiebatches weergeven
GET/:idJWTDonations.ViewSummaryEen donatiebatch op ID ophalen
POST/JWTDonations.EditDonatiebatches maken of bijwerken
DELETE/:idJWTDonations.EditEen batch en alle donaties ervan verwijderen

Donatie​

Base path: /giving/donate

Verwerkt de openbare donatieflow inclusief kosten, abonnementen, webhooks en kostprijsberekeningen. Geen CRUD-routes; alle endpoints zijn aangepast.

MethodPathAuthPermissionDescription
GET/gateways/:churchIdPublic—Beschikbare betalingsgateways voor een kerk ophalen (alleen publieke sleutels)
POST/client-tokenJWT—Een clienttoken voor gateway-initialisatie genereren
POST/create-orderJWT—Een betalingsopdracht maken (PayPal-stijl checkout)
POST/chargeJWT—Een eenmalige donatiekost verwerken
POST/subscribeJWT—Een terugkerende donatie-abonnement maken
POST/logPublic—Een donatie registreren. Body: { donation, fundData }
POST/webhook/:providerPublic—Betalingswebhook-gebeurtenissen ontvangen (Stripe, PayPal). Vereist ?churchId=
POST/replay-stripe-eventsJWTDonations.EditStripe-gebeurtenissen voor een datumbereik opnieuw afspelen. Body: { startDate, endDate, dryRun }
POST/feePublic—Transactiekosten berekenen. Body: { type, provider, gatewayId, amount, currency }. Vereist ?churchId=
POST/captcha-verifyPublic—reCAPTCHA-token verifiëren. Body: { token }

Voorbeeld: Een Donatiekost Verwerken​

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

Voorbeeld: Een Terugkerend Abonnement Maken​

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

Fondsen​

Base path: /giving/funds

Breidt GenericCrudController uit met CRUD-routes: getById, getAll, post, delete. De view-machtiging is null (geen machtiging vereist voor het weergeven van fondsen).

MethodPathAuthPermissionDescription
GET/JWT—Alle fondsen weergeven
GET/:idJWT—Een fonds op ID ophalen
GET/churchId/:churchIdPublic—Alle fondsen voor een specifieke kerk ophalen (openbaar)
POST/JWTDonations.EditFondsen maken of bijwerken
DELETE/:idJWTDonations.EditEen fonds verwijderen

Fondstransacties​

Base path: /giving/funddonations

Volgt bij hoe individuele donaties over fondsen worden verdeeld. Geen CRUD-routes; alle endpoints zijn aangepast.

MethodPathAuthPermissionDescription
GET/JWTDonations.ViewFondstransacties weergeven. Filteren op ?donationId=, ?personId=, ?fundId=, of ?fundName=. Optioneel ?startDate=&endDate= voor datuumfiltering
GET/:idJWTDonations.ViewEen fondstransactie op ID ophalen
GET/myJWT—Fondstransacties van huidige gebruiker ophalen
POST/JWTDonations.EditFondstransacties maken of bijwerken (batch)
DELETE/:idJWTDonations.EditEen fondstransactie verwijderen

Gateways​

Base path: /giving/gateways

Beheert betalingsgatewayconfiguraties (Stripe, PayPal, enz.). Geen CRUD-routes; alle endpoints zijn aangepast. Gateway-geheimen worden in rust versleuteld.

MethodPathAuthPermissionDescription
GET/JWT—Alle gateways voor de kerk weergeven
GET/:idJWTSettings.EditEen gateway op ID ophalen
GET/churchId/:churchIdPublic—Gateways voor een kerk ophalen (alleen publieke sleutels)
GET/configured/:churchIdPublic—Controleren of een kerk een geconfigureerde betalingsgateway heeft
POST/JWTSettings.EditGateways maken of bijwerken (versleutelt sleutels, richt webhooks en producten in)
PATCH/:idJWTSettings.EditEen gateway gedeeltelijk bijwerken
DELETE/:idJWTSettings.EditEen gateway verwijderen (verwijdert ook bijbehorende webhooks)

Voorbeeld: Gateway-Configuratie Controleren​

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

Klanten​

Base path: /giving/customers

Breidt GenericCrudController uit met CRUD-routes: getAll, delete. Koppelt personen aan hun betalingsgateway-klantrecords.

MethodPathAuthPermissionDescription
GET/JWTDonations.ViewSummaryAlle klanten weergeven
GET/:idJWTDonations.ViewSummary of eigen recordEen klant op ID ophalen
GET/:id/subscriptionsJWTDonations.ViewSummary of eigen recordGateway-abonnementen voor een klant ophalen
DELETE/:idJWTDonations.EditEen klant verwijderen

Abonnementen​

Base path: /giving/subscriptions

Beheert terugkerende donatie-abonnementen. Geen CRUD-routes; alle endpoints zijn aangepast.

MethodPathAuthPermissionDescription
GET/JWTDonations.ViewSummaryAlle abonnementen weergeven
GET/:idJWTDonations.ViewSummaryEen abonnement op ID ophalen
POST/JWTDonations.Edit of eigen abonnementAbonnementen met de betalingsgateway bijwerken
DELETE/:idJWTDonations.Edit of eigen abonnementEen abonnement annuleren en uit database verwijderen. Body: { provider, reason }

Abonnementsfondsen​

Base path: /giving/subscriptionfunds

Volgt fondstoewijzingen voor terugkerende abonnementen bij. Geen CRUD-routes; alle endpoints zijn aangepast.

MethodPathAuthPermissionDescription
GET/JWTDonations.View of eigen abonnementAbonnementsfondsen weergeven. Filteren op ?subscriptionId=
GET/:idJWTDonations.ViewSummaryEen abonnementsfonds op ID ophalen
DELETE/:idJWTDonations.EditEen abonnementsfonds verwijderen
DELETE/subscription/:idJWTDonations.Edit of eigen abonnementAlle fondsen voor een abonnement verwijderen

Betaalmethoden​

Base path: /giving/paymentmethods

Beheert opgeslagen betaalmethoden (kaarten, bankrekeningen) via betalingsgateway-API's. Geen CRUD-routes; alle endpoints zijn aangepast.

MethodPathAuthPermissionDescription
GET/personid/:idJWTDonations.View of eigen personIdAlle opgeslagen betaalmethoden voor een persoon ophalen (kaarten, bankrekeningen)
POST/addcardJWT—Een kaartbetaalmethode toevoegen. Body: { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit of eigen personIdKaartgegevens bijwerken. Body: { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit of eigen personIdEen Stripe ACH SetupIntent voor bankrekeningkoppeling maken. Body: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPublic—Een anonieme ACH SetupIntent voor gastdonaties maken. Body: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit of eigen personIdEen bankrekening via token toevoegen (verouderd; gebruik ach-setup-intent). Body: { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit of eigen personIdBankrekeninggegevens bijwerken. Body: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit of eigen klantEen bankrekening verifiëren met micro-deposits. Body: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit of eigen klantEen betaalmethode verwijderen (kaart of bankrekening)

Gebeurtenissenlogboek​

Base path: /giving/eventLog

Breidt GenericCrudController uit met CRUD-routes: getById, getAll, post, delete. Volgt betalingsgateway-webhookgebeurtenissen voor auditing en deduplicatie bij.

MethodPathAuthPermissionDescription
GET/JWTDonations.ViewSummaryAlle logboekitems weergeven
GET/:idJWTDonations.ViewSummaryEen logboekitem op ID ophalen
GET/type/:typeJWTDonations.ViewSummaryLogboekitems gefilterd op gebeurtenistype
POST/JWTDonations.EditLogboekitems maken of bijwerken
DELETE/:idJWTDonations.EditEen logboekitem verwijderen

Gerelateerde Pagina's​