Mon idée commence ici :
Ko-Fi est une plateforme de dons. Ils ont une API qui peut envoyer des requêtes HTTP POST à un webhook.
https://ko-fi.com/manage/webhooks (la page nécessite une connexion, mais il s’agit uniquement de la documentation, je vais donc copier-coller :
Documentation des webhooks Ko-Fi
URL du webhook
Nous enverrons une requête HTTP POST à votre URL spécifiée lorsqu’un paiement sera complété. Votre URL doit commencer par https://
Jeton de vérification
Le jeton de vérification ci-dessous sera inclus dans chaque requête envoyée à votre webhook. C’est une approche légère pour augmenter votre confiance quant à l’origine des requêtes envoyées à votre webhook par les serveurs Ko-fi. Assurez-vous que ce niveau de confiance convient à votre application. Par exemple, notez que le jeton de vérification est envoyé en texte brut.
XXXXXXXXXXXXXXXXXXXXX
Réception et réponse
Les données sont envoyées (postées) avec un type de contenu application/x-www-form-urlencoded. Un champ nommé ‘data’ contient les informations de paiement sous forme de chaîne JSON.
Votre écouteur doit renvoyer un code d’état 200. Si nous ne recevons pas ce code d’état, nous réessayerons un nombre raisonnable de fois avec le même message_id.
Le champ type sera Donation, Subscription, Commission, ou Shop Order.
Les paiements d’abonnement mensuels auront is_subscription_payment défini sur true.
La première fois que quelqu’un s’abonne, is_first_subscription_payment sera true.
Si l’abonnement concerne un niveau d’adhésion, alors tier_name contiendra le nom que vous avez attribué à ce niveau.
Pour une commande de boutique, shop_items contiendra un tableau d’objets d’articles de boutique, chacun avec une seule propriété, le direct_link_code.
Important : Si vous utilisez les Webhooks pour afficher publiquement les paiements, vous devez respecter le champ is_public et masquer le message si la valeur est false.
Si vous n’avez pas de serveur configuré pour recevoir les webhooks mais que vous souhaitez tester les exemples ci-dessous, nous vous suggérons d’utiliser un service tel que https://webhook.site/ pour inspecter les requêtes que nous envoyons.
Exemple : Don unique
Voici un exemple des données qui seront envoyées pour un don unique :
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": "Bonne chance pour l'intégration !",
"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)
J’aimerais ajouter une barre de progression des dons sur mon forum Discourse, qui serait mise à jour lorsque Discourse reçoit une telle requête.
Un composant de thème peut-il recevoir ces requêtes, ou faudrait-il un plugin ?
Par où commencer si cela est possible avec un composant de thème (ou un plugin si nécessaire) ? Juste quelques indices ou pistes seraient les bienvenus ![]()