Pular para o conteúdo principal

Endpoints de Doações

O módulo de Doações gerencia doações, fundos, processamento de pagamentos, assinaturas e outras operações financeiras relacionadas. Ele oferece suporte a múltiplos gateways de pagamento (Stripe, PayPal), trata doações únicas e recorrentes, rastreia lotes de doações e fornece processamento de webhooks para eventos de pagamento assíncronos.

Caminho base: /giving

Doações

Caminho base: /giving/donations

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.View ou próprio personIdListar todas as doações. Filtrar por ?batchId= ou ?personId=
GET/:idJWTDonations.ViewObter uma doação por ID
GET/myJWTObter as doações do usuário atual
GET/summaryJWTDonations.ViewSummaryObter o resumo de doações. Filtrar por ?startDate=&endDate=&type=. Use type=person para o detalhamento por pessoa
GET/testEmailPublicEnviar um email de teste (desenvolvimento/depuração)
POST/JWTDonations.EditCriar ou atualizar doações (em lote)
DELETE/:idJWTDonations.EditExcluir uma doação

Exemplo: Listar Doações por Lote

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

Exemplo: Obter o Resumo de Doações

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

Lotes de Doações

Caminho base: /giving/donationbatches

Estende GenericCrudController com as rotas CRUD: getById, getAll, post, delete. A operação de exclusão também remove todas as doações dentro do lote.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.ViewSummaryListar todos os lotes de doações
GET/:idJWTDonations.ViewSummaryObter um lote de doações por ID
POST/JWTDonations.EditCriar ou atualizar lotes de doações
DELETE/:idJWTDonations.EditExcluir um lote e todas as suas doações

Doar

Caminho base: /giving/donate

Trata o fluxo de doação voltado ao público, incluindo cobranças, assinaturas, webhooks e cálculos de taxas. Nenhuma rota CRUD base está habilitada; todos os endpoints são personalizados.

MétodoCaminhoAuthPermissãoDescrição
GET/gateways/:churchIdPublicObter os gateways de pagamento disponíveis para uma igreja (apenas chaves públicas)
POST/client-tokenJWTGerar um token de cliente para inicialização do gateway
POST/create-orderJWTCriar um pedido de pagamento (checkout no estilo PayPal)
POST/chargeJWTProcessar uma cobrança de doação única
POST/subscribeJWTCriar uma assinatura de doação recorrente
POST/logPublicRegistrar uma doação. Corpo: { donation, fundData }
POST/webhook/:providerPublicReceber eventos de webhook de pagamento (Stripe, PayPal). Requer ?churchId=
POST/replay-stripe-eventsJWTDonations.EditReproduzir novamente os eventos do Stripe de um intervalo de datas. Corpo: { startDate, endDate, dryRun }
POST/feePublicCalcular as taxas da transação. Corpo: { type, provider, gatewayId, amount, currency }. Requer ?churchId=
POST/captcha-verifyPublicVerificar o token reCAPTCHA. Corpo: { token }

Exemplo: Processar uma Cobrança de Doação

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

Exemplo: Criar uma Assinatura Recorrente

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

Fundos

Caminho base: /giving/funds

Estende GenericCrudController com as rotas CRUD: getById, getAll, post, delete. A permissão de view é null (nenhuma permissão é necessária para visualizar fundos).

MétodoCaminhoAuthPermissãoDescrição
GET/JWTListar todos os fundos
GET/:idJWTObter um fundo por ID
GET/churchId/:churchIdPublicObter todos os fundos de uma igreja específica (público)
GET/public/:churchId/:fundId/total?startDate=&endDate=PublicObter o total de doações de um fundo: { fundId, totalAmount, donationCount }. Alimenta o elemento campaignProgress do construtor de sites
POST/JWTDonations.EditCriar ou atualizar fundos
DELETE/:idJWTDonations.EditExcluir um fundo

Doações por Fundo

Caminho base: /giving/funddonations

Rastreia como as doações individuais são alocadas entre fundos. Nenhuma rota CRUD base está habilitada; todos os endpoints são personalizados.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.ViewListar doações por fundo. Filtrar por ?donationId=, ?personId=, ?fundId= ou ?fundName=. Opcionalmente, adicione ?startDate=&endDate= para filtrar por data
GET/:idJWTDonations.ViewObter uma doação por fundo por ID
GET/myJWTObter as doações por fundo do usuário atual
POST/JWTDonations.EditCriar ou atualizar doações por fundo (em lote)
DELETE/:idJWTDonations.EditExcluir uma doação por fundo

Gateways

Caminho base: /giving/gateways

Gerencia as configurações de gateway de pagamento (Stripe, PayPal, etc.). Nenhuma rota CRUD base está habilitada; todos os endpoints são personalizados. Os segredos do gateway são criptografados em repouso.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTListar todos os gateways da igreja
GET/:idJWTSettings.EditObter um gateway por ID
GET/churchId/:churchIdPublicObter os gateways de uma igreja (apenas chaves públicas)
GET/configured/:churchIdPublicVerificar se uma igreja tem um gateway de pagamento configurado
POST/JWTSettings.EditCriar ou atualizar gateways (criptografa chaves, provisiona webhooks e produtos)
PATCH/:idJWTSettings.EditAtualizar parcialmente um gateway
DELETE/:idJWTSettings.EditExcluir um gateway (também remove seus webhooks)

Exemplo: Verificar a Configuração de um Gateway

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

Clientes

Caminho base: /giving/customers

Estende GenericCrudController com as rotas CRUD: getAll, delete. Vincula pessoas aos seus registros de cliente no gateway de pagamento.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.ViewSummaryListar todos os clientes
GET/:idJWTDonations.ViewSummary ou registro próprioObter um cliente por ID
GET/:id/subscriptionsJWTDonations.ViewSummary ou registro próprioObter as assinaturas de gateway de um cliente
DELETE/:idJWTDonations.EditExcluir um cliente

Assinaturas

Caminho base: /giving/subscriptions

Gerencia as assinaturas de doações recorrentes. Nenhuma rota CRUD base está habilitada; todos os endpoints são personalizados.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.ViewSummaryListar todas as assinaturas
GET/:idJWTDonations.ViewSummaryObter uma assinatura por ID
POST/JWTDonations.Edit ou assinatura própriaAtualizar assinaturas junto ao gateway de pagamento
DELETE/:idJWTDonations.Edit ou assinatura própriaCancelar uma assinatura e removê-la do banco de dados. Corpo: { provider, reason }

Fundos de Assinatura

Caminho base: /giving/subscriptionfunds

Rastreia as alocações de fundos das assinaturas recorrentes. Nenhuma rota CRUD base está habilitada; todos os endpoints são personalizados.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.View ou assinatura própriaListar os fundos de assinatura. Filtrar por ?subscriptionId=
GET/:idJWTDonations.ViewSummaryObter um fundo de assinatura por ID
DELETE/:idJWTDonations.EditExcluir um fundo de assinatura
DELETE/subscription/:idJWTDonations.Edit ou assinatura própriaExcluir todos os fundos de uma assinatura

Métodos de Pagamento

Caminho base: /giving/paymentmethods

Gerencia os métodos de pagamento armazenados (cartões, contas bancárias) por meio das APIs do gateway de pagamento. Nenhuma rota CRUD base está habilitada; todos os endpoints são personalizados.

MétodoCaminhoAuthPermissãoDescrição
GET/personid/:idJWTDonations.View ou próprio personIdObter todos os métodos de pagamento armazenados de uma pessoa (cartões, contas bancárias)
POST/addcardJWTAnexar um método de pagamento por cartão. Corpo: { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit ou próprio personIdAtualizar os dados do cartão. Corpo: { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit ou próprio personIdCriar um SetupIntent de ACH do Stripe para vincular uma conta bancária. Corpo: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPublicCriar um SetupIntent de ACH anônimo para doações de convidados. Corpo: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit ou próprio personIdAdicionar uma conta bancária via token (obsoleto; use ach-setup-intent). Corpo: { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit ou próprio personIdAtualizar os dados da conta bancária. Corpo: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit ou próprio clienteVerificar uma conta bancária com microdepósitos. Corpo: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit ou próprio clienteExcluir um método de pagamento (cartão ou conta bancária)

Log de Eventos

Caminho base: /giving/eventLog

Estende GenericCrudController com as rotas CRUD: getById, getAll, post, delete. Rastreia os eventos de webhook do gateway de pagamento para auditoria e deduplicação.

MétodoCaminhoAuthPermissãoDescrição
GET/JWTDonations.ViewSummaryListar todos os logs de eventos
GET/:idJWTDonations.ViewSummaryObter um log de evento por ID
GET/type/:typeJWTDonations.ViewSummaryObter logs de eventos filtrados por tipo de evento
POST/JWTDonations.EditCriar ou atualizar logs de eventos
DELETE/:idJWTDonations.EditExcluir um log de evento

Páginas Relacionadas