Перейти к основному содержимому

Конечные точки пожертвований

Модуль пожертвований управляет пожертвованиями, фондами, обработкой платежей, подписками и связанными финансовыми операциями. Он поддерживает несколько платёжных шлюзов (Stripe, PayPal), обрабатывает одноразовые и повторяющиеся пожертвования, отслеживает пакеты пожертвований и обеспечивает обработку вебхуков для асинхронных событий платежей.

Базовый путь: /giving

Пожертвования

Базовый путь: /giving/donations

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.View или собственный personIdСписок всех пожертвований. Фильтр по ?batchId= или ?personId=
GET/:idJWTDonations.ViewПолучить пожертвование по ID
GET/myJWTПолучить пожертвования текущего пользователя
GET/summaryJWTDonations.ViewSummaryПолучить резюме пожертвований. Фильтр по ?startDate=&endDate=&type=. Используйте type=person для разбивки по людям
GET/testEmailPublicОтправить тестовое письмо (разработка/отладка)
POST/JWTDonations.EditСоздать или обновить пожертвования (пакет)
DELETE/:idJWTDonations.EditУдалить пожертвование

Пример: список пожертвований по пакету

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

Пример: получить резюме пожертвований

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

Пакеты пожертвований

Базовый путь: /giving/donationbatches

Расширяет GenericCrudController с маршрутами CRUD: getById, getAll, post, delete. Операция удаления также удаляет все пожертвования в пакете.

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.ViewSummaryСписок всех пакетов пожертвований
GET/:idJWTDonations.ViewSummaryПолучить пакет пожертвований по ID
POST/JWTDonations.EditСоздать или обновить пакеты пожертвований
DELETE/:idJWTDonations.EditУдалить пакет и все его пожертвования

Пожертвование

Базовый путь: /giving/donate

Обрабатывает поток пожертвований для общественности, включая платежи, подписки, вебхуки и расчёты сборов. Маршруты базового CRUD не включены; все конечные точки являются пользовательскими.

МетодПутьАут.РазрешениеОписание
GET/gateways/:churchIdPublicПолучить доступные платёжные шлюзы для церкви (только открытые ключи)
POST/client-tokenJWTГенерировать маркер клиента для инициализации шлюза
POST/create-orderJWTСоздать заказ платежа (PayPal-стиль проверка)
POST/chargeJWTОбработать платёж одноразового пожертвования
POST/subscribeJWTСоздать подписку повторяющегося пожертвования
POST/logPublicЗалогировать пожертвование. Тело: { donation, fundData }
POST/webhook/:providerPublicПолучить события платёжного вебхука (Stripe, PayPal). Требует ?churchId=
POST/replay-stripe-eventsJWTDonations.EditПовторить события Stripe для диапазона дат. Тело: { startDate, endDate, dryRun }
POST/feePublicРассчитать сборы за транзакции. Тело: { type, provider, gatewayId, amount, currency }. Требует ?churchId=
POST/captcha-verifyPublicПроверить маркер reCAPTCHA. Тело: { token }

Пример: обработка платежа пожертвования

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

Пример: создание повторяющейся подписки

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

Фонды

Базовый путь: /giving/funds

Расширяет GenericCrudController с маршрутами CRUD: getById, getAll, post, delete. Разрешение view равно null (разрешение не требуется для просмотра фондов).

МетодПутьАут.РазрешениеОписание
GET/JWTСписок всех фондов
GET/:idJWTПолучить фонд по ID
GET/churchId/:churchIdPublicПолучить все фонды для конкретной церкви (открытый доступ)
GET/public/:churchId/:fundId/total?startDate=&endDate=PublicПолучить общую сумму пожертвований фонда: { fundId, totalAmount, donationCount }. Питает элемент campaignProgress конструктора веб-сайта
POST/JWTDonations.EditСоздать или обновить фонды
DELETE/:idJWTDonations.EditУдалить фонд

Пожертвования в фонды

Базовый путь: /giving/funddonations

Отслеживает, как отдельные пожертвования распределяются по фондам. Маршруты базового CRUD не включены; все конечные точки являются пользовательскими.

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.ViewСписок пожертвований в фонды. Фильтр по ?donationId=, ?personId=, ?fundId= или ?fundName=. Дополнительно добавьте ?startDate=&endDate= для фильтрации по датам
GET/:idJWTDonations.ViewПолучить пожертвование в фонд по ID
GET/myJWTПолучить пожертвования в фонды текущего пользователя
POST/JWTDonations.EditСоздать или обновить пожертвования в фонды (пакет)
DELETE/:idJWTDonations.EditУдалить пожертвование в фонд

Шлюзы

Базовый путь: /giving/gateways

Управляет конфигурациями платёжных шлюзов (Stripe, PayPal и т. д.). Маршруты базового CRUD не включены; все конечные точки являются пользовательскими. Секреты шлюза зашифрованы в состоянии покоя.

МетодПутьАут.РазрешениеОписание
GET/JWTСписок всех шлюзов для церкви
GET/:idJWTSettings.EditПолучить шлюз по ID
GET/churchId/:churchIdPublicПолучить шлюзы для церкви (только открытые ключи)
GET/configured/:churchIdPublicПроверить, есть ли у церкви настроенный платёжный шлюз
POST/JWTSettings.EditСоздать или обновить шлюзы (зашифровать ключи, подготовить вебхуки и продукты)
PATCH/:idJWTSettings.EditЧастичное обновление шлюза
DELETE/:idJWTSettings.EditУдалить шлюз (также удалить его вебхуки)

Пример: проверить конфигурацию шлюза

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

Клиенты

Базовый путь: /giving/customers

Расширяет GenericCrudController с маршрутами CRUD: getAll, delete. Связывает людей с их записями клиентов платёжного шлюза.

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.ViewSummaryСписок всех клиентов
GET/:idJWTDonations.ViewSummary или собственная записьПолучить клиента по ID
GET/:id/subscriptionsJWTDonations.ViewSummary или собственная записьПолучить подписки шлюза для клиента
DELETE/:idJWTDonations.EditУдалить клиента

Подписки

Базовый путь: /giving/subscriptions

Управляет подписками повторяющихся пожертвований. Маршруты базового CRUD не включены; все конечные точки являются пользовательскими.

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.ViewSummaryСписок всех подписок
GET/:idJWTDonations.ViewSummaryПолучить подписку по ID
POST/JWTDonations.Edit или собственная подпискаОбновить подписки с платёжным шлюзом
DELETE/:idJWTDonations.Edit или собственная подпискаОтменить подписку и удалить из базы данных. Тело: { provider, reason }

Фонды подписки

Базовый путь: /giving/subscriptionfunds

Отслеживает распределение фондов для повторяющихся подписок. Маршруты базового CRUD не включены; все конечные точки являются пользовательскими.

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.View или собственная подпискаСписок фондов подписки. Фильтр по ?subscriptionId=
GET/:idJWTDonations.ViewSummaryПолучить фонд подписки по ID
DELETE/:idJWTDonations.EditУдалить фонд подписки
DELETE/subscription/:idJWTDonations.Edit или собственная подпискаУдалить все фонды для подписки

Методы платежей

Базовый путь: /giving/paymentmethods

Управляет сохранёнными методами платежей (карты, банковские счета) через API платёжных шлюзов. Маршруты базового CRUD не включены; все конечные точки являются пользовательскими.

МетодПутьАут.РазрешениеОписание
GET/personid/:idJWTDonations.View или собственный personIdПолучить все сохранённые методы платежей для человека (карты, банковские счета)
POST/addcardJWTПрикрепить метод платежа карты. Тело: { id, personId, customerId, email, name, churchId, provider }
POST/updatecardJWTDonations.Edit или собственный personIdОбновить детали карты. Тело: { personId, paymentMethodId, cardData, provider }
POST/ach-setup-intentJWTDonations.Edit или собственный personIdСоздать Stripe ACH SetupIntent для связи банковского счёта. Тело: { personId, customerId, email, name, churchId }
POST/ach-setup-intent-anonPublicСоздать анонимный ACH SetupIntent для пожертвований гостей. Тело: { email, name, churchId, gatewayId }
POST/addbankaccountJWTDonations.Edit или собственный personIdДобавить банковский счёт через маркер (устаревший; используйте ach-setup-intent). Тело: { id, personId, customerId, email, name }
POST/updatebankJWTDonations.Edit или собственный personIdОбновить детали банковского счёта. Тело: { paymentMethodId, personId, bankData, customerId }
POST/verifybankJWTDonations.Edit или собственный клиентПроверить банковский счёт с микродепозитами. Тело: { paymentMethodId, customerId, amountData }
DELETE/:id/:customeridJWTDonations.Edit или собственный клиентУдалить метод платежа (карта или банковский счёт)

Журнал событий

Базовый путь: /giving/eventLog

Расширяет GenericCrudController с маршрутами CRUD: getById, getAll, post, delete. Отслеживает события платёжного шлюза вебхука для аудита и дедупликации.

МетодПутьАут.РазрешениеОписание
GET/JWTDonations.ViewSummaryСписок всех журналов событий
GET/:idJWTDonations.ViewSummaryПолучить журнал событий по ID
GET/type/:typeJWTDonations.ViewSummaryПолучить журналы событий, отфильтрованные по типу события
POST/JWTDonations.EditСоздать или обновить журналы событий
DELETE/:idJWTDonations.EditУдалить журнал событий

Связанные страницы