È possibile intercettare una richiesta da un servizio di terze parti in un componente del tema?

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 :slight_smile:

2 Mi Piace

Penso che avresti bisogno di un plugin per impostare un percorso che elabori la richiesta, ma sarebbe bene che qualcun altro lo confermasse.

La soluzione ideale potrebbe essere che Ko-fi fornisca un widget di monitoraggio delle donazioni che potresti incorporare come iframe su Discourse. Sembra che Ko-fi fornisca un widget (iframe) che può essere utilizzato per accettare donazioni, ma non ne vedo uno che possa essere utilizzato per visualizzare i progressi verso un obiettivo di donazione: https://help.ko-fi.com/hc/en-us/articles/360018381678-Ko-fi-Donation-Widget.

4 Mi Piace

Sì, avrai bisogno di un plugin. L’alternativa è ospitare un IFRAME o possibilmente un tag IMG al servizio di terze parti.

3 Mi Piace

Ho fatto qualcosa di simile in passato, ma utilizzava uno script dedicato in esecuzione su un host separato che aggiornava alcuni campi personalizzati nel database, ma accettavamo donazioni tramite PayPal, Square, Stripe, Ko-Fi e alcune altre opzioni, quindi farlo tramite un plugin dedicato non era davvero un’opzione per noi all’epoca.

2 Mi Piace