EnglishEN EspañolES FrançaisFR DeutschDE ItalianoIT PortuguêsPT 中文ZH 日本語JA 한국어KO РусскийRU NederlandsNL
← Back to all articles

Stripe Checkout in eine benutzerdefinierte PHP-Website integrieren (ohne Plugins)

Stripe ist die sauberste verfügbare Zahlungs-API, und sie direkt in PHP einzubinden bedeutet keine monatlichen SaaS-Gebühren, keinen WooCommerce-Ballast und keine Transaktionsgebühr von Shopify. Es folgt die exakte Implementierung, die in echten BuiltToWinWeb-Kundenshops läuft: reines PHP, das offizielle Stripe-SDK, sichere Webhooks und automatisierte E-Mail-Bestätigungen. Sie sehen, wie die Teile zusammenpassen – Checkout-Sitzung, Weiterleitung, Webhook-Prüfung, Auslieferung –, sodass Sie echte Zahlungen annehmen, ohne einen Anteil an eine Plattform abzugeben. Alles hier ist Produktionscode, keine Wegwerf-Demo.

Warum natives PHP + Stripe jeden Seitenbauer übertrifft

Shopify berechnet 0,5–2 % pro Transaktion zusätzlich zu Stripes eigener Gebühr. WooCommerce fügt 14+ Plugin-Abhängigkeiten hinzu, die Ihre Checkout-Seiten-LCP auf 3,8 s verlangsamen. Eine benutzerdefinierte PHP-Integration liefert einen Checkout, der in unter 0,6 s lädt und jeden Cent Ihrer Marge behält.

  • Null Plattform-Transaktionsgebühren – nur Stripes 2,9 % + 30 Cent
  • Checkout-Seite Lighthouse-Score: 98 vs. Shopifys typischen 61
  • Volle Webhook-Kontrolle – benutzerdefinierte Abwicklung, Lager, E-Mail
  • Keine wiederkehrenden Abonnementkosten für die E-Commerce-Plattform
  • Eigener Code, überall hosten, frei migrieren

Schritt 1 – Stripe PHP SDK installieren

Composer ist der sauberste Ansatz. Wenn Ihr Host Composer nicht unterstützt, laden Sie das SDK-ZIP herunter und legen Sie es in Ihrem Projektstamm ab.

composer require stripe/stripe-php

Laden Sie es dann am Anfang Ihres Checkout-Skripts:

require_once __DIR__ . '/vendor/autoload.php';
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));

Schritt 2 – Checkout-Session erstellen (serverseitig)

Legen Sie Ihren geheimen Schlüssel niemals im Browser ab. Erstellen Sie einen serverseitigen Endpunkt, an den das Frontend POSTet:

<?php
require_once __DIR__ . '/vendor/autoload.php';
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));

$session = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'],
    'line_items' => [[
        'price_data' => [
            'currency'     => 'usd',
            'unit_amount'  => 300000,
            'product_data' => ['name' => 'Business Pro Website'],
        ],
        'quantity' => 1,
    ]],
    'mode'        => 'payment',
    'success_url' => 'https://yoursite.com/success?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url'  => 'https://yoursite.com/pricing',
]);

header('Content-Type: application/json');
echo json_encode(['url' => $session->url]);

Schritt 3 – Benutzer vom Frontend weiterleiten

Ein einfacher Fetch-Aufruf auf Ihrer Preisseiten-Schaltfläche:

document.getElementById('buy-btn').addEventListener('click', async () => {
    const res  = await fetch('/create-checkout-session.php', { method: 'POST' });
    const data = await res.json();
    window.location.href = data.url;
});

Schritt 4 – Webhooks verarbeiten (Auftragsabwicklung)

Stripe sendet einen POST an Ihren Webhook-Endpunkt, wenn die Zahlung erfolgreich ist. Hier lösen Sie E-Mail aus, aktualisieren das Lager und erfassen die Bestellung – NICHT auf der Erfolgsseite (die Benutzer überspringen können).

<?php
$payload   = file_get_contents('php://input');
$sig       = $_SERVER['HTTP_STRIPE_SIGNATURE'];
$secret    = getenv('STRIPE_WEBHOOK_SECRET');

try {
    $event = \Stripe\Webhook::constructEvent($payload, $sig, $secret);
} catch (\Exception $e) {
    http_response_code(400); exit;
}

if ($event->type === 'checkout.session.completed') {
    $session = $event->data->object;
    fulfill_order($session);
}

http_response_code(200);

Registrieren Sie Ihre Webhook-URL im Stripe-Dashboard unter Entwickler → Webhooks. Lokal testen: `stripe listen --forward-to localhost/webhook.php`.

Schritt 5 – Bestätigungs-E-Mail über PHPMailer senden

Rufen Sie in Ihrer `fulfill_order()`-Funktion die Kunden-E-Mail aus der Session ab und starten Sie PHPMailer:

function fulfill_order($session) {
    $email = $session->customer_details->email;
    $name  = $session->customer_details->name;

    $mail = new PHPMailer\PHPMailer\PHPMailer(true);
    $mail->isSMTP();
    $mail->Host     = 'smtp.yourhost.com';
    $mail->Username = getenv('SMTP_USER');
    $mail->Password = getenv('SMTP_PASS');
    $mail->setFrom('[email protected]', 'Ihr Unternehmen');
    $mail->addAddress($email, $name);
    $mail->Subject = 'Zahlung erhalten – Vielen Dank!';
    $mail->Body    = "Hallo $name, Ihre Bestellung ist bestätigt.";
    $mail->send();
}

Plattformvergleich – individuelles PHP vs. Shopify vs. WooCommerce

Kennzahl Benutzerdefiniertes PHP + Stripe Shopify WooCommerce
Checkout LCP 0,6s 1,9s 2,8s
Lighthouse-Score 98 61 55
Plattformgebühr/Transaktion 0% 0,5–2% 0%*
Monatliche Plattformkosten 0 $ 39–399 $ 0 $*
Plugin-Abhängigkeiten 0 k. A. 14+
Code-Eigentum 100% 0% ~60%

Reale geschäftliche Auswirkungen

Bei einem Onlineshop mit 50.000 $/Monat Umsatz sind Stripes 2,9 % + 30 Cent unvermeidlich. Aber Shopifys zusätzliche 0,5–2 % Plattformgebühr kostet 250–1.000 $/Monat extra. Benutzerdefiniertes PHP eliminiert das.

  • Shopify Advanced (399 $/Monat) + 0,5 % Gebühr auf 50.000 $ = 649 $/Monat Plattformkosten
  • Benutzerdefiniertes PHP + Stripe = 0 $/Monat Plattformkosten (nur Stripes Standardgebühren)
  • Break-even bei einem 8.000 $-Aufbau: unter 9 Monate
  • Checkout-Seiten laden 3× schneller = messbar niedrigere Warenkorbabbruchrate

Die Rechnung ist einfach: Wenn Sie mehr als 15.000 $/Monat verarbeiten, amortisiert sich ein benutzerdefinierter PHP-Shop in unter einem Jahr.

Sicherheits-Checkliste

  • Schlüssel in Umgebungsvariablen speichern – niemals im PHP-Code hart codieren
  • Stripe-Webhook-Signaturen immer mit `constructEvent()` verifizieren
  • HTTPS überall verwenden – Stripe erfordert es
  • Idempotenz: Prüfen, ob die Bestellung bereits existiert, bevor sie ausgeführt wird
  • Rate-Limiting für `/create-checkout-session.php` (10 Anfragen/Std. pro IP)

Häufig gestellte Fragen

Benötige ich Composer, um Stripe mit PHP zu verwenden?

Composer wird empfohlen, ist aber nicht erforderlich. Sie können das Stripe PHP SDK als ZIP-Datei herunterladen und manuell mit require_once einbinden. Composer erleichtert nur Updates.

Ist es sicher, Zahlungen ohne eine Plattform wie Shopify zu verarbeiten?

Ja. Stripe ist PCI-DSS Level 1 zertifiziert. Ihr Server verarbeitet niemals rohe Kartennummern – Stripes JS tokenisiert sie clientseitig. Ihr PHP erhält nur eine Session-ID.

Wie teste ich Stripe, ohne echte Karten zu belasten?

Verwenden Sie den Stripe-Testmodus mit dem Schlüsselpräfix sk_test_. Verwenden Sie die Testkarte 4242 4242 4242 4242 mit einem beliebigen zukünftigen Ablaufdatum und einem beliebigen 3-stelligen CVC.

Kann ich mit diesem Ansatz Abonnements hinzufügen?

Ja. Ändern Sie den Checkout-Session-Modus von "payment" auf "subscription" und übergeben Sie eine wiederkehrende Preis-ID statt price_data. Stripe verwaltet Abrechnungszyklen automatisch.

Möchten Sie einen maßgeschneiderten Stripe-Shop?

BuiltToWinWeb baut benutzerdefinierte PHP-E-Commerce-Shops mit nativer Stripe-Integration, Lighthouse 98+ Scores und null monatlichen Plattformgebühren. Einmalige Pauschalgebühr – Sie besitzen den Code für immer.

Shops werden typischerweise in 3–4 Wochen geliefert. Antwort innerhalb von 24 Stunden garantiert.

Kostenloses Angebot anfordern

Benchmark-Daten aus kontrollierten Tests auf identischem Hostinger VPS-Hosting. WooCommerce-Plugin-Anzahl gemessen bei Standard-WooCommerce 8.x-Installation mit Storefront-Theme.