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/myJWTDonaties van huidige gebruiker ophalen
GET/summaryJWTDonations.ViewSummarySamenvatting donaties ophalen. Filteren op ?startDate=&endDate=&type=. Gebruik type=person voor verdeling per persoon
GET/testEmailPublicTest-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/:churchIdPublicBeschikbare betalingsgateways voor een kerk ophalen (alleen publieke sleutels)
POST/client-tokenJWTEen clienttoken voor gateway-initialisatie genereren
POST/create-orderJWTEen betalingsopdracht maken (PayPal-stijl checkout)
POST/chargeJWTEen eenmalige donatiekost verwerken
POST/subscribeJWTEen terugkerende donatie-abonnement maken
POST/logPublicEen donatie registreren. Body: { donation, fundData }
POST/webhook/:providerPublicBetalingswebhook-gebeurtenissen ontvangen (Stripe, PayPal). Vereist ?churchId=
POST/replay-stripe-eventsJWTDonations.EditStripe-gebeurtenissen voor een datumbereik opnieuw afspelen. Body: { startDate, endDate, dryRun }
POST/feePublicTransactiekosten berekenen. Body: { type, provider, gatewayId, amount, currency }. Vereist ?churchId=
POST/captcha-verifyPublicreCAPTCHA-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/JWTAlle fondsen weergeven
GET/:idJWTEen fonds op ID ophalen
GET/churchId/:churchIdPublicAlle 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/myJWTFondstransacties 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/JWTAlle gateways voor de kerk weergeven
GET/:idJWTSettings.EditEen gateway op ID ophalen
GET/churchId/:churchIdPublicGateways voor een kerk ophalen (alleen publieke sleutels)
GET/configured/:churchIdPublicControleren 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/addcardJWTEen 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-anonPublicEen 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