私のアイデアはここから始まります。
Ko-Fiは寄付プラットフォームです。HTTP POSTリクエストをウェブフックに送信できるAPIがあります。
https://ko-fi.com/manage/webhooks (ページにログインする必要がありますが、これはドキュメントなので、コピー&ペーストします。
Ko-Fi Webhooks ドキュメント
Webhook URL
支払い完了時に、指定されたURLにHTTP POSTを送信します。URLはhttps://で始まる必要があります。
Verification Token
以下の検証トークンは、ウェブフックへのすべてのリクエストに含まれます。これは、Ko-fiサーバーがウェブフックへのリクエストの発信元であることを確認するための軽量なアプローチです。このレベルの信頼性がアプリケーションに適していることを確認してください。たとえば、検証トークンはプレーンテキストで送信されることに注意してください。
XXXXXXXXXXXXXXXXXXXXX
受信と応答
データは application/x-www-form-urlencoded のコンテンツタイプで送信(POST)されます。「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 を持つショップアイテムオブジェクトの配列が含まれます。
重要:Webhookを使用して支払いを公開する場合、is_public フィールドを尊重し、値が false の場合はメッセージを非表示にする必要があります。
Webhookを受信するサーバーが設定されておらず、以下の例をテストしたい場合は、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がこのようなリクエストを受信したときに更新されるようにしたいです。
テーマコンポーネントでこれらのリクエストを受信できますか、それともプラグインが必要ですか?
テーマコンポーネント(または必要に応じてプラグイン)でこれが可能であれば、どこから始めればよいですか?いくつかヒントやポインターがあれば幸いです ![]()