Übersicht
Das minimale Next.js-Boilerplate ist eine Starter-App, in der Dodo Payments bereits verbunden ist. Fügen Sie Ihre API-Schlüssel und Produkt-IDs hinzu, und Sie erhalten eine Preisseite, die den Checkout öffnet, einen Webhook-Endpunkt für Zahlungsereignisse und einen Link zum Customer Portal.Dieses Boilerplate verwendet den Next.js 16 App Router mit TypeScript, Tailwind CSS 4 und dem
@dodopayments/nextjs-Adaptor. Informationen zum Hinzufügen derselben Route-Handler zu einer bestehenden App finden Sie unter Next.js Adaptor.Funktionen
Das Boilerplate umfasst:- Schnelle Einrichtung: Vom Klonen bis zu einer laufenden Preisseite in etwa fünf Minuten.
- Checkout: Ein vorkonfigurierter Checkout-Ablauf auf Basis von
@dodopayments/nextjs. - Preisseite: Eine dunkel gestaltete Preisseite mit Tailwind CSS.
- Webhook-Handler: Ein Endpunkt, der jede Webhook-Signatur überprüft und Ihren Code für das Ereignis ausführt.
- Customer Portal: Ein Link in der Kopfzeile, der das Customer Portal öffnet, in dem Kunden ihre Abonnements verwalten.
- TypeScript: Typisierte Produktdefinitionen und Handler.
- Vorausgefüllter Checkout: Übermittelt den Namen und die E-Mail-Adresse des Kunden an den Checkout, damit der Kunde diese nicht erneut eingeben muss.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie:- Node.js 20.9 oder höher, wie von Next.js 16 vorausgesetzt.
- Ein Dodo Payments-Konto, um im Dashboard einen API-Schlüssel und ein Webhook-Signaturgeheimnis zu erstellen.
Schnellstart
1
Clone the Repository
2
Install Dependencies
3
Get API Credentials
Registrieren Sie sich bei Dodo Payments und rufen Sie anschließend Ihre Zugangsdaten im Dashboard ab:
- API Key: Erstellen Sie einen Schlüssel unter Dashboard → Developer → API Keys.
- Webhook Key: Fügen Sie unter Dashboard → Developer → Webhooks einen Endpunkt hinzu und kopieren Sie anschließend dessen Signaturgeheimnis. Die Endpunkt-URL muss öffentlich zugänglich sein und HTTPS verwenden. Informationen zum Empfangen von Ereignissen auf Ihrem Computer finden Sie unter Webhook Events.
4
Configure Environment Variables
Kopieren Sie die Beispieldatei, um im Stammverzeichnis eine Legen Sie die Werte für Ihre Dodo Payments-Zugangsdaten fest:Die Route-Handler lesen diese Variablen aus:
.env-Datei zu erstellen:DODO_PAYMENTS_API_KEYauthentifiziert die Checkout- und Customer-Portal-Handler.DODO_PAYMENTS_WEBHOOK_KEYüberprüft Webhook-Signaturen.DODO_PAYMENTS_RETURN_URList das Ziel, an das der Checkout den Kunden nach der Zahlung weiterleitet.DODO_PAYMENTS_ENVIRONMENTisttest_modeoderlive_mode.
5
Add Your Products
Ersetzen Sie die Beispielprodukte in Die Preisseite zeigt
src/lib/products.ts durch Ihre eigenen. Legen Sie für jedes product_id die ID eines Produkts unter Products in Ihrem Dashboard fest:name, description, price und features aus dieser Datei an. Der Checkout berechnet den für das Produkt in Dodo Payments festgelegten Preis. Halten Sie daher price mit diesem Preis synchron.6
Run the Development Server
Projektstruktur
Die Route-Handler für Checkout, Customer Portal und Webhooks befinden sich untersrc/app/api/:
Anpassung
Produktinformationen aktualisieren
Bearbeiten Siesrc/lib/products.ts, um Folgendes zu ändern:
- Produkt-IDs aus Products in Ihrem Dodo Payments-Dashboard
- Preise
- Funktionen
- Beschreibungen
Kundendaten vorausfüllen
src/app/components/ProductCard.tsx sendet mit jeder Checkout-Anfrage einen fest codierten Namen und eine fest codierte E-Mail-Adresse. Ersetzen Sie diese durch die Daten des angemeldeten Benutzers:
Customer Portal aktualisieren
Der Link Customer Portal insrc/app/components/Header.tsx öffnet /api/customer-portal mit einer fest codierten Kunden-ID. Ersetzen Sie sie durch die Dodo Payments-Kunden-ID des angemeldeten Benutzers:
Webhook-Ereignisse
Der Handler insrc/app/api/webhook/route.ts überprüft jede Anfrage mit DODO_PAYMENTS_WEBHOOK_KEY und verarbeitet anschließend zwei Ereignisse:
onSubscriptionActivewird ausgeführt, wenn ein Abonnement aktiv wird (subscription.active).onPaymentSucceededwird ausgeführt, wenn eine Zahlung erfolgreich ist (payment.succeeded).
onSubscriptionCancelled. Der Next.js Adaptor listet alle unterstützten Handler auf.
Dodo Payments kann localhost nicht erreichen. Verwenden Sie für die lokale Entwicklung einen Tunnel wie ngrok, um Ihren lokalen Server öffentlich zugänglich zu machen, und verwenden Sie die Tunnel-URL als Webhook-Endpunkt.
Bereitstellung
Für die Produktion erstellen
In Vercel bereitstellen
[DODO_PAYMENTS_RETURN_URL auf Ihre Produktions-URL.
Webhook-URL aktualisieren
Fügen Sie nach der Bereitstellung Ihre Webhook-URL für die Produktion im Dodo Payments Dashboard hinzu, wobei Ihre Domain anstelle vonexample.com steht:
DODO_PAYMENTS_WEBHOOK_KEY in Ihrer Produktionsumgebung.
Fehlerbehebung
Module not found or build errors
Module not found or build errors
Löschen Sie
node_modules und package-lock.json und installieren Sie anschließend die Abhängigkeiten neu:Checkout redirect fails
Checkout redirect fails
Prüfen Sie diese häufigen Ursachen:
- Die Produkt-ID ist in Ihrem Dodo Payments-Dashboard nicht vorhanden.
- Der API-Schlüssel oder
DODO_PAYMENTS_ENVIRONMENTin.envist falsch. Ein Testmodus-Schlüssel funktioniert nur mittest_mode.
npm run dev ausgeführt wird, nach dem Fehler.Webhooks not receiving events
Webhooks not receiving events
Verwenden Sie für lokale Tests ngrok, um Ihren Server öffentlich zugänglich zu machen:Fügen Sie in Ihrem Dodo-Dashboard einen Endpunkt mit der HTTPS-URL von ngrok gefolgt von
/api/webhook hinzu. Kopieren Sie das Signaturgeheimnis dieses Endpunkts in DODO_PAYMENTS_WEBHOOK_KEY in Ihrer .env-Datei.Customer portal link doesn't work
Customer portal link doesn't work
Ersetzen Sie das fest codierte
CUSTOMER_ID in src/app/components/Header.tsx durch die ID eines Kunden in Ihrem Dodo Payments-Dashboard.Rufen Sie die Kunden-ID in der Produktion stattdessen von Ihrem Authentifizierungssystem und Ihrer Datenbank ab.Weitere Informationen
- Dodo Payments-Dokumentation
- Dokumentation zu Checkout Sessions
- Dokumentation zu Webhooks
- Next.js Adaptor: Optionen für die
Checkout-,CustomerPortal- undWebhooks-Handler
Support
Hilfe zum Boilerplate:- Stellen Sie Fragen in der Discord-Community.
- Melden Sie Probleme und verfolgen Sie Aktualisierungen im GitHub-Repository.
- Schreiben Sie dem Support-Team.