La mia idea parte da qui:
Ko-Fi è una piattaforma di donazioni. Hanno un’API che può inviare richieste HTTP POST a un webhook.
https://ko-fi.com/manage/webhooks (la pagina richiede l’accesso, ma è solo documentazione, quindi copierò e incollerò:
Documentazione Webhook Ko-Fi
URL Webhook
Invieremo una richiesta HTTP POST all’URL specificato quando un pagamento viene completato. Il tuo URL deve iniziare con https://
Token di verifica
Il token di verifica sottostante sarà incluso in ogni richiesta al tuo webhook. È un approccio leggero per aumentare la tua fiducia che i server Ko-fi siano la fonte delle richieste al tuo webhook. Assicurati che questo livello di fiducia sia adatto alla tua applicazione. Ad esempio, nota che il token di verifica viene inviato come testo normale.
XXXXXXXXXXXXXXXXXXXXX
Ricezione e risposta
I dati vengono inviati (postati) con un tipo di contenuto application/x-www-form-urlencoded. Un campo chiamato ‘data’ contiene le informazioni di pagamento come stringa JSON.
Il tuo listener dovrebbe restituire un codice di stato 200. Se non riceviamo questo codice di stato, ritenteremo un numero ragionevole di volte con lo stesso message_id.
Il campo type sarà Donation, Subscription, Commission o Shop Order.
I pagamenti mensili ricorrenti avranno is_subscription_payment impostato su true.
La prima volta che qualcuno si iscrive, is_first_subscription_payment sarà true.
Se l’iscrizione è per un livello di appartenenza, allora tier_name conterrà il nome che hai assegnato al livello.
Per un ordine di negozio, shop_items conterrà un array di oggetti di articoli del negozio, ognuno con una singola proprietà, il direct_link_code.
Importante: se stai usando i Webhook per mostrare pubblicamente i pagamenti, devi rispettare il campo is_public e nascondere il messaggio se il valore è false.
Se non hai un server configurato per ricevere webhook ma vuoi testare gli esempi seguenti, ti suggeriamo di utilizzare un servizio come https://webhook.site/ per ispezionare le richieste che inviamo.
Esempio: Donazione singola
Ecco un esempio dei dati che verranno inviati per una singola donazione:
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
}
(ecc.)
Vorrei aggiungere una barra di avanzamento delle donazioni sul mio forum Discourse, che verrebbe aggiornata quando Discourse riceve una richiesta del genere.
Un componente del tema può ricevere queste richieste, o sarebbe necessario un plugin?
Da dove dovrei iniziare se questo fosse possibile con un componente del tema (o un plugin se necessario)? Bastano pochi indizi o suggerimenti ![]()