Aller au contenu principal

Points de terminaison Giving

Le module Giving gère les dons, les fonds, le traitement des paiements, les abonnements et les opérations financières associées. Il prend en charge plusieurs passerelles de paiement (Stripe, PayPal), gère les dons ponctuels et récurrents, suit les lots de dons, et fournit le traitement des webhooks pour les événements de paiement asynchrones.

Chemin de base : /giving

Donations​

Chemin de base : /giving/donations

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.View ou son propre personIdLister tous les dons. Filtrer par ?batchId= ou ?personId=
GET/:idJWTDonations.ViewObtenir un don par ID
GET/myJWT—Obtenir les dons de l'utilisateur actuel
GET/summaryJWTDonations.ViewSummaryObtenir une synthèse des dons. Filtrer par ?startDate=&endDate=&type=. Utilisez type=person pour une ventilation par personne
GET/testEmailPublic—Envoyer un e-mail de test (développement/débogage)
POST/JWTDonations.EditCréer ou mettre à jour des dons (par lot)
DELETE/:idJWTDonations.EditSupprimer un don

Exemple : lister les dons par lot​

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

Exemple : obtenir une synthèse des dons​

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​

Chemin de base : /giving/donationbatches

Étend GenericCrudController avec les routes CRUD : getById, getAll, post, delete. La suppression retire aussi tous les dons du lot.

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.ViewSummaryLister tous les lots de dons
GET/:idJWTDonations.ViewSummaryObtenir un lot de dons par ID
POST/JWTDonations.EditCréer ou mettre à jour des lots de dons
DELETE/:idJWTDonations.EditSupprimer un lot et tous ses dons

Chemin de base : /giving/donate

Gère le flux de don public, y compris les charges, les abonnements, les webhooks et les calculs de frais. Aucune route CRUD de base n'est activée ; tous les points de terminaison sont personnalisés.

MéthodeCheminAuthPermissionDescription
GET/gateways/:churchIdPublic—Obtenir les passerelles de paiement disponibles pour une église (clés publiques uniquement)
POST/client-tokenJWT—Générer un jeton client pour l'initialisation de la passerelle
POST/create-orderJWT—Créer une commande de paiement (style paiement PayPal)
POST/chargeJWT—Traiter une charge de don ponctuel
POST/subscribeJWT—Créer un abonnement de don récurrent
POST/logPublic—Journaliser un don. Corps : { donation, fundData }
POST/webhook/:providerPublic—Recevoir les événements webhook de paiement (Stripe, PayPal). Nécessite ?churchId=
POST/replay-stripe-eventsJWTDonations.EditRejouer les événements Stripe pour une plage de dates. Corps : { startDate, endDate, dryRun }
POST/feePublic—Calculer les frais de transaction. Corps : { type, provider, gatewayId, amount, currency }. Nécessite ?churchId=
POST/captcha-verifyPublic—Vérifier un jeton reCAPTCHA. Corps : { token }

Exemple : traiter une charge de don​

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

Exemple : créer un abonnement récurrent​

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​

Chemin de base : /giving/funds

Étend GenericCrudController avec les routes CRUD : getById, getAll, post, delete. La permission view est null (aucune permission requise pour consulter les fonds).

MéthodeCheminAuthPermissionDescription
GET/JWT—Lister tous les fonds
GET/:idJWT—Obtenir un fonds par ID
GET/churchId/:churchIdPublic—Obtenir tous les fonds d'une église spécifique (public)
GET/public/:churchId/:fundId/total?startDate=&endDate=Public—Obtenir le total des dons d'un fonds : { fundId, totalAmount, donationCount }. Alimente l'élément campaignProgress du générateur de sites web
POST/JWTDonations.EditCréer ou mettre à jour des fonds
DELETE/:idJWTDonations.EditSupprimer un fonds

Fund Donations​

Chemin de base : /giving/funddonations

Suit la manière dont les dons individuels sont répartis entre les fonds. Aucune route CRUD de base n'est activée ; tous les points de terminaison sont personnalisés.

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.ViewLister les dons par fonds. Filtrer par ?donationId=, ?personId=, ?fundId=, ou ?fundName=. Ajouter éventuellement ?startDate=&endDate= pour filtrer par date
GET/:idJWTDonations.ViewObtenir un don par fonds par ID
GET/myJWT—Obtenir les dons par fonds de l'utilisateur actuel
POST/JWTDonations.EditCréer ou mettre à jour des dons par fonds (par lot)
DELETE/:idJWTDonations.EditSupprimer un don par fonds

Gateways​

Chemin de base : /giving/gateways

Gère les configurations de passerelles de paiement (Stripe, PayPal, etc.). Aucune route CRUD de base n'est activée ; tous les points de terminaison sont personnalisés. Les secrets de passerelle sont chiffrés au repos.

MéthodeCheminAuthPermissionDescription
GET/JWT—Lister toutes les passerelles de l'église
GET/:idJWTSettings.EditObtenir une passerelle par ID
GET/churchId/:churchIdPublic—Obtenir les passerelles d'une église (clés publiques uniquement)
GET/configured/:churchIdPublic—Vérifier si une église a une passerelle de paiement configurée
POST/JWTSettings.EditCréer ou mettre à jour des passerelles (chiffre les clés, provisionne les webhooks et les produits)
PATCH/:idJWTSettings.EditMettre à jour partiellement une passerelle
DELETE/:idJWTSettings.EditSupprimer une passerelle (retire aussi ses webhooks)

Exemple : vérifier la configuration d'une passerelle​

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

Customers​

Chemin de base : /giving/customers

Étend GenericCrudController avec les routes CRUD : getAll, delete. Relie les personnes à leurs enregistrements de client de passerelle de paiement.

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.ViewSummaryLister tous les clients
GET/:idJWTDonations.ViewSummary ou son propre enregistrementObtenir un client par ID
GET/:id/subscriptionsJWTDonations.ViewSummary ou son propre enregistrementObtenir les abonnements de passerelle d'un client
DELETE/:idJWTDonations.EditSupprimer un client

Subscriptions​

Chemin de base : /giving/subscriptions

Gère les abonnements de dons récurrents. Aucune route CRUD de base n'est activée ; tous les points de terminaison sont personnalisés.

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.ViewSummaryLister tous les abonnements
GET/:idJWTDonations.ViewSummaryObtenir un abonnement par ID
POST/JWTDonations.Edit ou son propre abonnementMettre à jour des abonnements auprès de la passerelle de paiement
DELETE/:idJWTDonations.Edit ou son propre abonnementAnnuler un abonnement et le retirer de la base de données. Corps : { provider, reason }

Subscription Funds​

Chemin de base : /giving/subscriptionfunds

Suit les répartitions de fonds pour les abonnements récurrents. Aucune route CRUD de base n'est activée ; tous les points de terminaison sont personnalisés.

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.View ou son propre abonnementLister les fonds d'abonnement. Filtrer par ?subscriptionId=
GET/:idJWTDonations.ViewSummaryObtenir un fonds d'abonnement par ID
DELETE/:idJWTDonations.EditSupprimer un fonds d'abonnement
DELETE/subscription/:idJWTDonations.Edit ou son propre abonnementSupprimer tous les fonds d'un abonnement

Payment Methods​

Chemin de base : /giving/paymentmethods

Gère les moyens de paiement enregistrés (cartes, comptes bancaires) via les API de passerelle de paiement. Aucune route CRUD de base n'est activée ; tous les points de terminaison sont personnalisés.

MéthodeCheminAuthPermissionDescription
GET/personid/:idJWTDonations.View ou son propre personIdObtenir tous les moyens de paiement enregistrés d'une personne (cartes, comptes bancaires)
POST/addcardJWT—Attacher un moyen de paiement par carte. Corps : { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit ou son propre personIdMettre à jour les détails d'une carte. Corps : { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit ou son propre personIdCréer une intention de configuration Stripe ACH pour lier un compte bancaire. Corps : { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPublic—Créer une intention de configuration ACH anonyme pour les dons d'invités. Corps : { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit ou son propre personIdAjouter un compte bancaire via jeton (obsolète ; utiliser ach-setup-intent). Corps : { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit ou son propre personIdMettre à jour les détails d'un compte bancaire. Corps : { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit ou son propre clientVérifier un compte bancaire par micro-dépôts. Corps : { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit ou son propre clientSupprimer un moyen de paiement (carte ou compte bancaire)

Event Log​

Chemin de base : /giving/eventLog

Étend GenericCrudController avec les routes CRUD : getById, getAll, post, delete. Suit les événements webhook de passerelle de paiement pour l'audit et la déduplication.

MéthodeCheminAuthPermissionDescription
GET/JWTDonations.ViewSummaryLister tous les journaux d'événements
GET/:idJWTDonations.ViewSummaryObtenir un journal d'événement par ID
GET/type/:typeJWTDonations.ViewSummaryObtenir les journaux d'événements filtrés par type d'événement
POST/JWTDonations.EditCréer ou mettre à jour des journaux d'événements
DELETE/:idJWTDonations.EditSupprimer un journal d'événement

Pages connexes​