테마 컴포넌트에서 서드파티 서비스의 요청을 가로챌 수 있나요?

제 아이디어는 여기서 시작합니다:

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를 가진 쇼핑 아이템 객체의 배열이 포함됩니다.

중요: 웹훅을 사용하여 결제를 공개적으로 표시하는 경우 is_public 필드를 준수하고, 값이 false인 경우 메시지를 숨겨야 합니다.

웹훅을 수신할 서버가 설정되어 있지 않지만 아래 예제를 테스트하려는 경우, 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:

요청을 처리할 라우트를 설정하려면 플러그인이 필요할 것 같지만, 다른 사람이 확인해 주는 것이 좋을 것 같습니다.

가장 이상적인 해결책은 Ko-fi가 기금 모금 진행 상황을 표시할 수 있는 위젯을 제공하여 Discourse에 iframe으로 임베드할 수 있도록 하는 것입니다. Ko-fi는 기부를 받아들이는 데 사용할 수 있는 위젯(iframe)을 제공하는 것으로 보이지만, 기부 목표 달성 진행 상황을 표시하는 위젯은 보이지 않습니다: https://help.ko-fi.com/hc/en-us/articles/360018381678-Ko-fi-Donation-Widget.

네, 플러그인이 필요합니다. 대안으로는 제3자 서비스에 대한 IFRAME 또는 IMG 태그를 호스팅하는 것입니다.

과거에 비슷한 일을 한 적이 있지만, 당시에는 별도의 호스트에서 실행되는 전용 스크립트를 사용하여 데이터베이스의 일부 사용자 정의 필드를 업데이트했습니다. 우리는 PayPal, Square, Stripe, Ko-Fi 및 기타 몇 가지 옵션을 통해 기부를 받고 있었기 때문에, 당시에는 전용 플러그인을 통한 구현이 우리에게 실질적으로 불가능했습니다.