메인 콘텐츠로 건너뛰기
자격 승인으로 성공적인 결제 또는 활성 구독을 실제 접근 권한으로 바꾸세요: 고객의 받은 편지함에 있는 라이선스 키, 애플리케이션이 확인하는 기능 플래그, Discord 역할, GitHub 저장소, Notion 템플릿, Framer 리믹스 링크, Telegram 채팅 초대 또는 다운로드 가능한 파일 번들. Dodo Payments는 결제 생명주기가 변경될 때 자동으로 그 접근 권한을 발급, 추적, 취소합니다.
Entitlements 대시보드, 왼쪽에는 Entitlements 목록이, 오른쪽에는 부여 활동이 표시됨

Entitlements란 무엇인가요?

Entitlement는 고객에게 제공하는 항목의 재사용 가능한 정의입니다: Pro 라이선스 키, “Patrons” Discord 역할, 프라이빗 GitHub 저장소에 대한 액세스, 다운로드 가능한 전자책 번들. Dodo Payments는 entitlements를 제품에 연결한 후 나머지를 처리합니다. 고객이 제품을 구매하면 Dodo Payments는 grant를 생성합니다. 이는 해당 entitlement의 단일 고객 발급을 의미합니다. Grant는 상태 변화를 겪습니다: 배송이 진행 중일 때는 pending, 고객이 액세스할 수 있게 되면 delivered, 배송이 완료되지 않을 경우 failed, 액세스가 철회되면 revoked.
Entitlements는 fulfillment(고객이 액세스 가능한가?)를 통제하고, Credits는 consumption(얼마나 사용할 수 있는가?)을 통제합니다. 둘 다 같은 제품에 첨부할 수 있습니다. 크레딧에 대한 자세한 내용은 Credit-Based Billing을 참조하세요.

사용 가능한 통합

Dodo Payments는 각 entitlement를 전용 통합을 통해 제공합니다. 판매하는 항목에 맞는 통합을 선택하세요.

License Keys

고유한 라이선스 키를 생성하고 활성화 제한 및 만료를 설정할 수 있습니다. 소프트웨어, 플러그인 및 CLI에 최적입니다.

Digital Files

사전 서명된 다운로드 URL과 선택적 지침을 통해 다운로드 가능한 파일(전자책, 템플릿, 미디어)을 제공합니다.

Feature Flags

구매와 함께 애플리케이션의 기능을 잠금 해제하세요. 즉시 제공되고, API를 통해 확인되며, 취소 시 자동으로 취소됩니다.

Discord

고객이 구매할 때 Discord 서버에 역할을 부여하세요. 취소 시 자동으로 취소됩니다.

GitHub

선택한 권한 수준으로 고객을 비공개 저장소의 협력자로 추가하세요.

Telegram

구매 후 고객을 비공개 Telegram 채팅 또는 채널에 추가하세요.

Framer

지불 고객을 위한 Framer 템플릿 리믹스 링크를 잠금 해제하세요.

Notion

구매 시 고객의 워크스페이스에 Notion 템플릿 복제.

승인 방식

승인은 이미 웹후크로 받는 동일한 결제와 구독 이벤트에 의해 구동됩니다. 구매에 대해 승인 API를 직접 호출할 필요가 없습니다. Dodo Payments는 기본 결제 생명주기에 따라 자동으로 승인과 취소를 생성합니다.

승인 생명주기

1

Created

결제가 완료되거나 구독이 활성화되면 승인이 생성됩니다. 라이선스 키와 기능 플래그는 즉시 delivered로 이동합니다. 다른 모든 통합은 pending에서 시작됩니다. OAuth 기반 통합(Discord, GitHub, Notion)은 고객이 동의를 완료하기 위해 방문해야 하는 oauth_url를 포함합니다. 플랫폼 직접 통합(Telegram, Framer, 디지털 파일)은 제공이 준비되는 동안에만 잠깐 pending에 있지만, 제공이 완료되면 delivered로 전환됩니다.
2

Delivered

전달이 완료되면(라이선스 키 생성, 역할 할당, 저장소 접근 허용, 파일 링크 해결, OAuth 완료) 승인은 delivered로 이동하고 delivered_at가 설정됩니다.
3

Failed

통합 호출이 재시도 불가 오류를 반환하면 (OAuth 토큰 취소, 권한 거부, 파일이 더 이상 존재하지 않음), 승인은 failed로 이동합니다. error_codeerror_message 필드가 이유를 기록합니다.
4

Revoked

접근이 철회될 때 (구독 취소, 환불 발행 또는 상인에 의한 철회), 승인은 revoked로 이동합니다. revocation_reason 필드는 트리거를 기록합니다.

이벤트별 승인 동작

이벤트동작
payment.succeeded (일회성 결제)첨부된 자격에 대해 하나의 승인을 발급합니다.
payment.succeeded (구독 연결된 결제)작업 안 함. 승인은 아래의 구독 이벤트에 의해 추진됩니다.
subscription.active아직 없는 첨부된 자격에 대한 승인을 발급합니다. 동일한 구독에 대해 이전에 취소된 승인도 재발급합니다.
subscription.renewed작업 안 함. 기존 승인은 갱신을 통해 지속됩니다.
subscription.on_hold모든 제공 및 대기 중인 승인을 취소합니다. revocation_reason: subscription_on_hold.
subscription.cancelled모두 취소합니다. revocation_reason: subscription_cancelled.
subscription.expired모두 취소합니다. revocation_reason: subscription_expired.
subscription.plan_changed모든 현재 승인을 취소한 후 새로운 계획의 자격에 대한 승인을 발급합니다. revocation_reason: plan_changed.
refund.succeeded (일회성 결제)해당 결제에 대한 승인을 취소합니다. revocation_reason: refund.
수동 API 취소revocation_reason: manual로 취소합니다. 수동 취소는 구독 갱신 시 자동 재발급되지 않습니다.
라이선스 키 비활성화라이선스 키 승인의 경우, 기본 키 비활성화는 revocation_reason: license_key_disabled로 승인을 취소합니다. 키가 재활성화되면 승인은 자동으로 재활성화됩니다.
플랫폼 드리프트 감지통합의 플랫폼 측면이 동기화에서 이탈한 경우(수동으로 제거된 Discord 역할, GitHub 앱이 저장소 접근을 잃음, 또는 대조 패스가 누락된 대상을 감지함), 승인은 revocation_reason: platform_external로 취소됩니다. 플랫폼 문제가 해결되지 않은 상태에서 구독 갱신 시 자동 재발급되지 않습니다.
구독 기반 승인은 (entitlement, customer, subscription)마다 비절개적입니다; 갱신 및 재활성화로 인해 중복 승인이 생성되지 않습니다. 일회성 승인은 (entitlement, customer, payment)마다 비절개적입니다.

첫 번째 자격 만들기

1

Open Entitlements

Dodo Payments 대시보드의 자격으로 이동하여 새 자격을 만들기 위해 **+**를 클릭하세요.
2

Pick an integration

통합 유형을 선택하세요: 라이선스 키, 디지털 파일, 기능 플래그, Discord, GitHub, Telegram, Framer, 또는 Notion. 플랫폼 통합의 경우, 아직 연결하지 않았다면 먼저 계정을 연결하세요.
3

Configure delivery

통합 고유 필드를 입력하세요. 예를 들어, GitHub는 저장소와 권한 수준을 요청하고, Discord는 서버와 선택적 역할을 요청하며, 라이선스 키는 활성화 한도와 만료 날짜를 요청합니다.
통합 선택기 및 구성 필드가 있는 새 자격 양식
4

Save

자격을 저장하세요. 이제 이를 어떤 제품에도 첨부할 수 있습니다.

제품에 자격 첨부

제품을 열고 고급 설정 → 자격 및 크레딧을 확장하여, 제품이 구매될 때 제공되어야 할 자격을 선택합니다. 한 제품은 여러 자격을 동시에 제공할 수 있습니다. 예를 들어, Pro 플랜에는 라이선스 키, GitHub 접근 및 Discord 역할이 포함될 수 있습니다.
사용 가능한 각 자격에 대한 선택란이 있는 제품 자격 선택 패널

고객 경험

이메일 및 고객 포털

고객은 구매 후 제품의 자격에 적용되는 라이선스 키, 다운로드 링크, OAuth 초대 링크 또는 플랫폼 초대가 포함된 전달 이메일을 받습니다. 동일한 세부 정보는 주문 기록 하의 고객 포털에서 무기한으로 제공됩니다.

OAuth 기반 전달

Discord, GitHub, Notion 구독자 접근은 고객이 Dodo Payments에 그들에게 접근을 제공하도록 승인해야 합니다. 이러한 승인들은 고객이 이메일이나 고객 포털의 링크를 사용하여 OAuth 흐름을 완료할 때까지 pending 상태로 유지됩니다. 고객이 승인하면, 승인은 delivered로 이동하고 플랫폼 접근이 즉시 제공됩니다.

취소

취소된 승인은 플랫폼 수준에서 제거됩니다: Discord 역할이 제거되고, GitHub 협력자가 제거되고, 라이선스 키가 비활성화됩니다. 고객은 고객 포털에서 변경 사항을 확인할 수 있습니다.
디지털 파일의 경우, 취소는 서명된 URL에 대한 접근을 앞으로 제거하지만 고객이 이미 다운로드한 복사본을 무효화하지는 않습니다. 따라서 계획 내용을 적절히 제한하세요.

승인 관리

대시보드에서 자격을 열면 해당 승인들을 볼 수 있습니다. 승인 세부 정보 패널에는 총 승인 수, 상태 필터, 고객 정보, 전달 날짜, 및 취소 조치가 표시됩니다. 승인을 프로그래밍 방식으로 관리할 수 있습니다:
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env['DODO_PAYMENTS_API_KEY'],
});

// List grants for an entitlement
const grants = await client.entitlements.grants.list('ent_abc123', {
  status: 'Delivered',
});

// Revoke a single grant
await client.entitlements.grants.revoke('grant_xyz789', {
  id: 'ent_abc123',
});
client.entitlements.grants.list(
    "ent_abc123",
    status="Delivered",
)

client.entitlements.grants.revoke(
    "grant_xyz789",
    id="ent_abc123",
)
grants, _ := client.Entitlements.Grants.List(
  ctx, "ent_abc123",
  dodopayments.EntitlementGrantListParams{Status: dodopayments.F("delivered")},
)

_, _ = client.Entitlements.Grants.Revoke(ctx, "grant_xyz789", "ent_abc123")

API 관리

Create Entitlement

어떤 통합 유형이든 새 자격을 만듭니다.

List Entitlements

통합 유형으로 필터링하여 자격 목록을 표시합니다.

Get Entitlement

자격 및 그 해결된 구성을 검색합니다.

Update Entitlement

이름, 설명, 또는 통합 구성을 업데이트합니다.

Delete Entitlement

소프트 삭제 자격; 기존 승인에 영향 없음.

Upload File

디지털 파일 자격에 파일 업로드 (최대 500 MiB).

List Grants

상태 및 고객 필터가 있는 자격의 모든 승인을 나열합니다.

Revoke Grant

단일 승인을 수동으로 취소합니다.

웹후크

Dodo Payments는 승인 생명주기에 대해 네 개의 웹후크 이벤트를 발생시킵니다. 이 이벤트에 가입하여 각 고객이 접근할 수 있는 내용을 애플리케이션과 동기화하세요.
이벤트발생 시점
entitlement_grant.created새 승인이 생성됩니다. 라이선스 키 승인은 delivered에 도착합니다; 다른 통합은 pending에 도착하고 플랫폼 호출이 성공하면(또는 OAuth 기반 통합의 경우 고객이 승인하면) delivered로 전환됩니다.
entitlement_grant.delivered승인 상태가 전달로 전환됩니다. 고객이 이제 접근이 가능합니다.
entitlement_grant.failed승인을 전달할 수 없습니다. error_codeerror_message를 확인하세요.
entitlement_grant.revoked접근이 철회되었습니다. revocation_reason를 확인하세요.

Entitlement Grant Webhook Payloads

전체 페이로드 스키마, 샘플 이벤트 및 revocation_reason 참조를 보세요.

모범 사례

  • 전달 채널별 자격을 사용하세요. 동일한 Discord 자격을 서로 다른 역할의 의도를 가진 제품에 공유하지 마세요; 역할별로 하나씩 만들어 철회를 깔끔하게 하세요.
  • 먼저 테스트 모드에서 테스트하세요. 자격을 만들고, 테스트 제품에 첨부하고, 체크아웃을 실행하여 승인이 pending → delivered로 전환되는 것을 확인하세요. 테스트 구독 취소가 승인을 철회하는지 확인하세요.
  • entitlement_grant.delivered, 아닌 payment.succeeded를 듣습니다. 결제는 이행이 완료되기 전에 성공할 수 있습니다(OAuth 흐름의 경우 특히). 전달된 이벤트 전에 종속 기능을 자체 시스템에서 잠금 해제하지 마세요.
  • entitlement_grant.failed를 실행 가능하게 취급합니다. 실패한 승인은 고객이 비용을 지불했으나 접근을 받지 못했다는 것을 의미합니다. 이를 지원 팀에 알리거나 재승인을 트리거하세요.
  • revocation_reason를 유지 흐름에 매핑합니다. subscription_on_hold 철회는 복구 가능합니다(고객이 카드를 업데이트할 수 있습니다). manual 철회는 의도적입니다. 이들을 고객 커뮤니케이션에서 다르게 처리하세요.
마지막 수정일 2026년 7월 9일