Zum Hauptinhalt springen

Overview

The Better Auth Adapter for Dodo Payments provides:
  • Automatic customer creation on sign-up
  • Checkout Sessions (preferred) with product slug mapping
  • Self-service customer portal
  • Metered usage ingestion and reporting endpoints for usage-based billing
  • Real-time webhook event processing with signature verification
  • Full TypeScript support
You need a Dodo Payments account and API keys to use this integration.

Prerequisites

  • Node.js 20+
  • Access to your Dodo Payments Dashboard
  • Existing project using better-auth

Installation

1

Install dependencies

Run the following command in your project root:
All required packages are now installed.

Setup

1

Configure environment variables

Add these to your .env file:
Never commit API keys or secrets to version control.
2

Set up server-side integration

Create or update src/lib/auth.ts:
Set environment to live_mode for production.
3

Set up client-side integration

Create or update src/lib/auth-client.ts:

Usage Examples

Prefer authClient.dodopayments.checkoutSession for new integrations. The legacy checkout method is deprecated and kept only for backward compatibility.

Creating a Checkout Session (Preferred)

Im Gegensatz zur veralteten checkout-Methode erfordert checkoutSession keine Zahlungsinformationen im Voraus, da sie auf der Checkout-Seite vom Benutzer erfasst werden. Sie können diese Informationen überschreiben, indem Sie den Schlüssel billing im Argument übergeben.
Ähnlich wie die veraltete checkout-Methode übernimmt checkoutSession die E-Mail und den Namen des Kunden aus ihrer better-auth-Sitzung, allerdings können Sie dies überschreiben, indem Sie das Objekt customer mit E-Mail und Name übergeben.
Sie können dieselben Optionen im Argument übergeben wie im Anfragekörper für den Endpunkt Create Checkout Session.
Die Rückgabe-URL wird aus der auf dem Server konfigurierten successUrl übernommen. Sie müssen return_url nicht in die Client-Nutzlast einfügen.

Legacy Checkout (Veraltet)

Die Methode authClient.dodopayments.checkout ist veraltet. Verwenden Sie stattdessen checkoutSession für neue Implementierungen.

Zugriff auf das Kundenportal

Kundeninformationen auflisten

Verfolgung des gemessenen Verbrauchs

Aktivieren Sie das usage()-Plugin auf dem Server, um ereignisbasierte Abrechnungen zu erfassen und Kunden ihre verbrauchsbasierte Abrechnung überprüfen zu lassen.
  • authClient.dodopayments.usage.ingest erfasst Ereignisse für den eingeloggten, E-Mail-verifizierten Benutzer.
  • authClient.dodopayments.usage.meters.list listet den aktuellen Verbrauch für die mit den Abonnements des Kunden verbundenen Zähler auf.
Zeitstempel älter als eine Stunde oder mehr als fünf Minuten in der Zukunft werden bei der Verbrauchserfassung abgelehnt.
Wenn Sie meter_id weglassen, wenn Sie Verbrauchszähler auflisten, werden alle mit den Abonnements des Kunden verbundenen Zähler zurückgegeben.

Webhooks

Das Webhooks-Plugin verarbeitet Echtzeit-Zahlungsereignisse von Dodo Payments mit sicherer Signaturverifizierung. Der Standardendpunkt ist/api/auth/dodopayments/webhooks.
1

Generate and set webhook secret

Erzeugen Sie ein Webhook-Geheimnis für Ihre Endpunkt-URL (z. B. https://<your-domain>/api/auth/dodopayments/webhooks) im Dodo Payments Dashboard und setzen Sie es in Ihre .env-Datei:
2

Handle webhook events

Beispielhandler:

Unterstützte Webhook-Ereignishandler

Konfigurationsreferenz

  • client (erforderlich): DodoPayments-Client-Instanz
  • createCustomerOnSignUp (optional): Kunden bei der Benutzerregistrierung automatisch erstellen
  • use (erforderlich): Array von Plugins, die aktiviert werden sollen (checkout, portal, usage, webhooks)
  • getCustomerParams (optional): Funktion, die die BetterAuth User erhält und zusätzliche Felder liefert, die dem DodoPayments-Kunden bei der Erstellung und Aktualisierung beigefügt werden (z. B. metadata, phone_number)
  • products: Array von Produkten oder asynchrone Funktion, die Produkte liefert - successUrl: URL, zu der nach erfolgreicher Zahlung weitergeleitet wird - authenticatedUsersOnly: Benutzer-Authentifizierung erforderlich (Standard: false)

Fehlerbehebung & Tipps

  • Ungültiger API-Schlüssel: Überprüfen Sie Ihr DODO_PAYMENTS_API_KEY in .env. - Fehlende Webhook-Signatur: Stellen Sie sicher, dass das Webhook-Geheimnis mit dem im Dodo Payments Dashboard übereinstimmt. - Kunde nicht erstellt: Bestätigen Sie, dass createCustomerOnSignUp auf true gesetzt ist.
  • Verwenden Sie Umgebungsvariablen für alle Geheimnisse und Schlüssel. - Testen Sie im test_mode, bevor Sie in den live_mode wechseln. - Protokollieren Sie Webhook-Ereignisse zur Fehlerbehebung und Prüfung.

Eingabeaufforderung für LLMs

Zuletzt geändert am 9. Juli 2026