Моя идея начинается здесь:
Ko-Fi — это платформа для сбора пожертвований. У них есть API, который может отправлять HTTP POST-запросы на вебхук.
https://ko-fi.com/manage/webhooks (страница требует входа в систему, хотя это просто документация, поэтому я скопирую и вставлю:
Документация по вебхукам Ko-Fi
URL вебхука
Мы отправим HTTP POST-запрос на указанный вами URL при завершении платежа. Ваш URL должен начинаться с https://
Токен проверки
Ниже приведен токен проверки, который будет включен в каждый запрос к вашему вебхуку. Это легкий способ повысить уверенность в том, что запросы к вашему вебхуку исходят от серверов Ko-fi. Убедитесь, что этот уровень доверия подходит для вашего приложения. Например, обратите внимание, что токен проверки передается в открытом виде.
XXXXXXXXXXXXXXXXXXXXX
Получение и ответ
Данные отправляются (постятся) с типом содержимого application/x-www-form-urlencoded. Поле с именем ‘data’ содержит информацию о платеже в виде строки JSON.
Ваш слушатель должен вернуть статус-код 200. Если мы не получим этот статус-код, мы повторим попытку разумное количество раз с тем же message_id.
Поле type будет иметь значение Donation, Subscription, Commission или Shop Order.
Ежемесячные платежи по подписке будут иметь is_subscription_payment, установленный в true.
При первой подписке is_first_subscription_payment будет true.
Если подписка относится к уровню членства, то tier_name будет содержать имя, которое вы присвоили этому уровню.
Для заказа в магазине shop_items будет содержать массив объектов товаров магазина, каждый из которых имеет одно свойство — direct_link_code.
Важно: если вы используете вебхуки для публичного отображения платежей, вы должны учитывать поле is_public и скрывать сообщение, если его значение false.
Если у вас нет настроенного сервера для приема вебхуков, но вы хотите протестировать приведенные ниже примеры, мы рекомендуем использовать сервис вроде https://webhook.site/ для проверки отправляемых нами запросов.
Пример: единичное пожертвование
Вот пример данных, которые будут отправлены для единичного пожертвования:
data = {
"verification_token": "d8546b84-c698-4df5-9812-39d35813e2ff",
"message_id": "78b207f2-9e6c-4ea7-b47f-5454709824aa",
"timestamp": "2023-02-13T22:39:12Z",
"type": "Donation",
"is_public": true,
"from_name": "Jo Example",
"message": "Good luck with the integration!",
"amount": "3.00",
"url": "https://ko-fi.com/Home/CoffeeShop?txid=00000000-1111-2222-3333-444444444444",
"email": "jo.example@example.com",
"currency": "USD",
"is_subscription_payment": false,
"is_first_subscription_payment": false,
"kofi_transaction_id": "00000000-1111-2222-3333-444444444444",
"shop_items": null,
"tier_name": null,
"shipping": null
}
(и так далее)
Я хотел бы добавить на свой форум Discourse полосу прогресса сбора пожертвований, которая будет обновляться, когда Discourse получает такой запрос.
Может ли компонент темы принимать такие запросы, или для этого потребуется плагин?
С чего мне начать, если это возможно с помощью компонента темы (или плагина, если потребуется)? Несколько подсказок или указаний были бы очень кстати ![]()