선택적으로 역할을 부여하여 Discord 서버에 결제 고객을 추가하고, 액세스 권한이 종료되면 자동으로 제거합니다.
Discord entitlement는 결제 고객을 Discord 서버에 추가하고 역할을 부여할 수 있습니다. 고객은 구독이 활성화되거나 일회성 결제가 성공한 후 Discord 계정을 연결합니다. 취소 또는 환불 등으로 grant가 취소되면 Dodo Payments가 역할을 제거하고 서버에서 고객을 제거합니다.
Discord가 새 탭에서 열립니다. 로그인하고 액세스를 제한할 서버를 선택한 다음 해당 서버에서 bot의 권한을 승인합니다: Manage Roles, Kick Members 및 Create Invite.
Discord OAuth: pick the server to add the bot to.
Discord OAuth: confirm the bot's permissions on the server.
Discord가 다시 리디렉션하면 확인 페이지에 서버가 연결되었다는 메시지가 표시됩니다.
Server connected. Return to the Dodo Payments dashboard to continue.
3
Pick a Server and Role
대시보드로 돌아와 연결한 Server를 선택합니다. 전달 시 역할을 부여하려면 Role에서 역할을 선택합니다. 서버 멤버십만 부여하려면 Role을 No specific role로 둡니다. entitlement의 Name을 입력하고 Create Entitlement를 클릭합니다.
Dodo Payments가 Pending 상태로 grant를 생성합니다. Dodo Payments는 즉시 Discord authorization URL을 생성하려고 시도하고 이를 oauth_url에 저장합니다. 이 작업이 실패하면 고객이 accept flow를 시작할 때까지 oauth_url는 null 상태로 유지됩니다.
고객이 Discord에서 Dodo Payments를 authorize합니다. 봇이 고객을 서버에 추가하고 구성된 role을 할당하면 grant가 Delivered 상태로 전환됩니다.
grant가 revoked되면(구독이 cancelled, paused, put on hold 상태가 되거나 만료된 경우, 일회성 결제가 refunded된 경우 또는 사용자가 grant를 revoke한 경우) 봇이 role을 제거하고 서버에서 고객을 제거합니다. grant가 Revoked 상태로 전환됩니다.
인증 링크는 생성 후 30분이 지나면 만료됩니다. 이후 고객이 Customer Portal로 돌아오면 Dodo Payments가 새 링크를 생성합니다. 고객이 직접 서버를 나가면 Dodo Payments가 revocation_reason: platform_external와 함께 해당 grant를 취소합니다.
Dodo Payments bot의 역할을 부여하려는 역할보다 위에 배치하세요. Discord에서는 bot이 자체 최고 역할과 같거나 그보다 높은 역할을 부여할 수 없습니다. bot 및 통합 역할과 같은 관리형 역할은 부여할 수 없습니다.
// client is a *dodopayments.Client, for example from// dodopayments.NewClient(option.WithEnvironmentTestMode()); ctx is a context.Context.client.Entitlements.New(ctx, dodopayments.EntitlementNewParams{ Name: dodopayments.F("Patrons Discord Role"), IntegrationType: dodopayments.F(dodopayments.EntitlementIntegrationTypeDiscord), IntegrationConfig: dodopayments.F[dodopayments.IntegrationConfigUnionParam]( dodopayments.IntegrationConfigDiscordConfigParam{ GuildID: dodopayments.F("123456789012345678"), RoleID: dodopayments.F("987654321098765432"), }, ),})
entitlement_grant.created가 status: "Pending"와 함께 발생합니다. oauth_url에 authorization URL이 이미 저장되어 있을 수 있습니다. 값이 null인 경우 고객이 Customer Portal에서 accept flow를 시작하면 값이 채워집니다.
고객이 서버에 참여하고 role이 할당되면 entitlement_grant.delivered가 발생합니다.
고객이 Discord 인증을 완료할 때까지 grant는 Pending 상태로 유지됩니다. 대시보드에서 entitlement를 열고 고객의 grant를 확인하세요. 여전히 Pending라면 고객에게 Customer Portal을 열고 Discord entitlement에서 Connect를 클릭하도록 안내하세요.
Grant moves to failed with permission errors
Dodo Payments 봇이 여전히 서버에 있고 Manage Roles 권한을 보유하며, 할당되는 role보다 상위에 있는지 확인하세요. 봇이 서버에서 제거되면 Dodo Payments는 해당 서버의 pending 및 delivered grant를 revoke합니다. entitlement를 다시 저장해도 봇의 권한이 아니라 entitlement의 설정만 확인합니다. 권한을 수정한 후 고객에게 Customer Portal을 열고 Discord entitlement의 Connect를 클릭하여 grant를 다시 시도하도록 안내하세요.
Customer cancelled but still has the role
취소하면 역할이 제거되고 서버에서 고객이 제거됩니다. grant에 Revoked가 표시되지만 고객이 여전히 서버에 있다면 bot에 Manage Roles 및 Kick Members 권한이 있고 해당 역할보다 위에 있는지 확인하세요. 고객의 Discord 앱에 여전히 역할이 표시되면 새로 고치도록 안내하세요. 서버 측 상태를 기준으로 판단합니다.