Zum Hauptinhalt springen

Übersicht

Das Astro Minimal Boilerplate bietet einen sofort einsatzbereiten Ausgangspunkt für die Integration von Dodo Payments in Ihre Astro-Anwendung. Diese Vorlage umfasst Checkout-Sitzungen, Webhook-Verarbeitung, Kundenportal und moderne UI-Komponenten, um Ihnen zu helfen, schnell Zahlungen zu akzeptieren.
Dieser Boilerplate verwendet Astro 5 mit TypeScript, Tailwind CSS 4 und den @dodopayments/astro Adapter.

Funktionen

  • Schnellstart – In weniger als 5 Minuten loslegen
  • Zahlungsintegration – Vorgefertigter Checkout-Flow mit @dodopayments/astro
  • Moderne UI – Saubere, dunkel gehaltene Preisseite mit Tailwind CSS
  • Webhook-Handler – Bereit einsatzfähiger Webhook-Endpunkt für Zahlungsevents
  • Kundenportal – Abonnementverwaltung mit einem Klick
  • TypeScript – Vollständig typisiert mit minimalen, fokussierten Typen
  • Vorbefüllter Checkout – Zeigt, wie Kundendaten übergeben werden, um die Nutzererfahrung zu verbessern

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:
  • Node.js LTS-Version (erforderlich für Astro 5)
  • Dodo Payments-Konto (um API- und Webhook-Keys vom Dashboard abzurufen)

Schnellstart

1

Clone the Repository

git clone https://github.com/dodopayments/dodo-astro-minimal-boilerplate.git
cd dodo-astro-minimal-boilerplate
2

Install Dependencies

npm install
3

Get API Credentials

Registriere dich bei Dodo Payments und hole dir deine Zugangsdaten vom Dashboard:
Stelle sicher, dass du dich während der Entwicklung im Testmodus befindest!
4

Configure Environment Variables

Erstelle eine Datei .env im Stammverzeichnis:
cp .env.example .env
Aktualisieren Sie die Werte mit Ihren Dodo Payments-Anmeldeinformationen:
DODO_PAYMENTS_API_KEY=your_api_key_here
DODO_PAYMENTS_WEBHOOK_KEY=your_webhook_signing_key_here
DODO_PAYMENTS_RETURN_URL=http://localhost:4321/
DODO_PAYMENTS_ENVIRONMENT=test_mode
Committe niemals deine Datei .env in die Versionskontrolle. Sie ist bereits in .gitignore enthalten.
5

Add Your Products

Aktualisiere src/lib/products.ts mit deinen tatsächlichen Produkt-IDs von Dodo Payments:
export const products: Product[] = [
  {
    product_id: "pdt_001", // Replace with your product ID
    name: "Basic Plan",
    description: "Get access to basic features and support",
    price: 9999, // in cents
    features: [
      "Access to basic features",
      "Email support",
      "1 Team member",
      "Basic analytics",
    ],
  },
  // ... add more products
];
6

Run the Development Server

npm run dev
Öffne http://localhost:4321, um deine Preisseite zu sehen!

Projektstruktur

src/
├── components/
│   ├── Footer.astro           # Reusable footer
│   ├── Header.astro           # Navigation header
│   └── ProductCard.astro      # Product pricing card
├── layouts/
│   └── Layout.astro           # Root layout
├── lib/
│   └── products.ts            # Product definitions
├── pages/
│   ├── index.astro            # Pricing page (home)
│   └── api/
│       ├── checkout.ts        # Checkout session handler
│       ├── customer-portal.ts # Customer portal redirect
│       └── webhook.ts         # Webhook event handler
└── styles/
    └── global.css             # Global styles with Tailwind

Anpassung

Produktinformationen aktualisieren

Bearbeite src/lib/products.ts, um folgende Elemente anzupassen:
  • Produkt-IDs (aus deinem Dodo-Dashboard)
  • Preise
  • Funktionen
  • Beschreibungen

Kundendaten vorab ausfüllen

Ersetze in src/components/ProductCard.astro die fest codierten Werte durch deine tatsächlichen Benutzerdaten:
customer: {
  name: "John Doe",
  email: "john@example.com",
},

Kundenportal aktualisieren

Ersetze in src/components/Header.astro die fest codierte Kunden-ID durch die tatsächliche Kunden-ID aus deinem Auth-System oder deiner Datenbank:
const CUSTOMER_ID = "cus_001"; // Replace with actual customer ID
Sie können einen Testkauf abschließen, um die Kunden-ID für Tests zu erhalten.

Webhook-Ereignisse

Die Boilerplate zeigt, wie man Webhook-Events in src/pages/api/webhook.ts verarbeitet:
  • onSubscriptionActive – Wird ausgelöst, wenn ein Abonnement aktiv wird
  • onSubscriptionCancelled – Wird ausgelöst, wenn ein Abonnement gekündigt wird
Fügen Sie Ihre Geschäftslogik in diese Handler ein:
onSubscriptionActive: async (payload) => {
  // Grant access to your product
  // Update user database
  // Send welcome email
},
Fügen Sie bei Bedarf weitere Webhook-Ereignisse hinzu. Für die lokale Entwicklung können Sie Tools wie ngrok verwenden, um einen sicheren Tunnel zu Ihrem lokalen Server zu erstellen und ihn als Ihre Webhook-URL zu verwenden.

Bereitstellung

Dieses Boilerplate verwendet statische Ausgaben mit bedarfsorientierter Rendering für API-Routen. Sie müssen einen Adapter für Ihre Bereitstellungsplattform installieren: Siehe Astros Bereitstellungsanleitungen für alle Plattformen.

Webhook-URL aktualisieren

Nach der Bereitstellung aktualisieren Sie Ihre Webhook-URL im Dodo Payments Dashboard:
https://your-domain.com/api/webhook
Denk auch daran, die Umgebungsvariable DODO_PAYMENTS_WEBHOOK_KEY in deiner Produktionsumgebung zu aktualisieren, damit sie mit dem Webhook-Signatur-Schlüssel deiner bereitgestellten Domain übereinstimmt.

Fehlersuche

Lösche node_modules und installiere die Abhängigkeiten neu:
rm -rf node_modules package-lock.json
npm install
Häufige Ursachen:
  • Ungültige Produkt-ID – überprüfe, ob sie in deinem Dodo-Dashboard existiert
  • Falscher API-Schlüssel oder Umgebungseinstellung in .env
  • Prüfe die Browser-Konsole und das Terminal auf Fehler
Für lokale Tests verwende ngrok, um deinen Server freizugeben:
ngrok http 4321
Aktualisiere die Webhook-URL in deinem Dodo-Dashboard auf die ngrok-URL. Denk daran, deine .env-Datei mit dem korrekten Webhook-Verifizierungsschlüssel zu aktualisieren.
Diese Boilerplate verwendet statische Ausgaben mit bedarfsorientierten API-Routen. Du musst einen Adapter für die Bereitstellung installieren:Siehe Astro’s Deployment-Guides für Details.

Erfahren Sie mehr

Unterstützung

Brauchen Sie Hilfe mit dem Boilerplate?