Aller au contenu principal

Points de terminaison Giving

Le module Giving gère les donations, les fonds, le traitement des paiements, les abonnements et les opérations financières connexes. Il supporte plusieurs passerelles de paiement (Stripe, PayPal), gère les donations ponctuelles et récurrentes, suit les lots de donations et fournit le traitement des webhooks pour les événements de paiement asynchrones.

Chemin de base : /giving

Donations

Chemin de base : /giving/donations

MéthodeCheminAuthentificationPermissionDescription
GET/JWTDonations.View ou personId personnelLister toutes les donations. Filtrer par ?batchId= ou ?personId=
GET/:idJWTDonations.ViewObtenir une donation par ID
GET/myJWTObtenir les donations de l'utilisateur actuel
GET/summaryJWTDonations.ViewSummaryObtenir le résumé des donations. Filtrer par ?startDate=&endDate=&type=. Utiliser type=person pour la répartition par personne
GET/testEmailPublicEnvoyer un e-mail test (développement/débogage)
POST/JWTDonations.EditCréer ou mettre à jour les donations (lot)
DELETE/:idJWTDonations.EditSupprimer une donation

Exemple : Lister les donations 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 le résumé des donations

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

Lots de donations

Chemin de base : /giving/donationbatches

Étend GenericCrudController avec les routes CRUD : getById, getAll, post, delete. L'opération de suppression supprime également toutes les donations du lot.

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

Donner

Chemin de base : /giving/donate

Gère le flux de donation 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 endpoints sont personnalisés.

MéthodeCheminAuthentificationPermissionDescription
GET/gateways/:churchIdPublicObtenir les passerelles de paiement disponibles pour une église (clés publiques uniquement)
POST/client-tokenJWTGénérer un jeton client pour l'initialisation de la passerelle
POST/create-orderJWTCréer une commande de paiement (checkout style PayPal)
POST/chargeJWTTraiter une charge de donation ponctuelle
POST/subscribeJWTCréer un abonnement à donation récurrente
POST/logPublicEnregistrer une donation. Corps : { donation, fundData }
POST/webhook/:providerPublicRecevoir les événements de 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/feePublicCalculer les frais de transaction. Corps : { type, provider, gatewayId, amount, currency }. Nécessite ?churchId=
POST/captcha-verifyPublicVérifier le jeton reCAPTCHA. Corps : { token }

Exemple : Traiter une charge de donation

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

Fonds

Chemin de base : /giving/funds

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

MéthodeCheminAuthentificationPermissionDescription
GET/JWTLister tous les fonds
GET/:idJWTObtenir un fonds par ID
GET/churchId/:churchIdPublicObtenir tous les fonds pour une église spécifique (public)
POST/JWTDonations.EditCréer ou mettre à jour les fonds
DELETE/:idJWTDonations.EditSupprimer un fonds

Donations au fonds

Chemin de base : /giving/funddonations

Suit comment les donations individuelles sont allouées entre les fonds. Aucune route CRUD de base n'est activée ; tous les endpoints sont personnalisés.

MéthodeCheminAuthentificationPermissionDescription
GET/JWTDonations.ViewLister les donations au fonds. Filtrer par ?donationId=, ?personId=, ?fundId=, ou ?fundName=. Ajouter optionnellement ?startDate=&endDate= pour le filtrage par date
GET/:idJWTDonations.ViewObtenir une donation au fonds par ID
GET/myJWTObtenir les donations au fonds de l'utilisateur actuel
POST/JWTDonations.EditCréer ou mettre à jour les donations au fonds (lot)
DELETE/:idJWTDonations.EditSupprimer une donation au fonds

Passerelles

Chemin de base : /giving/gateways

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

MéthodeCheminAuthentificationPermissionDescription
GET/JWTLister toutes les passerelles pour l'église
GET/:idJWTSettings.EditObtenir une passerelle par ID
GET/churchId/:churchIdPublicObtenir les passerelles pour une église (clés publiques uniquement)
GET/configured/:churchIdPublicVérifier si une église a une passerelle de paiement configurée
POST/JWTSettings.EditCréer ou mettre à jour les passerelles (chiffre les clés, met en service les webhooks et les produits)
PATCH/:idJWTSettings.EditMise à jour partielle d'une passerelle
DELETE/:idJWTSettings.EditSupprimer une passerelle (supprime également ses webhooks)

Exemple : Vérifier la configuration de la passerelle

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

Clients

Chemin de base : /giving/customers

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

MéthodeCheminAuthentificationPermissionDescription
GET/JWTDonations.ViewSummaryLister tous les clients
GET/:idJWTDonations.ViewSummary ou enregistrement personnelObtenir un client par ID
GET/:id/subscriptionsJWTDonations.ViewSummary ou enregistrement personnelObtenir les abonnements à la passerelle pour un client
DELETE/:idJWTDonations.EditSupprimer un client

Abonnements

Chemin de base : /giving/subscriptions

Gère les abonnements à donations récurrentes. Aucune route CRUD de base n'est activée ; tous les endpoints sont personnalisés.

MéthodeCheminAuthentificationPermissionDescription
GET/JWTDonations.ViewSummaryLister tous les abonnements
GET/:idJWTDonations.ViewSummaryObtenir un abonnement par ID
POST/JWTDonations.Edit ou abonnement personnelMettre à jour les abonnements avec la passerelle de paiement
DELETE/:idJWTDonations.Edit ou abonnement personnelAnnuler un abonnement et supprimer de la base de données. Corps : { provider, reason }

Fonds d'abonnement

Chemin de base : /giving/subscriptionfunds

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

MéthodeCheminAuthentificationPermissionDescription
GET/JWTDonations.View ou abonnement personnelLister 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 abonnement personnelSupprimer tous les fonds pour un abonnement

Méthodes de paiement

Chemin de base : /giving/paymentmethods

Gère les méthodes de paiement stockées (cartes, comptes bancaires) via les APIs de passerelles de paiement. Aucune route CRUD de base n'est activée ; tous les endpoints sont personnalisés.

MéthodeCheminAuthentificationPermissionDescription
GET/personid/:idJWTDonations.View ou personId personnelObtenir toutes les méthodes de paiement stockées pour une personne (cartes, comptes bancaires)
POST/addcardJWTAttacher une méthode de paiement par carte. Corps : { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit ou personId personnelMettre à jour les détails de la carte. Corps : { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit ou personId personnelCréer une Stripe ACH SetupIntent pour la liaison de compte bancaire. Corps : { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPublicCréer un SetupIntent ACH anonyme pour les donations d'invités. Corps : { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit ou personId personnelAjouter un compte bancaire via jeton (déprécié ; utiliser ach-setup-intent). Corps : { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit ou personId personnelMettre à jour les détails du compte bancaire. Corps : { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit ou client personnelVérifier un compte bancaire avec les micro-dépôts. Corps : { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit ou client personnelSupprimer une méthode de paiement (carte ou compte bancaire)

Enregistrement d'événement

Chemin de base : /giving/eventLog

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

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

Pages connexes