Mi idea empieza aquí:
Ko-Fi es una plataforma de donaciones. Tienen una API que puede enviar solicitudes HTTP POST a un webhook.
https://ko-fi.com/manage/webhooks (la página requiere inicio de sesión, aunque es solo documentación, así que copiaré y pegaré:
Documentación de Webhooks de Ko-Fi
URL del Webhook
Enviaremos una solicitud HTTP POST a la URL que especifiques cuando un pago se complete. Tu URL debe empezar con https://
Token de Verificación
El token de verificación a continuación se incluirá en cada solicitud a tu webhook. Es un enfoque ligero para aumentar tu confianza de que los servidores de Ko-fi son la fuente de las solicitudes a tu webhook. Asegúrate de que este nivel de confianza sea adecuado para tu aplicación. Por ejemplo, ten en cuenta que el token de verificación se envía como texto plano.
XXXXXXXXXXXXXXXXXXXXX
Recepción y Respuesta
Los datos se envían (publican) con un tipo de contenido de application/x-www-form-urlencoded. Un campo llamado ‘data’ contiene la información del pago como una cadena JSON.
Tu listener debe devolver un código de estado de 200. Si no recibimos este código de estado, reintentaremos un número razonable de veces con el mismo message_id.
El campo type será Donation, Subscription, Commission o Shop Order.
Los pagos de suscripción mensuales tendrán is_subscription_payment establecido en true.
La primera vez que alguien se suscribe, is_first_subscription_payment será true.
Si la suscripción es para un nivel de membresía, entonces tier_name contendrá el nombre que le has asignado al nivel.
Para un pedido de tienda, shop_items contendrá una matriz de objetos de artículos de tienda, cada uno con una sola propiedad, el direct_link_code.
Importante: Si estás utilizando Webhooks para mostrar pagos públicamente, debes respetar el campo is_public y ocultar el mensaje si el valor es false.
Si no tienes un servidor configurado para recibir webhooks pero quieres probar los ejemplos a continuación, te sugerimos usar un servicio como https://webhook.site/ para inspeccionar las solicitudes que enviamos.
Ejemplo: Donación Única
Aquí tienes un ejemplo de los datos que se enviarán para una donación única:
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
}
(etc)
Me gustaría añadir una barra de progreso de donaciones en mi foro de Discourse, que se actualizaría cuando Discourse reciba dicha solicitud.
¿Puede un componente de tema recibir estas solicitudes, o necesitaría un plugin?
¿Por dónde empiezo si esto es posible con un componente de tema (o un plugin si es necesario)? Solo unas pocas pistas o indicaciones serían geniales ![]()