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

**URL:** https://meta.discourse.org/t/is-it-possible-to-catch-a-request-from-a-third-party-service-in-a-theme-component/255047
**Category:** Development
**Created:** [2월 13, 2023, 10:54오후 UTC](https://meta.discourse.org/t/is-it-possible-to-catch-a-request-from-a-third-party-service-in-a-theme-component/255047 "2023-02-13T22:54:12Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2월 13, 2023, 10:54오후 UTC](https://meta.discourse.org/t/is-it-possible-to-catch-a-request-from-a-third-party-service-in-a-theme-component/255047/1 "2023-02-13T22:54:13Z")

</div>

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

> [@포럼 유지보수 비용](https://meta.discourse.org/t/forum-maintenance-cost/253930/19?u=canapin):
>
> Yeah, I don’t want to be pushy. The topic is pinned until the fees are met, but the best solution would be a progress bar between the header and the forum’s content I think. It’s not something that I can achieve with my current system since donations are made on ko-fi, unless… eyes grey_question

Ko-Fi는 기부 플랫폼입니다. 웹훅으로 HTTP POST 요청을 보낼 수 있는 API를 제공합니다.  
[https://ko-fi.com/manage/webhooks](https://ko-fi.com/manage/webhooks) (이 페이지는 로그인해야 하지만 단순히 문서일 뿐이므로, 여기 내용을 복사-붙여넣기 하겠습니다:

> **Ko-Fi Webhooks 문서**
>
> **Webhook URL**
> 
> 지급이 완료되면 지정된 URL로 HTTP POST를 보냅니다. URL은 [https://로](https://xn--2o2b) 시작해야 합니다.
> 
> **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/`와 같은 서비스를 사용하여 우리가 보내는 요청을 검사하는 것을 권장합니다.
> 
> **예제: 단일 기부**
> 
> 단일 기부의 경우 전송될 데이터의 예시는 다음과 같습니다:
> 
> ```json
> 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가 이러한 요청을 수신할 때 업데이트되도록 하고 싶습니다.

테마 컴포넌트가 이러한 요청을 받을 수 있나요, 아니면 플러그인이 필요할까요?

이것이 테마 컴포넌트로 가능할 경우(또는 필요하면 플러그인) 어디서 시작해야 하나요? 몇 가지 힌트나 방향만 주셔도 좋습니다 🙂

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [2월 13, 2023, 11:54오후 UTC](https://meta.discourse.org/t/is-it-possible-to-catch-a-request-from-a-third-party-service-in-a-theme-component/255047/2 "2023-02-13T23:54:01Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 14, 2023, 12:03오전 UTC](https://meta.discourse.org/t/is-it-possible-to-catch-a-request-from-a-third-party-service-in-a-theme-component/255047/3 "2023-02-14T00:03:00Z")

</div>

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

---

<div class="post-metadata">

### Author: ![ClawdiaWolf](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/clawdiawolf/32/262518_2.png) [@ClawdiaWolf](https://meta.discourse.org/u/ClawdiaWolf)
#### Post date: [2월 14, 2023, 2:35오전 UTC](https://meta.discourse.org/t/is-it-possible-to-catch-a-request-from-a-third-party-service-in-a-theme-component/255047/4 "2023-02-14T02:35:36Z")

</div>

> [@simon](#):
>
> 요청을 처리하기 위한 라우트를 설정하려면 플러그인이 필요할 것 같_습니다_. 하지만 다른 누군가가 이를 확인해 주는 것이 좋겠습니다.

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