Skip to main content
Die @dodopayments/convex-Komponente fügt Dodo Payments zu deinem Convex-Backend hinzu. Sie stellt eine checkout-Funktion bereit, die Checkout-Sessions erstellt, eine customerPortal-Funktion, die das Customer Portal für den angemeldeten Benutzer öffnet, sowie createDodoWebhookHandler, das Webhooks in einer Convex-HTTP-Action verifiziert. Convex 1.26 oder höher ist erforderlich.

Checkout Function

Erstelle Checkout-Sessions aus Convex-Actions.

Customer Portal

Ermögliche Kunden, ihre Abonnements und Daten zu verwalten.

Webhooks

Empfange und verarbeite Dodo Payments-Webhook-Events.

Installation

1

Install the Package

Führe diesen Befehl im Stammverzeichnis deines Projekts aus:
2

Add Component to Convex Config

Füge die Dodo Payments-Komponente zu deiner Convex-Konfiguration hinzu:
Nachdem du convex.config.ts bearbeitet hast, führe npx convex dev einmal aus, um die Typen zu generieren.
3

Set Up Environment Variables

Lege Umgebungsvariablen in deinem Convex-Dashboard unter Settings → Environment Variables fest. Um das Dashboard zu öffnen, führe Folgendes aus:
Füge diese Umgebungsvariablen hinzu:
  • DODO_PAYMENTS_API_KEY: Dein Dodo Payments API-Key aus Developer → API Keys im Dodo Payments-Dashboard.
  • DODO_PAYMENTS_ENVIRONMENT: test_mode oder live_mode.
  • DODO_PAYMENTS_WEBHOOK_SECRET: Dein Webhook-Secret aus Developer → Webhooks. Für die Webhook-Verarbeitung erforderlich. Der Webhook-Handler liest genau diesen Variablennamen.
Speichere Secrets als Convex-Umgebungsvariablen. Convex-Backend-Funktionen lesen keine .env-Dateien. Committe Secrets niemals in die Versionsverwaltung.

Beispiele für die Komponenteneinrichtung

1

Create Internal Query

Erstelle eine interne Query, die einen Kunden anhand der Auth-ID in deiner Datenbank findet. Die identify-Funktion im nächsten Schritt verwendet sie, um die Dodo Payments-Kunden-ID des angemeldeten Benutzers für das Kundenportal abzurufen.
Die Komponente definiert kein Schema. Bevor du diese Query verwendest, definiere eine customers-Tabelle mit einem by_auth_id-Index in convex/schema.ts oder passe die Query an dein bestehendes Schema an.
2

Configure DodoPayments Component

Erstelle den Client. identify ordnet den angemeldeten Convex-Benutzer einer Dodo Payments-Kunden-ID zu. Wenn kein Benutzer angemeldet ist oder kein passender Kunde gefunden wird, gibt die Funktion null zurück.
Füge anschließend die benötigten Funktionen hinzu:
Verwende diese Funktion, um Dodo Payments Checkout zu deiner Convex-App hinzuzufügen. Sie erstellt eine Checkout-Session aus den Feldern, die der Checkout-Payload-Validator der Komponente akzeptiert.

Checkout-Funktion

Die Convex-Komponente erstellt Checkout-Sessions, den empfohlenen Checkout-Ablauf für alle Zahlungen. Eine Session enthält den Produktwarenkorb, Kundendaten und Checkout-Optionen.

Verwendung

Rufe checkout aus einer Convex-Action mit den Checkout-Session-Feldern in payload auf:
checkout ruft identify nicht auf. Um einen bestehenden Kunden zuzuordnen, übergib customer: { customer_id } im Payload. Weitere Informationen und eine vollständige Liste der unterstützten Felder findest du unter Checkout-Sessions. Eine mit payment_method_id erstellte Session gibt keine Checkout-URL zurück, daher löst checkout dafür einen Fehler aus.

Antwortformat

Die Checkout-Funktion gibt ein Objekt mit der Checkout-URL zurück:

Customer-Portal-Funktion

Die Customer-Portal-Funktion gibt eine Customer-Portal-URL für den angemeldeten Benutzer zurück.

Verwendung

Sie gibt ein Objekt mit einem portal_url-Feld zurück.

Parameter

boolean
Standard:"false"
Wenn der Wert auf true gesetzt ist, sendet Dodo Payments dem Kunden zusätzlich den Portal-Link per E-Mail.
customerPortal ruft den Kunden aus der identify-Funktion in deiner DodoPayments-Einrichtung ab. Diese muss die dodoCustomerId des Kunden zurückgeben. Wenn identify null zurückgibt, löst customerPortal einen User is not authenticated.-Fehler aus.

Webhook-Handler

createDodoWebhookHandler verifiziert jede Anfrage, bevor dein Code ausgeführt wird:
  • Methode: Registriere die Route mit method: "POST". Anfragen mit anderen Methoden erreichen den Handler nicht.
  • Signaturverifizierung: Verifiziert die Standard-Webhooks-Signatur anhand der Umgebungsvariable DODO_PAYMENTS_WEBHOOK_SECRET. Gibt 400 zurück, wenn die Verifizierung fehlschlägt.
  • Payload-Validierung: Wird mit Zod validiert. Gibt 400 bei ungültigen Payloads zurück.
  • Fehlerbehandlung:
    • 400: Ungültige Signatur, ungültiger Payload oder ein von einem deiner Handler ausgelöster Fehler
    • 200: Alle Handler wurden abgeschlossen
    • Wenn DODO_PAYMENTS_WEBHOOK_SECRET nicht gesetzt ist, löst der Handler einen Fehler aus und die Anfrage schlägt fehl.
  • Event-Routing: Ruft onPayload für jedes Event und anschließend den Handler für den Event-Typ auf.

Unterstützte Webhook-Event-Handler

Jeder Handler erhält den Convex ActionCtx und den verifizierten Payload für seinen Event-Typ:

Frontend-Verwendung

Rufe die Checkout- und Portal-Actions aus deinen React-Komponenten mit dem useAction-Hook aus convex/react auf.

Prompt für LLM

Kopiere diesen Prompt in deinen AI-Coding-Assistenten, damit er die Komponente zu deinem Projekt hinzufügt. Um deinem Agenten zusätzlich die Dodo Payments-Dokumentation und Skills bereitzustellen, installiere das Agent Plugin.
Zuletzt geändert am 26. September 2026