サードパーティサービスからのリクエストをテーマコンポーネントでキャッチすることは可能ですか?

私のアイデアはここから始まります。

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 フィールドは DonationSubscriptionCommission、または Shop Order になります。

月額サブスクリプションの支払いでは、is_subscription_paymenttrue に設定されます。

誰かが初めてサブスクライブするとき、is_first_subscription_paymenttrue になります。

サブスクリプションがメンバーシップティアの場合、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がこのようなリクエストを受信したときに更新されるようにしたいです。

テーマコンポーネントでこれらのリクエストを受信できますか、それともプラグインが必要ですか?

テーマコンポーネント(または必要に応じてプラグイン)でこれが可能であれば、どこから始めればよいですか?いくつかヒントやポインターがあれば幸いです :slight_smile:

「いいね!」 2

リクエストを処理するルートを設定するにはプラグインが必要だと思いますが、他の人に確認してもらうのが良いでしょう。

理想的な解決策は、Ko-fiが寄付トラッカーウィジェットを提供し、それをDiscourseにiframeとして埋め込めるようにすることかもしれません。Ko-fiは寄付を受け付けるためのウィジェット(iframe)を提供しているようですが、寄付目標に対する進捗を表示するためのものは見当たりません: https://help.ko-fi.com/hc/en-us/articles/360018381678-Ko-fi-Donation-Widget.

「いいね!」 4

はい、プラグインが必要です。代替案としては、サードパーティサービスにIFRAMEまたはIMGタグをホストすることが考えられます。

「いいね!」 3

以前に似たようなことをしましたが、それは別のホストで実行される専用スクリプトを使用しており、データベースのカスタムフィールドを更新していました。しかし、PayPal、Square、Stripe、Ko-Fiなど、いくつかのオプションで寄付を受け付けていたため、当時、専用プラグインを介して行うことは実際には選択肢ではありませんでした。

「いいね!」 2