@dodopayments/nuxt stellt deiner Nuxt-App drei Serverrouten-Handler bereit. checkoutHandler gibt Checkout-URLs zurück, customerPortalHandler sendet einen Kunden zum Customer Portal und Webhooks überprüft Webhook-Ereignisse und leitet sie an deinen Code weiter.
Checkout API Route
Erstellen Sie Checkout-URLs aus einer Nuxt-Serverroute.
Customer Portal API Route
Lassen Sie Kunden ihre Abonnements und Daten über eine Nuxt-Serverroute verwalten.
Webhooks API Route
Empfangen und verifizieren Sie Dodo Payments-Webhook-Ereignisse in Nuxt.
Übersicht
Das Modul registriert seine Handler als automatische Nuxt-Serverimporte. Daher können deine Serverrouten
checkoutHandler, customerPortalHandler und Webhooks ohne import-Anweisungen aufrufen. Jede Route liest deine Zugangsdaten aus runtimeConfig. Nuxt stellt dem Browser nur runtimeConfig.public zur Verfügung, sodass API-Schlüssel und Webhook-Secret auf dem Server bleiben.Installation
1
Install the Nuxt Module
Führe diesen Befehl im Stammverzeichnis deines Projekts aus:Das Modul führt Nuxt 3 (3.13.1 oder höher) und
zod 3.25 oder höher als Peer-Abhängigkeiten auf.2
Register the Module in nuxt.config.ts
Füge Lege diese Umgebungsvariablen fest, zum Beispiel in einer
@dodopayments/nuxt zu deinem modules-Array hinzu und ordne deine Zugangsdaten runtimeConfig zu:nuxt.config.ts
.env-Datei im Stammverzeichnis deines Projekts:Ein erstellter Nuxt-Server liest deine
.env-Datei nicht. Zur Laufzeit überschreibt Nuxt einen runtimeConfig-Wert nur anhand der Variable, die seinem Pfad entspricht, etwa NUXT_PRIVATE_RETURN_URL für private.returnUrl. Lege diese Variablen daher auch in deiner Hosting-Umgebung fest.Beispiele für API-Routen-Handler
Die Beispiele erstellen Serverrouten im Verzeichnis
server/routes/api/. Nuxt ordnet jede Datei anhand ihres Namens und Methoden-Suffixes einer Route zu. checkout.get.ts verarbeitet daher GET /api/checkout.- Checkout API Route
- Customer Portal API Route
- Webhook API Route
Verwende diesen Handler, um deiner Nuxt-App den Dodo Payments-Checkout hinzuzufügen. Eine GET-Route stellt einen statischen Checkout bereit. Eine POST-Route stellt Checkout-Sitzungen bereit oder einen dynamischen Checkout, wenn du
type: "dynamic" festlegst.checkout.post.ts stellt einen POST-Ablauf bereit. Verwende entweder das Beispiel für den dynamischen Checkout oder das Beispiel für eine Checkout-Sitzung:Checkout-Routen-Handler
Der Checkout-Handler unterstützt alle drei Möglichkeiten, Zahlungen mit Dodo Payments zu akzeptieren:- Statische Payment Links: Teilbare URLs, die Zahlungen ohne Code erfassen.
- Dynamische Payment Links: Payment Links, die du mit benutzerdefinierten Angaben generierst. Sie verwenden veraltete Endpunkte.
- Checkout-Sitzungen: Gehosteter Checkout mit einem Produktkorb, Kundendaten und Anpassungsoptionen. Dies ist der empfohlene Ablauf.
checkoutHandler akzeptiert diese Optionen:
Static Checkout (GET)
Static Checkout (GET)
Unterstützte Query-Parameter
Legt den berechneten Betrag in großen Währungseinheiten fest, zum Beispiel
12.5 für $12.50. Funktioniert nur mit Pay What You Want-Produkten und wird ignoriert, wenn der Wert unter dem Mindestpreis des Produkts liegt.returnUrl aus seiner Konfiguration als redirect_url zum Link hinzu.Antwortformat
Der statische Checkout gibt eine JSON-Antwort mit der Checkout-URL zurück. Im Testmodus verwendet die URLtest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Sende die Parameter als JSON-Body in einem POST-Request.
- Unterstützt sowohl einmalige als auch wiederkehrende Zahlungen.
billingundcustomersind erforderlich.- Eine Übersicht aller unterstützten Body-Felder findest du unter:
Antwortformat
Der dynamische Checkout gibt eine JSON-Antwort mit der Checkout-URL zurück:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout-Sitzungen erstellen einen gehosteten Checkout für einmalige Käufe und Abonnements mit vollständiger Kontrolle über die Anpassung.
product_cart ist das einzige erforderliche Feld. Wenn der Body kein return_url enthält, verwendet der Handler returnUrl aus seiner Konfiguration.Weitere Informationen und eine Übersicht aller unterstützten Felder findest du im Checkout Sessions Integration Guide.Eine mit payment_method_id erstellte Sitzung gibt keine Checkout-URL zurück, daher antwortet der Handler mit 400. Um eine gespeicherte Zahlungsmethode zu belasten, erstelle die Sitzung stattdessen mit dem SDK.Antwortformat
Checkout-Sitzungen geben eine JSON-Antwort mit der Checkout-URL zurück:Customer-Portal-Routen-Handler
Der Customer-Portal-Routen-Handler erstellt eine Customer-Portal-Sitzung für den angegebenen Kunden und leitet den Browser dorthin weiter.Query-Parameter
Wenn auf
true gesetzt, sendet Dodo Payments dem Kunden zusätzlich den Portal-Link per E-Mail.Webhook-Routen-Handler
Der Webhook-Routen-Handler überprüft jede Anfrage, bevor dein Code ausgeführt wird:- Methode: Nur POST-Requests werden unterstützt. Andere Methoden geben 405 zurück.
- Signaturüberprüfung: Überprüft den rohen Request-Body sowie die Header
webhook-id,webhook-timestampundwebhook-signaturemitwebhookKeygemäß der Spezifikation Standard Webhooks. Gibt 401 zurück, wenn die Überprüfung fehlschlägt. - Payload-Validierung: Validiert die Payload mit Zod. Gibt 400 für eine ungültige Payload zurück.
- Fehlerbehandlung:
- 401: Ungültige Signatur
- 400: Ungültige Payload
- 500: Interner Fehler während der Überprüfung
- Ereignisweiterleitung: Ruft für jedes Ereignis
onPayloadund anschließend den Handler für den Ereignistyp auf und gibt 200 zurück.