@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_modeoderlive_mode.DODO_PAYMENTS_WEBHOOK_SECRET: Dein Webhook-Secret aus Developer → Webhooks. Für die Webhook-Verarbeitung erforderlich. Der Webhook-Handler liest genau diesen Variablennamen.
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.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.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
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
Rufecheckout 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
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_SECRETnicht gesetzt ist, löst der Handler einen Fehler aus und die Anfrage schlägt fehl.
- Event-Routing: Ruft
onPayloadfür jedes Event und anschließend den Handler für den Event-Typ auf.
Unterstützte Webhook-Event-Handler
Jeder Handler erhält den ConvexActionCtx und den verifizierten Payload für seinen Event-Typ:
Frontend-Verwendung
Rufe die Checkout- und Portal-Actions aus deinen React-Komponenten mit demuseAction-Hook aus convex/react auf.