| 요약 | Discourse Subscriptions 플러그인은 사이트 소유자가 반복 결제 및 일시불 구독을 판매하여 Discourse 인스턴스에서 특정 그룹에 대한 액세스 권한을 부여할 수 있도록 합니다. | |
| 설치 가이드 | 이 플러그인은 Discourse 코어에 번들로 제공됩니다. 플러그인을 별도로 설치할 필요가 없습니다. |
Discourse Subscriptions 플러그인은 사용자가 게이트된 콘텐츠에 액세스하기 위해 지불할 수 있는 일시불 및 반복 구독을 생성할 수 있게 해줍니다. 이는 커뮤니티 호스팅 비용을 충당하는 훌륭한 방법이 될 수 있습니다.
기능
Discourse Subscriptions 플러그인은 다음 기능을 지원합니다:
- 관리 패널에서 새 제품 및 플랜 생성
- 관리 패널에서 구독 취소 및 환불
- 일시불 또는 반복 구독 플랜 생성
- 반복 구독에 무료 체험 기간 추가
- SCA/3D Secure 지원
- 사용자가 구독/취소할 때 플랜 그룹에 사용자 추가/제거
- 사용자 프로필에서 구독 취소
- 구독 기간 종료 시 구독 취소
- Stripe Checkout 선택 지원
- 자동 세금 계산 및 징수
- 사용자가 개별 구독에 대해 카드 정보 업데이트 가능
상단 내비게이션에 있는 “구독” 버튼은 사이트에서 구성한 구독 목록이 표시되는 구독 페이지 /s로 이동시킵니다:
사용자가 특정 플랜의 “구독” 버튼을 클릭하면 해당 플랜의 결제 페이지가 열립니다:
사용자가 결제 상세 정보와 주소를 입력하고 “구독”을 클릭하면 “감사합니다!” 메시지가 표시되고 결제 페이지로 이동합니다:
사용자는 또한 선택한 그룹에 자동으로 추가되어 어떤 사용자가 구독했는지 쉽게 확인할 수 있으며, 해당 그룹만 볼 수 있는 카테고리에서 게이트된 콘텐츠를 제공할 수 있습니다.
용어
- 구독(Subscription) - 구독은 커뮤니티의 콘텐츠 액세스를 제어할 수 있는 반복 결제 플랜입니다. 구독이 생성되거나 삭제되면, 구독 플랜과 연관된 사용자 그룹에 사용자가 추가되거나 제거됩니다. 구독은 제품과 플랜으로 구성됩니다.
- 제품(Product) - Stripe의 용어로, 제품은 판매하는 것을 의미합니다. 제품에는 하나 이상의 플랜을 포함할 수 있습니다.
- 제품에 설명을 추가하려면 "description"이라는 이름의 메타데이터 필드를 추가하고 대신 그 필드를 사용하세요. Markdown을 사용할 수 있습니다.
- 플랜(Plan) - 플랜에는 가격, 반복 주기, 그리고 구독자가 액세스 권한을 얻는 그룹이 연관됩니다.
Stripe 사설 키를 항상 안전하게 보관하고 보호하는 데 매우 주의하세요.
Discourse 인스턴스를 종료하거나 이 플러그인을 제거하거나 사이트가 오프라인 상태가 되면, 구독이 취소될 때까지 Stripe는 서비스를 위해 고객에게 계속 청구합니다.
구성
- 플러그인 설치 및 활성화
- 결제 게이트웨이(Stripe) 구성
- Stripe에서 Webhooks 및 이벤트 구성
- 관리자 > 플러그인 > 설치됨 > Subscriptions > 설정
/admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions. 아래에 Stripe 키(공개, 비밀, 웹훅 비밀) 추가 - 구매를 통해 가입할 구독자용 그룹 생성
- 관리자 > 플러그인 > Subscriptions 아래에서 제품 및 플랜 생성
- 수익화!
결제 게이트웨이 설정
먼저, Stripe 결제 게이트웨이 계정이 필요합니다. 시작하려면 테스트 모드로 계정을 설정하여 실제 거래를 하지 않고 은행 계좌를 설정하지 않아도 어떻게 작동하는지 확인할 수 있습니다. 플러그인에는 테스트 모드 토글이 없으므로, 개발자 키(pk_test, sk_test로 시작)를 사용하도록 주의하세요.
Stripe 계정에서 Webhooks 및 이벤트 설정
Webhooks는 구독 취소가 완전히 작동하도록 하는 데 필수입니다. 올바르게 구성했는지 확인하세요.
Stripe 계정이 있으면, Stripe에 웹사이트 주소를 알려야 합니다. 이렇게 하면 특정 거래에 대해 알림을 받을 수 있습니다. 이는 Stripe 대시보드의 Endpoints > URL에 입력할 수 있습니다.
Webhooks 주소: [서버 주소]/s/hooks – 여기서 [서버 주소]는 Discourse 설치 URL입니다.
또한 웹훅 URL을 통해 Stripe가 어떤 이벤트에 대해 알림을 보내야 하는지 Stripe에 알려야 합니다.
현재, Discourse Subscriptions는 다음 이벤트에 응답합니다:
customer.subscription.deletedcustomer.subscription.updatedcheckout.session.completed
플러그인 설정에 Stripe API 및 Webhook 키 추가
Stripe는 웹사이트와 통신할 수 있도록 권한이 필요합니다. 이를 위해 Stripe는 사설 및 공개 API 키 쌍과 웹훅용 서명 비밀키를 게시합니다.
웹훅을 인증하려면, Stripe의 API 키와 웹훅 비밀키를 설정 페이지(Developers 아래)에 추가하세요.
프로덕션 키를 추가하면 실제 결제가 발생합니다. 테스트할 계획이라면
View test data모드로 전환하고 Developers 아래에서pk_test및sk_test키를 가져오세요.
Stripe 계정 설정에서 다음을 확인하세요:
이 키를 관리자 > 플러그인 > 설치됨 > Subscriptions > 설정 /admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions.의 적절한 설정에 추가하세요.
Discourse에서 사용자 그룹 설정
사용자가 Discourse 애플리케이션에 성공적으로 구독하면, 신용카드 거래가 처리된 후 사용자 그룹에 추가됩니다. 사용자를 사용자 그룹에 지정하면 웹사이트에서 사용자가 액세스할 수 있는 것을 관리할 수 있습니다. 사용자 그룹은 Discourse의 핵심 기능이며, 이 플러그인은 플랜과 연관된 그룹에서 사용자를 추가하고 제거하는 것 외에는 아무것도 하지 않습니다.
하나 이상의 제품 및 플랜 생성
관리자 > 플러그인 > Subscriptions에서 새 제품 추가를 클릭하세요. 제품을 저장한 후, 플랜을 추가할 수 있습니다. 플랜의 가격 및 청구 간격은 생성된 후에는 변경할 수 없다는 점을 기억하세요. 이는 구독 관리에 대한 혼란을 방지하기 위한 것입니다.
Stripe 대시보드를 살펴보면, 모든 제품과 플랜이 나열되어 있는 것을 볼 수 있습니다. Discourse Subscriptions는 이를 로컬에 생성하지 않습니다. Stripe에서 생성됩니다.
테스트
다음 신용카드 번호로 테스트하세요:
- 4242 4242 4242 4242
- 4111 1111 1111 1111 (인증 불필요)
- 4000 0027 6000 3184 (인증 필요)
더 많은 테스트 카드 번호: Test card numbers | Stripe Documentation
/s를 방문하고 몇 가지 테스트 거래를 입력하세요.
라이브 전환
라이브 전환 준비가 되면, API 및 웹훅 비밀키를 프로덕션 키로 변경하세요. 라이브 모드로 새 제품과 플랜을 생성해야 합니다.
Stripe 웹훅을 올바르게 구성하지 않으면, 반복 결제가 어떤 이유(만료된 신용카드 등)로든 처리되지 않더라도 사용자는 여전히 그룹에 액세스 권한이 있음을 알아두세요. Stripe가 자동으로 구독을 취소하도록 하려면, Manage failed payments 설정을 아래 이미지와 유사하게 설정하고 위에서 설명한 대로 웹훅을 구성하세요.
결제 정보 업데이트
사용자는 결제 페이지를 방문하고 구독 옆의 편집 버튼을 클릭하여 개별 구독에 사용된 카드를 업데이트할 수 있으며, 이 화면이 열립니다:
Stripe Pricing Tables과 함께 Stripe Checkout
구독 플러그인의 제품 및 체크아웃 페이지를 대신하여 Stripe Checkout과 Stripe Pricing Tables를 사용하도록 선택할 수도 있습니다.
Stripe 대시보드에서:
- Discourse에서 제품을 생성한 후, Products > Product catalog로 이동
- 가격 테이블에 포함하려는 제품을 클릭
Edit product클릭More Options를 클릭하고Metadata아래에 다음을 입력:- Key:
group_name - Value: Discourse의 그룹 이름 (예:
trust_level_0)
- Key:
- 저장하려면
Update product클릭
그룹 이름이 Discourse의
User_Groups에서 선택된 그룹과 일치하는지 확인하세요
Stripe 가격 테이블 생성
- Products > Pricing tables로 이동
- 새 테이블을 생성하고 방금 만든 제품을 추가
- 테이블을 게시한 후, 임베드 코드 내에서 가격 테이블 ID를 복사(
prctbl_...로 시작) - 가격 테이블 ID를
discourse_subscriptions_pricing_table_id에 붙여넣고 구독 가격 테이블 설정을 활성화. - 두 설정을 저장하려면 녹색 체크마크를 클릭.
권장 단계:
Stripe 내에서 가격 테이블을 설정할 때, 체크아웃이 완료된 후 사용자를 사이트로 리디렉션하도록 링크하는 것이 좋습니다. 그렇지 않으면 사용자는 사이트로 돌아가는 링크가 없는 Stripe 확인 페이지에 머물러 있게 됩니다.
구독의 경우 https://<your-site>/my/billing/subscriptions로 리디렉션하는 것이 좋은 선택입니다. 일시불 결제의 경우 https://<your-site>/my/billing/payments로 직접 링크할 수 있습니다.
자동 세금 징수
자동 세금 징수를 활성화하려면 discourse_subscriptions_enable_automatic_tax 사이트 설정 상자를 선택하세요.
이를 활성화했지만 Stripe 인스턴스를 세금 징수를 위해 올바르게 구성하지 않은 경우, 체크아웃 과정을 완료한 후 사용자가 이 팝업을 볼 수 있습니다:
자세한 내용은 이 가이드를 참조할 수 있지만, 플러그인이 이제 적절한 automatic_tax[enabled]=true 매개변수를 전달하므로(단계 5) 해야 할 일은 많지 않을 것입니다.
등록 정보(단계 4)도 구성했는지 확인하세요:
세금이 자동으로 징수되었음을 보여주는 Stripe의 Discourse Subscription Plugin 거래 예시입니다:
설정
| 이름 | 설명 |
|---|---|
| discourse subscriptions enabled | Discourse Subscriptions 플러그인을 활성화합니다. |
| discourse subscriptions extra nav subscribe | 기본 내비게이션에 구독 버튼을 표시합니다. |
| discourse subscriptions public key | Stripe 공개 키 |
| discourse subscriptions secret key | Stripe 비밀 키 |
| discourse subscriptions webhook secret | Stripe Webhook Secret |
| discourse subscriptions currency | 기본 통화 코드. 구독 플랜 생성 시 덮어쓸 수 있습니다. |
| discourse subscriptions campaign enabled | 이 커뮤니티를 재정적으로 지원하는 것을 홍보하는 캠페인 배너를 활성화합니다. |
| discourse subscriptions campaign goal | 지원 캠페인의 수치 목표(구독자 수 또는 모금 금액). |
| discourse subscriptions campaign type | 실행할 캠페인 유형을 선택합니다(구독자 수 또는 월간 모금 금액). |
| discourse subscriptions campaign banner location | 캠페인 배너의 위치를 선택합니다(상단 또는 사이드바). |
| discourse subscriptions campaign banner bg image | 캠페인 배너 배경으로 사용할 맞춤 이미지를 업로드합니다. |
| discourse subscriptions campaign banner shadow color | 캠페인 배너 드롭 섀도우의 색상을 선택합니다. |
| discourse subscriptions campaign show contributors | 구독 제품 구매자의 아바타를 표시합니다. |
| discourse subscriptions campaign product | 캠페인에서 버튼을 클릭할 때 지원자에게 보낼 Stripe 제품 ID. 이 설정이 비어 있으면 지원자는 메인 제품 페이지로 이동합니다. |
| discourse subscriptions campaign grant | 사용자에게 1개월 무료 구독을 부여합니다. |
| discourse subscriptions pricing table id | 임베드 코드에서 가져온 Stripe 가격 테이블 ID |
| discourse subscriptions pricing table enabled | Stripe 가격 테이블 사용을 활성화하고 기존 구독 페이지를 대체합니다. |
| discourse_subscriptions_enable_automatic_tax | 판매세가 징수되는지 토글합니다. Stripe에서 일부 설정이 필요합니다. |
| discourse_subscriptions_enable_verbose_logging | 디버깅을 돕기 위해 더 자세한 로깅을 활성화합니다. 프로덕션에서 영구적으로 활성화해 두지 마세요. |
우리가 호스팅을 담당하나요? 이 플러그인은 Pro, Business, Enterprise 호스팅 플랜에서 사용할 수 있습니다. Subscriptions | Discourse - Civilized Discussion















