Discord entitlement는 유료 고객의 구독이 활성화되거나 일회성 구매가 승인되는 즉시 고객을 서버에 추가하고(선택적으로 역할도 할당), 취소, 환불 및 플랜 변경이 발생하면 역할을 자동으로 회수합니다.
제공되는 기능
- 고객은 delivery email 또는 customer portal의 OAuth 링크를 통해 자신의 Discord 계정을 연결합니다.
- 고객이 인증하면 Dodo Payments 고객을 서버에 추가하거나(기존 멤버십이 있으면 이를 찾음) 구성한 역할을 할당합니다.
- 특정 역할을 선택하지 않은 경우에는 서버 멤버십만 부여됩니다.
Discord 연결
1
Open Entitlements
Dodo Payments dashboard에서 Entitlements로 이동하고 **+**를 클릭하여 새 entitlement를 시작합니다.
2
Pick Discord
integration으로 Discord Access를 선택합니다. 아직 비즈니스에 Discord를 연결하지 않았다면 Connect Discord하라는 메시지가 표시됩니다.
클릭하면 새 탭에서 Discord가 열립니다. 로그인하고 액세스를 제한할 서버를 선택한 다음, 해당 서버에서 bot에 필요한 권한(Manage Roles, Kick Members, Create Invite)을 확인합니다.

Discord가 다시 리디렉션되면 서버가 연결되었다는 확인 메시지가 표시됩니다.

Connect Discord prompt before the OAuth handoff.


Discord OAuth: pick the server, then confirm the bot's permissions on it.

Server connected — return to the Dodo Payments dashboard to continue.
3
Pick a server and role
대시보드로 돌아와 방금 연결한 server(guild)를 선택합니다. 선택적으로 delivery 시 할당할 role을 지정하거나, 서버 멤버십만 부여하려면 비워 둡니다. entitlement에 name을 입력하고 Create Entitlement를 클릭합니다.

4
Save the entitlement
entitlement를 저장합니다. 이제 모든 product에 연결할 수 있습니다.
고객 흐름
- 고객이 checkout을 완료합니다.
- Dodo Payments이
pending상태이고 Discord를 가리키는oauth_url가 포함된 grant를 생성합니다. - 고객은 “Join the Discord” 버튼(OAuth 링크)이 포함된 email을 받습니다. 이 링크는 customer portal에서도 확인할 수 있습니다.
- 고객이 인증하면 bot이 고객을 서버에 추가하고 구성된 역할을 할당합니다. grant는
delivered로 이동합니다. - 구독이 취소, 일시 중지 또는 만료되거나 merchant가 수동으로 회수하면 bot이 역할을 제거하고 grant는
revoked로 이동합니다.
필수 구성
API로 생성
Webhooks
Discord grant를 추적하려면entitlement_grant.* webhook events를 구독합니다:
entitlement_grant.created는 고객이 인증할 수 있도록status: "pending"및oauth_url와 함께 발생합니다.entitlement_grant.delivered는 역할이 할당되면 발생합니다.entitlement_grant.revoked는 역할이 제거되면 발생합니다.
문제 해결
Customer never sees the role assigned
Customer never sees the role assigned
고객이 OAuth flow를 완료할 때까지 grant는
pending 상태입니다. entitlement의 grants 목록을 확인하고 고객이 OAuth 링크를 클릭했는지 확인합니다. 필요한 경우 delivery email을 다시 보내세요.Grant moves to failed with permission errors
Grant moves to failed with permission errors
Dodo Payments bot이 서버에 계속 존재하고
Manage Roles permission을 보유하며 할당할 역할보다 위에 배치되어 있는지 확인하세요. entitlement를 다시 저장하면 validation이 다시 실행됩니다.Customer cancelled but still has the role
Customer cancelled but still has the role
Discord는 역할 제거를 즉시 전파하지만 고객의 로컬 Discord client에는 캐시가 남아 있을 수 있습니다. 고객이 다시 연결하거나 새로 고침해야 합니다. 서버 측 상태는 올바릅니다.