Zum Hauptinhalt springen

Giving-Endpoints

Das Giving-Modul verwaltet Spenden, Fonds, Zahlungsabwicklung, Abos und zugehörige Finanzoperationen. Es unterstützt mehrere Payment-Gateways (Stripe, PayPal), verarbeitet einmalige und wiederkehrende Spenden, verfolgt Spendenstapel und bietet Webhook-Verarbeitung für asynchrone Zahlungsereignisse.

Basispfad: /giving

Spenden

Basispfad: /giving/donations

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.View oder eigene personIdAlle Spenden auflisten. Filter nach ?batchId= oder ?personId=
GET/:idJWTDonations.ViewSpende nach ID abrufen
GET/myJWTSpenden des aktuellen Benutzers abrufen
GET/summaryJWTDonations.ViewSummarySpendenzusammenfassung abrufen. Filter nach ?startDate=&endDate=&type=. Nutzen Sie type=person für Aufschlüsselung nach Person
GET/testEmailÖffentlichTest-E-Mail senden (Entwicklung/Debugging)
POST/JWTDonations.EditSpenden erstellen oder aktualisieren (Stapel)
DELETE/:idJWTDonations.EditSpende löschen

Beispiel: Spenden nach Stapel auflisten

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

Beispiel: Spendenzusammenfassung abrufen

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

Spendenstapel

Basispfad: /giving/donationbatches

Erweitert GenericCrudController mit CRUD-Routen: getById, getAll, post, delete. Der Delete-Vorgang entfernt auch alle Spenden im Stapel.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Spendenstapel auflisten
GET/:idJWTDonations.ViewSummarySpendenstapel nach ID abrufen
POST/JWTDonations.EditSpendenstapel erstellen oder aktualisieren
DELETE/:idJWTDonations.EditStapel und alle seine Spenden löschen

Spenden

Basispfad: /giving/donate

Verarbeitet den öffentlichen Spendenfluss, einschließlich Gebühren, Abos, Webhooks und Gebührenberechnung. Keine CRUD-Basisrouten sind aktiviert; alle Endpoints sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/gateways/:churchIdÖffentlichVerfügbare Payment-Gateways für eine Kirche (nur öffentliche Schlüssel) abrufen
POST/client-tokenJWTClient-Token für Gateway-Initialisierung generieren
POST/create-orderJWTZahlungsauftrag erstellen (PayPal-ähnliches Checkout)
POST/chargeJWTEinmalige Spendenlast verarbeiten
POST/subscribeJWTWiederkehrend Spendenabo erstellen
POST/logÖffentlichSpende protokollieren. Body: { donation, fundData }
POST/webhook/:providerÖffentlichZahlungswebhook-Ereignisse empfangen (Stripe, PayPal). Erfordert ?churchId=
POST/replay-stripe-eventsJWTDonations.EditStripe-Ereignisse für einen Datumsbereich erneut wiedergeben. Body: { startDate, endDate, dryRun }
POST/feeÖffentlichTransaktionsgebühren berechnen. Body: { type, provider, gatewayId, amount, currency }. Erfordert ?churchId=
POST/captcha-verifyÖffentlichreCAPTCHA-Token verifizieren. Body: { token }

Beispiel: Spendengebühr verarbeiten

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

Beispiel: Wiederkehrend Spendenabo erstellen

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

Fonds

Basispfad: /giving/funds

Erweitert GenericCrudController mit CRUD-Routen: getById, getAll, post, delete. Die view-Berechtigung ist null (keine Berechtigung erforderlich zum Anzeigen von Fonds).

MethodePfadAuthBerechtigungBeschreibung
GET/JWTAlle Fonds auflisten
GET/:idJWTFonds nach ID abrufen
GET/churchId/:churchIdÖffentlichAlle Fonds für eine bestimmte Kirche (öffentlich) abrufen
POST/JWTDonations.EditFonds erstellen oder aktualisieren
DELETE/:idJWTDonations.EditFonds löschen

Fonds-Spenden

Basispfad: /giving/funddonations

Verfolgt, wie einzelne Spenden auf Fonds verteilt werden. Keine CRUD-Basisrouten sind aktiviert; alle Endpoints sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewFonds-Spenden auflisten. Filter nach ?donationId=, ?personId=, ?fundId= oder ?fundName=. Optionally add ?startDate=&endDate= für Datumsfilterung
GET/:idJWTDonations.ViewFonds-Spende nach ID abrufen
GET/myJWTFonds-Spenden des aktuellen Benutzers abrufen
POST/JWTDonations.EditFonds-Spenden erstellen oder aktualisieren (Stapel)
DELETE/:idJWTDonations.EditFonds-Spende löschen

Gateways

Basispfad: /giving/gateways

Verwaltet Payment-Gateway-Konfigurationen (Stripe, PayPal, etc.). Keine CRUD-Basisrouten sind aktiviert; alle Endpoints sind benutzerdefiniert. Gateway-Geheimnisse sind im Ruhezustand verschlüsselt.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTAlle Gateways für die Kirche auflisten
GET/:idJWTSettings.EditGateway nach ID abrufen
GET/churchId/:churchIdÖffentlichGateways für eine Kirche abrufen (nur öffentliche Schlüssel)
GET/configured/:churchIdÖffentlichÜberprüfen, ob eine Kirche ein konfiguriertes Payment-Gateway hat
POST/JWTSettings.EditGateways erstellen oder aktualisieren (verschlüsselt Schlüssel, stellt Webhooks und Produkte bereit)
PATCH/:idJWTSettings.EditGateway teilweise aktualisieren
DELETE/:idJWTSettings.EditGateway löschen (entfernt auch seine Webhooks)

Beispiel: Gateway-Konfiguration überprüfen

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

Kunden

Basispfad: /giving/customers

Erweitert GenericCrudController mit CRUD-Routen: getAll, delete. Verknüpft Personen mit ihren Payment-Gateway-Kundendatensätzen.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Kunden auflisten
GET/:idJWTDonations.ViewSummary oder eigener DatensatzKunde nach ID abrufen
GET/:id/subscriptionsJWTDonations.ViewSummary oder eigener DatensatzGateway-Abos für einen Kunden abrufen
DELETE/:idJWTDonations.EditKunden löschen

Abos

Basispfad: /giving/subscriptions

Verwaltet wiederkehrende Spendenabos. Keine CRUD-Basisrouten sind aktiviert; alle Endpoints sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Abos auflisten
GET/:idJWTDonations.ViewSummaryAbo nach ID abrufen
POST/JWTDonations.Edit oder eigenes AboAbos mit dem Payment-Gateway aktualisieren
DELETE/:idJWTDonations.Edit oder eigenes AboAbo kündigen und aus Datenbank entfernen. Body: { provider, reason }

Abo-Fonds

Basispfad: /giving/subscriptionfunds

Verfolgt Fondsallokationen für wiederkehrende Abos. Keine CRUD-Basisrouten sind aktiviert; alle Endpoints sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.View oder eigenes AboAbo-Fonds auflisten. Filter nach ?subscriptionId=
GET/:idJWTDonations.ViewSummaryAbo-Fonds nach ID abrufen
DELETE/:idJWTDonations.EditAbo-Fonds löschen
DELETE/subscription/:idJWTDonations.Edit oder eigenes AboAlle Fonds für ein Abo löschen

Zahlungsmethoden

Basispfad: /giving/paymentmethods

Verwaltet gespeicherte Zahlungsmethoden (Karten, Bankkonten) über Payment-Gateway-APIs. Keine CRUD-Basisrouten sind aktiviert; alle Endpoints sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/personid/:idJWTDonations.View oder eigene personIdAlle gespeicherten Zahlungsmethoden für eine Person abrufen (Karten, Bankkonten)
POST/addcardJWTKartenzahlungsmethode befestigen. Body: { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit oder eigene personIdKartendetails aktualisieren. Body: { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit oder eigene personIdStripe ACH SetupIntent für Bankkontoverknüpfung erstellen. Body: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonÖffentlichAnonymen ACH SetupIntent für Gastspen den erstellen. Body: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit oder eigene personIdBankkonto via Token hinzufügen (veraltet; nutzen Sie ach-setup-intent). Body: { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit oder eigene personIdBankkontodaten aktualisieren. Body: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit oder eigener KundeBankkonto mit Mikro-Einzahlungen verifizieren. Body: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit oder eigener KundeZahlungsmethode löschen (Karte oder Bankkonto)

Event-Protokoll

Basispfad: /giving/eventLog

Erweitert GenericCrudController mit CRUD-Routen: getById, getAll, post, delete. Verfolgt Payment-Gateway-Webhook-Ereignisse für Audit und Deduplizierung.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Event-Protokolle auflisten
GET/:idJWTDonations.ViewSummaryEvent-Protokoll nach ID abrufen
GET/type/:typeJWTDonations.ViewSummaryEvent-Protokolle nach Ereignistyp filtern
POST/JWTDonations.EditEvent-Protokolle erstellen oder aktualisieren
DELETE/:idJWTDonations.EditEvent-Protokoll löschen

Verwandte Seiten