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/myJWTObtenir 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/testEmailPublicEnvoyer 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/: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 (style paiement PayPal)
POST/chargeJWTTraiter une charge de don ponctuel
POST/subscribeJWTCréer un abonnement de don récurrent
POST/logPublicJournaliser un don. Corps : { donation, fundData }
POST/webhook/:providerPublicRecevoir 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/feePublicCalculer les frais de transaction. Corps : { type, provider, gatewayId, amount, currency }. Nécessite ?churchId=
POST/captcha-verifyPublicVé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/JWTLister tous les fonds
GET/:idJWTObtenir un fonds par ID
GET/churchId/:churchIdPublicObtenir tous les fonds d'une église spécifique (public)
GET/public/:churchId/:fundId/total?startDate=&endDate=PublicObtenir 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/myJWTObtenir 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/JWTLister toutes les passerelles de l'église
GET/:idJWTSettings.EditObtenir une passerelle par ID
GET/churchId/:churchIdPublicObtenir les passerelles d'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 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/addcardJWTAttacher 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-anonPublicCré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