Automatisches Bereitstellen von Lizenzschlüsseln, herunterladbaren Dateien, Feature Flags und Zugriff auf Plattformen wie Discord, GitHub, Telegram, Framer und Notion, wenn Kunden bezahlen.
Berechtigungen verwandeln eine erfolgreiche Zahlung oder ein aktives Abonnement in echten Zugriff: ein Lizenzschlüssel im Posteingang Ihres Kunden, ein Feature Flag, das Ihre App überprüft, eine Discord-Rolle, ein GitHub-Repository, eine Notion-Vorlage, ein Framer-Remix-Link, eine Telegram-Chat-Einladung oder ein herunterladbares Dateipaket. Dodo Payments stellt diesen Zugriff automatisch aus, verfolgt und widerruft ihn, wenn sich der Zahlungslebenszyklus ändert.
The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.
Eine Berechtigung ist eine wiederverwendbare Definition von etwas, das Sie einem Kunden liefern: ein Pro-Lizenzschlüssel, eine “Patrons”-Discord-Rolle, Zugang zu Ihrem privaten GitHub-Repository, ein herunterladbares eBook-Paket. Sie fügen Produkte Berechtigungen hinzu, und Dodo Payments kümmert sich um den Rest.Wenn ein Kunde das Produkt kauft, erstellt Dodo Payments eine Zuweisung, die Ausgabe dieser Berechtigung an einen einzelnen Kunden. Zuweisungen durchlaufen eine kleine Anzahl von Status: pending, während die Lieferung im Gange ist, delivered, sobald der Kunde Zugang hat, failed, wenn die Lieferung nicht abgeschlossen werden konnte, und revoked, wenn der Zugang entzogen wird.
Berechtigungen bestimmen die Erfüllung (hat der Kunde Zugang?). Credits bestimmen den Verbrauch (wie viel davon können sie nutzen?). Beide können mit demselben Produkt verbunden werden. Siehe guthabenbasierte Abrechnung für Credits.
Berechtigungen werden von denselben Zahlungs- und Abonnementereignissen angetrieben, die Sie bereits als Webhooks erhalten. Sie müssen die Grant-API nicht selbst für Käufe aufrufen. Dodo Payments erstellt und widerruft Berechtigungen basierend auf dem zugrunde liegenden Zahlungslebenszyklus automatisch.
Eine Berechtigung wird erstellt, wenn eine Zahlung abgeschlossen oder ein Abonnement aktiv wird. Lizenzschlüssel und Feature-Flags springen direkt zu delivered. Alle anderen Integrationen beginnen in pending. Auf OAuth basierende Integrationen (Discord, GitHub, Notion) beinhalten einen oauth_url, den der Kunde besuchen muss, um die Zustimmung abzuschließen. Plattformdirekte Integrationen (Telegram, Framer, Digitale Dateien) verbleiben nur kurz in pending, während die Bereitstellung erfolgt, und wechseln dann zu delivered.
2
Delivered
Sobald die Bereitstellung abgeschlossen ist (Lizenzschlüssel generiert, Rolle zugewiesen, Repository-Zugriff gewährt, Dateilinks gelöst, OAuth abgeschlossen), wechselt die Berechtigung zu delivered und delivered_at wird gesetzt.
3
Failed
Wenn der Integrationsaufruf einen nicht erneut versuchbaren Fehler zurückgibt (zum Beispiel widerrufenes OAuth-Token, verweigerte Berechtigung, Datei existiert nicht mehr), wechselt die Berechtigung zu failed. Die Felder error_code und error_message erfassen den Grund.
4
Revoked
Wenn der Zugriff entzogen wird (Abonnement gekündigt, Rückerstattung ausgegeben oder vom Händler initiierter Widerruf), wechselt die Berechtigung zu revoked. Das Feld revocation_reason protokolliert den Auslöser.
Erteilen Sie eine Berechtigung pro angehängtem Berechtigungsnachweis.
payment.succeeded (Abonnement-gebundene Zahlung)
Keine Aktion. Berechtigungen werden durch das folgende Abonnementereignis ausgelöst.
subscription.active
Erteilen Sie Berechtigungen für alle angehängten Berechtigungsnachweise, die noch keine haben. Gewähren Sie alle zuvor für dasselbe Abonnement widerrufenen Berechtigungen erneut.
subscription.renewed
Keine Aktion. Bestehende Berechtigungen bestehen über Erneuerungen hinaus.
subscription.on_hold
Widerrufen Sie alle ausgelieferten und ausstehenden Berechtigungen. revocation_reason: subscription_on_hold.
subscription.cancelled
Widerrufen Sie alle. revocation_reason: subscription_cancelled.
subscription.expired
Widerrufen Sie alle. revocation_reason: subscription_expired.
subscription.plan_changed
Widerrufen Sie alle aktuellen Berechtigungen und erteilen Sie dann Berechtigungen für die neuen Planberechtigungen. revocation_reason: plan_changed.
refund.succeeded (Einmalzahlung)
Widerrufen Sie Berechtigungen für diese Zahlung. revocation_reason: refund.
Manueller API-Widerruf
Widerrufen Sie mit revocation_reason: manual. Manuelle Widerrufe werden bei Abonnementerneuerung nicht automatisch erneut gewährt.
Lizenzschlüssel deaktiviert
Für Lizenzschlüsselberechtigungen widerruft das Deaktivieren des zugrunde liegenden Schlüssels die Berechtigung mit revocation_reason: license_key_disabled. Die Berechtigung wird automatisch wieder aktiviert, wenn der Schlüssel wieder aktiviert wird.
Plattform-Abweichung erkannt
Wenn die Plattformseite einer Integration aus dem Gleichgewicht gerät (eine Discord-Rolle manuell entfernt wurde, die GitHub-App den Repository-Zugriff verloren hat oder ein Abgleichvorgang ein fehlendes Ziel erkannt hat), wird die Berechtigung mit revocation_reason: platform_external widerrufen. Wird bei Abonnementerneuerung nicht automatisch erneut gewährt, bis das zugrunde liegende Plattformproblem behoben ist.
Abonnementgetriebene Berechtigungen sind idempotent pro (entitlement, customer, subscription); Erneuerungen und Reaktivierungen erzeugen keine doppelten Berechtigungen. Einmalige Berechtigungen sind idempotent pro (entitlement, customer, payment).
Gehen Sie in Ihrer Dodo Payments-Dashboard zu Berechtigungen und klicken Sie auf +, um ein neues Berechtigungsnachweis zu erstellen.
2
Pick an integration
Wählen Sie den Integrationstyp: Lizenzschlüssel, Digitale Dateien, Feature Flag, Discord, GitHub, Telegram, Framer oder Notion. Für Plattformintegrationen verbinden Sie zuerst Ihr Konto, wenn Sie dies nicht bereits getan haben.
3
Configure delivery
Füllen Sie die integrationsspezifischen Felder aus. Zum Beispiel fragt GitHub nach einem Repository und einer Berechtigungsebene; Discord fragt nach einem Server und einer optionalen Rolle; der Lizenzschlüssel fragt nach Aktivierungslimits und Ablaufdatum.
Creating a GitHub entitlement. Each integration shows the fields it needs.
4
Save
Speichern Sie das Berechtigungsnachweis. Sie können es jetzt jedem Produkt zuordnen.
Öffnen Sie ein Produkt, erweitern Sie Erweiterte Einstellungen → Berechtigungen & Credits und wählen Sie die Berechtigungen aus, die geliefert werden sollen, wenn das Produkt gekauft wird. Ein einzelnes Produkt kann mehrere Berechtigungen gleichzeitig bereitstellen. Zum Beispiel kann ein Pro-Plan einen Lizenzschlüssel, GitHub-Zugriff und eine Discord-Rolle enthalten.
Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.
Kunden erhalten nach dem Kauf eine Liefer-E-Mail, die den Lizenzschlüssel, Download-Links, OAuth-Einladungslinks oder die Plattform-Einladung enthält, je nachdem, welche Berechtigungen auf dem Produkt angewendet werden. Dieselben Details bleiben im Kundenportal unter ihrer Bestellhistorie unbegrenzt verfügbar.
Zugriffe für Discord, GitHub und Notion-Abonnenten erfordern, dass der Kunde Dodo Payments autorisiert, ihm/ihr Zugriff zu gewähren. Diese Berechtigungen verbleiben im Status pending, bis der Kunde den OAuth-Fluss mit dem Link aus seiner E-Mail oder dem Kundenportal abschließt. Sobald sie autorisieren, wechselt die Berechtigung zu delivered und der Plattformzugriff wird sofort bereitgestellt.
Widerrufene Berechtigungen werden auf Plattformebene entfernt: die Discord-Rolle wird entfernt, der GitHub-Mitarbeiter wird entfernt, der Lizenzschlüssel wird deaktiviert. Kunden sehen die Änderung im Kundenportal widergespiegelt.
Für Digitale Dateien entfernt der Widerruf den Zugriff auf die vorgeschriebenen URLs für die Zukunft, invalidiert jedoch nicht die Kopien, die ein Kunde bereits heruntergeladen hat. Planen Sie die Inhaltsbeschränkung entsprechend.
Öffnen Sie ein Berechtigungsnachweis von Ihrem Dashboard aus, um seine Berechtigungen zu sehen. Das Detailfenster der Berechtigung zeigt die Gesamtanzahl der Berechtigungen, Statusfilter, Kundeninformationen, Lieferdaten und eine Widerrufsaktion.Sie können Berechtigungen auch programmgesteuert verwalten:
import DodoPayments from 'dodopayments';const client = new DodoPayments({ bearerToken: process.env['DODO_PAYMENTS_API_KEY'],});// List grants for an entitlementconst grants = await client.entitlements.grants.list('ent_abc123', { status: 'Delivered',});// Revoke a single grantawait client.entitlements.grants.revoke('grant_xyz789', { id: 'ent_abc123',});
Dodo Payments löst vier Webhook-Ereignisse für den Berechtigungslebenszyklus aus. Abonnieren Sie diese Ereignisse, um Ihre Anwendung mit dem in Einklang zu bringen, worauf jeder Kunde Zugriff hat.
Ereignis
Wird ausgelöst, wenn
entitlement_grant.created
Ein neuer Berechtigung erstellt wird. Lizenzschlüssel-Berechtigungen kommen delivered an; jede andere Integration kommt pending an und wechselt zu delivered, sobald der Plattformaufruf erfolgreich ist (oder, für OAuth-basierte Integrationen, sobald der Kunde autorisiert).
entitlement_grant.delivered
Die Berechtigung wird als geliefert gekennzeichnet. Der Kunde hat jetzt Zugriff.
entitlement_grant.failed
Die Berechtigung konnte nicht geliefert werden. Überprüfen Sie error_code und error_message.
entitlement_grant.revoked
Der Zugriff wurde entzogen. Überprüfen Sie revocation_reason.
Entitlement Grant Webhook Payloads
Sehen Sie sich das vollständige Payload-Schema, Beispielereignisse und revocation_reason-Referenz an.
Verwenden Sie pro Bereitstellungskanal ein Berechtigungsnachweis. Teilen Sie keine einzelne Discord-Berechtigung über Produkte mit unterschiedlichen Rollenabsichten; erstellen Sie eine pro Rolle für saubereren Widerruf.
Testen Sie zuerst im Testmodus. Erstellen Sie die Berechtigung, fügen Sie sie einem Testprodukt hinzu, führen Sie eine Checkout durch und beobachten Sie, wie die Berechtigung durch pending → delivered wechselt. Bestätigen Sie, dass die Kündigung des Testabonnements die Berechtigung widerruft.
Hören Sie auf entitlement_grant.delivered, nicht auf payment.succeeded. Eine Zahlung kann erfolgreich sein, bevor die Erfüllung abgeschlossen ist (besonders bei OAuth-Flows). Warten Sie auf das Lieferereignis, bevor Sie abhängige Funktionen in Ihren eigenen Systemen entsperren.
Behandeln Sie entitlement_grant.failed als handlungsrelevant. Eine fehlgeschlagene Berechtigung bedeutet, dass ein Kunde bezahlt hat, aber keinen Zugriff erhalten hat. Zeigen Sie diese Ihrem Support-Team oder lösen Sie eine erneute Grant-Aktion aus.
Karte revocation_reason zu Ihren Retentionsflüssen ab. Eine subscription_on_hold-Widerruf ist rückholbar (der Kunde könnte seine Karte aktualisieren). Eine manual-Widerruf ist beabsichtigt. Behandeln Sie sie unterschiedlich in der Kundenkommunikation.