Zum Hauptinhalt springen

Giving-Endpunkte

Das Giving-Modul verwaltet Spenden, Fonds, Zahlungsabwicklung, Abonnements und verwandte Finanzvorgänge. Es unterstützt mehrere Zahlungs-Gateways (Stripe, PayPal), verarbeitet einmalige und wiederkehrende Spenden, verfolgt Spendenstapel (Batches) und bietet Webhook-Verarbeitung für asynchrone Zahlungsereignisse.

Basispfad: /giving

Spenden (Donations)

Basispfad: /giving/donations

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.View oder eigene personIdAlle Spenden auflisten. Filterbar über ?batchId= oder ?personId=
GET/:idJWTDonations.ViewEine Spende anhand der ID abrufen
GET/myJWTSpenden des aktuellen Benutzers abrufen
GET/summaryJWTDonations.ViewSummarySpendenübersicht abrufen. Filterbar über ?startDate=&endDate=&type=. Mit type=person für eine Aufschlüsselung nach Person
GET/testEmailÖffentlichEine Test-E-Mail senden (Entwicklung/Debugging)
POST/JWTDonations.EditSpenden erstellen oder aktualisieren (Batch)
DELETE/:idJWTDonations.EditEine Spende löschen

Beispiel: Spenden nach Batch 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: Spendenübersicht 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 (Donation Batches)

Basispfad: /giving/donationbatches

Erweitert GenericCrudController um die CRUD-Routen: getById, getAll, post, delete. Der Löschvorgang entfernt außerdem alle Spenden innerhalb des Stapels.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Spendenstapel auflisten
GET/:idJWTDonations.ViewSummaryEinen Spendenstapel anhand der ID abrufen
POST/JWTDonations.EditSpendenstapel erstellen oder aktualisieren
DELETE/:idJWTDonations.EditEinen Stapel und alle seine Spenden löschen

Spenden (Donate)

Basispfad: /giving/donate

Steuert den öffentlich zugänglichen Spendenablauf einschließlich Belastungen, Abonnements, Webhooks und Gebührenberechnungen. Es sind keine Basis-CRUD-Routen aktiviert; alle Endpunkte sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/gateways/:churchIdÖffentlichVerfügbare Zahlungs-Gateways einer Kirche abrufen (nur öffentliche Schlüssel)
POST/client-tokenJWTEin Client-Token zur Gateway-Initialisierung erzeugen
POST/create-orderJWTEine Zahlungsbestellung erstellen (PayPal-artiger Checkout)
POST/chargeJWTEine einmalige Spendenbelastung verarbeiten
POST/subscribeJWTEin wiederkehrendes Spendenabonnement erstellen
POST/logÖffentlichEine Spende protokollieren. Body: { donation, fundData }
POST/webhook/:providerÖffentlichZahlungs-Webhook-Ereignisse empfangen (Stripe, PayPal). Erfordert ?churchId=
POST/replay-stripe-eventsJWTDonations.EditStripe-Ereignisse für einen Datumsbereich erneut abspielen. 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: Eine Spendenbelastung 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: Ein wiederkehrendes Abonnement 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 (Funds)

Basispfad: /giving/funds

Erweitert GenericCrudController um die CRUD-Routen: getById, getAll, post, delete. Die view-Berechtigung ist null (für das Ansehen von Fonds ist keine Berechtigung erforderlich).

MethodePfadAuthBerechtigungBeschreibung
GET/JWTAlle Fonds auflisten
GET/:idJWTEinen Fonds anhand der ID abrufen
GET/churchId/:churchIdÖffentlichAlle Fonds einer bestimmten Kirche abrufen (öffentlich)
GET/public/:churchId/:fundId/total?startDate=&endDate=ÖffentlichDie Spendensumme eines Fonds abrufen: { fundId, totalAmount, donationCount }. Treibt das campaignProgress-Element des Website-Builders an
POST/JWTDonations.EditFonds erstellen oder aktualisieren
DELETE/:idJWTDonations.EditEinen Fonds löschen

Fonds-Spenden (Fund Donations)

Basispfad: /giving/funddonations

Verfolgt, wie einzelne Spenden auf Fonds aufgeteilt werden. Es sind keine Basis-CRUD-Routen aktiviert; alle Endpunkte sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewFonds-Spenden auflisten. Filterbar über ?donationId=, ?personId=, ?fundId= oder ?fundName=. Optional zusätzlich ?startDate=&endDate= für die Datumsfilterung
GET/:idJWTDonations.ViewEine Fonds-Spende anhand der ID abrufen
GET/myJWTFonds-Spenden des aktuellen Benutzers abrufen
POST/JWTDonations.EditFonds-Spenden erstellen oder aktualisieren (Batch)
DELETE/:idJWTDonations.EditEine Fonds-Spende löschen

Gateways

Basispfad: /giving/gateways

Verwaltet Konfigurationen von Zahlungs-Gateways (Stripe, PayPal usw.). Es sind keine Basis-CRUD-Routen aktiviert; alle Endpunkte sind benutzerdefiniert. Gateway-Geheimnisse werden im Ruhezustand verschlüsselt.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTAlle Gateways der Kirche auflisten
GET/:idJWTSettings.EditEin Gateway anhand der ID abrufen
GET/churchId/:churchIdÖffentlichGateways einer Kirche abrufen (nur öffentliche Schlüssel)
GET/configured/:churchIdÖffentlichPrüfen, ob eine Kirche über ein konfiguriertes Zahlungs-Gateway verfügt
POST/JWTSettings.EditGateways erstellen oder aktualisieren (verschlüsselt Schlüssel, richtet Webhooks und Produkte ein)
PATCH/:idJWTSettings.EditEin Gateway teilweise aktualisieren
DELETE/:idJWTSettings.EditEin Gateway löschen (entfernt auch dessen Webhooks)

Beispiel: Gateway-Konfiguration prüfen

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

Kunden (Customers)

Basispfad: /giving/customers

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

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Kunden auflisten
GET/:idJWTDonations.ViewSummary oder eigener DatensatzEinen Kunden anhand der ID abrufen
GET/:id/subscriptionsJWTDonations.ViewSummary oder eigener DatensatzGateway-Abonnements eines Kunden abrufen
DELETE/:idJWTDonations.EditEinen Kunden löschen

Abonnements (Subscriptions)

Basispfad: /giving/subscriptions

Verwaltet wiederkehrende Spendenabonnements. Es sind keine Basis-CRUD-Routen aktiviert; alle Endpunkte sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Abonnements auflisten
GET/:idJWTDonations.ViewSummaryEin Abonnement anhand der ID abrufen
POST/JWTDonations.Edit oder eigenes AbonnementAbonnements beim Zahlungs-Gateway aktualisieren
DELETE/:idJWTDonations.Edit oder eigenes AbonnementEin Abonnement kündigen und aus der Datenbank entfernen. Body: { provider, reason }

Abonnement-Fonds (Subscription Funds)

Basispfad: /giving/subscriptionfunds

Verfolgt Fondszuweisungen für wiederkehrende Abonnements. Es sind keine Basis-CRUD-Routen aktiviert; alle Endpunkte sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.View oder eigenes AbonnementAbonnement-Fonds auflisten. Filterbar über ?subscriptionId=
GET/:idJWTDonations.ViewSummaryEinen Abonnement-Fonds anhand der ID abrufen
DELETE/:idJWTDonations.EditEinen Abonnement-Fonds löschen
DELETE/subscription/:idJWTDonations.Edit oder eigenes AbonnementAlle Fonds eines Abonnements löschen

Zahlungsmethoden (Payment Methods)

Basispfad: /giving/paymentmethods

Verwaltet gespeicherte Zahlungsmethoden (Karten, Bankkonten) über die APIs der Zahlungs-Gateways. Es sind keine Basis-CRUD-Routen aktiviert; alle Endpunkte sind benutzerdefiniert.

MethodePfadAuthBerechtigungBeschreibung
GET/personid/:idJWTDonations.View oder eigene personIdAlle gespeicherten Zahlungsmethoden einer Person abrufen (Karten, Bankkonten)
POST/addcardJWTEine Karten-Zahlungsmethode hinzufügen. 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 personIdEine Stripe-ACH-SetupIntent für die Verknüpfung eines Bankkontos erstellen. Body: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonÖffentlichEine anonyme ACH-SetupIntent für Gastspenden erstellen. Body: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit oder eigene personIdEin Bankkonto per Token hinzufügen (veraltet; verwenden Sie ach-setup-intent). Body: { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit oder eigene personIdBankkontodetails aktualisieren. Body: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit oder eigener KundeEin Bankkonto per Mikroeinzahlungen verifizieren. Body: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit oder eigener KundeEine Zahlungsmethode löschen (Karte oder Bankkonto)

Ereignisprotokoll (Event Log)

Basispfad: /giving/eventLog

Erweitert GenericCrudController um die CRUD-Routen: getById, getAll, post, delete. Verfolgt Webhook-Ereignisse der Zahlungs-Gateways für Auditing und Deduplizierung.

MethodePfadAuthBerechtigungBeschreibung
GET/JWTDonations.ViewSummaryAlle Ereignisprotokolle auflisten
GET/:idJWTDonations.ViewSummaryEin Ereignisprotokoll anhand der ID abrufen
GET/type/:typeJWTDonations.ViewSummaryEreignisprotokolle nach Ereignistyp gefiltert abrufen
POST/JWTDonations.EditEreignisprotokolle erstellen oder aktualisieren
DELETE/:idJWTDonations.EditEin Ereignisprotokoll löschen

Verwandte Seiten