Karten, Wallets und lokale Zahlungsarten mit einem Anbieter: So binden Sie Stripe in Shopware 6 ein, per offiziellem Plugin oder über die API, inklusive Webhooks, Testkarten und Go-live.
Dass Ihr Shop Zahlungen reibungslos und sicher annimmt, ist nicht verhandelbar. Dieser Leitfaden führt Shopbetreiber und Entwickler zu einer belastbaren Stripe-Integration in Shopware 6. Sie erfahren:
Welche weiteren Anbieter sich anbinden lassen, zeigt unsere Übersicht zu Shopware-Zahlungsintegrationen.
Stripe ist eine Plattform, um Zahlungen online anzunehmen: einmalige Käufe, Abonnements oder Auszahlungen an Marktplatz-Verkäufer. Über die reine Kartenzahlung hinaus bietet Stripe:
Für Headless-Shops oder stark angepasste Prozesse:
stripe/stripe-php per Composer installieren, PaymentIntents anlegen, Zahlungen bestätigen und Abonnements verwalten.payment_intent.succeeded, invoice.payment_failed oder charge.refunded empfangen und den Bestellstatus in Shopware setzen.Eine eigene Anbindung entwickeln wir als Shopware-Plugin oder -App, siehe Shopware-Plugin-Entwicklung.
Wenn Sie Erweiterungen per Composer verwalten, beziehen Sie das Paket über Ihren Shopware-Account und aktivieren es anschließend:
bin/console plugin:refresh
bin/console plugin:install --activate StripeShopwarePayment
bin/console cache:clear
Den genauen technischen Namen zeigt bin/console plugin:list.
pk_test_ und sk_test_).payment_intent.succeeded, payment_intent.payment_failed, charge.refunded und bei Abonnements invoice.payment_succeeded.whsec_…) in die Plugin-Konfiguration.Viele Plugin-Versionen legen den Endpunkt automatisch an. Prüfen Sie im Dashboard, ob er existiert und auf den richtigen Modus zeigt.
Aktivieren Sie die Zahlungsarten anschließend unter Einstellungen → Shop → Zahlungsarten und weisen Sie sie den Verkaufskanälen zu.
4242 4242 4242 4242, beliebiges zukünftiges Ablaufdatum, beliebige Prüfziffer.Mit dem Payment Element zeigt Stripe alle aktivierten Zahlungsarten in einem Formular direkt in Ihrem Checkout. Das Grundgerüst in einer eigenen Integration:
<form id="payment-form">
<div id="payment-element"></div>
<button id="submit">Jetzt bezahlen</button>
</form>
const stripe = Stripe('pk_test_IHR_SCHLUESSEL');
// clientSecret stammt vom PaymentIntent, den Ihr Server angelegt hat
const elements = stripe.elements({ clientSecret });
const paymentElement = elements.create('payment');
paymentElement.mount('#payment-element');
document.getElementById('payment-form').addEventListener('submit', async (e) => {
e.preventDefault();
const { error } = await stripe.confirmPayment({
elements,
confirmParams: { return_url: 'https://ihr-shop.de/checkout/finish' }
});
if (error) { console.error(error.message); }
});
Das Shopware-Plugin erledigt diese Einbindung selbst; der Code ist nur relevant, wenn Sie einen eigenen Checkout bauen.
4242 4242 4242 42424000 0000 0000 00024000 0000 0000 99954000 0025 0000 3155pk_live_, sk_live_) in der Plugin-Konfiguration eintragen.Stripe sendet bei jedem wichtigen Ereignis eine Benachrichtigung. Die häufigsten:
payment_intent.succeeded: Bestellung als bezahlt markieren und Bestätigung versenden.payment_intent.payment_failed: Kunden informieren und eine andere Zahlungsart anbieten.charge.refunded: Bestellung auf „erstattet“ setzen und Beleg versenden.invoice.payment_succeeded: Abonnement verlängern und Quittung senden.$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_STRIPE_SIGNATURE'] ?? '';
try {
$event = \Stripe\Webhook::constructEvent($payload, $signature, $webhookSecret);
} catch (\Exception $e) {
http_response_code(400);
exit;
}
switch ($event->type) {
case 'payment_intent.succeeded':
$this->markOrderPaid($event->data->object->metadata->order_id);
break;
case 'payment_intent.payment_failed':
$this->notifyCustomer($event->data->object->metadata->order_id);
break;
}
http_response_code(200);
Prüfen Sie immer die Signatur, antworten Sie schnell mit 200 und verarbeiten Sie das Ereignis idempotent, denn Stripe wiederholt Zustellungen. Wie Shopware selbst Webhooks behandelt, lesen Sie in unserem Beitrag zu Webhooks in Shopware 6.
var/log/ auf Ausnahmen prüfen.stripe listen --forward-to https://ihr-shop.test/stripe/webhookMit Stripe Checkout oder Elements verarbeitet Stripe die Kartendaten, nicht Ihr Server. Liefern Sie Checkout-Seiten ausschließlich über HTTPS aus und protokollieren Sie nie vollständige Kartendaten.
Aktivieren Sie die Standardregeln von Radar, prüfen Sie markierte Zahlungen regelmäßig und verfeinern Sie Limits für auffällige Muster. Nutzen Sie 3-D Secure, in Europa ist die starke Kundenauthentifizierung ohnehin Pflicht.
Hängen Sie Bestellnummer, Kunden-ID und Warenkorbsumme als Metadaten an jeden PaymentIntent. So lassen sich Zahlungen in Stripe und Buchhaltung eindeutig abgleichen.
Wie wechsle ich API-Schlüssel, ohne den Shop offline zu nehmen?
Das Plugin hält Test- und Live-Schlüssel parallel; Sie tragen die neuen Schlüssel ein und wechseln den Modus per Schalter. Bei eigenen Integrationen spielen Sie die Änderung in einer verkehrsarmen Zeit ein.
Kann ich Ratenkauf anbieten?
Ja. Aktivieren Sie im Stripe-Dashboard unter Zahlungsarten „Jetzt kaufen, später bezahlen“-Optionen wie Klarna und schalten Sie sie anschließend im Plugin frei.
Wie laufen Erstattungen?
Vollständige Erstattungen lösen Sie in der Shopware-Bestellung aus, das Plugin ruft die Stripe-API auf. Teilerstattungen gehen im Stripe-Dashboard oder per API mit Angabe des Betrags.
Was kostet Stripe?
Für Karten aus dem Europäischen Wirtschaftsraum liegt der Standardtarif bei etwa 1,5 % plus 0,25 € je Transaktion, internationale Karten und Währungsumrechnung kosten mehr. Die aktuellen Konditionen stehen auf stripe.com.
Welche Zahlungsarten ergänzen Stripe sinnvoll?
Für den deutschen Markt vor allem PayPal und Amazon Pay, dazu Kauf auf Rechnung. Wo Ihr Checkout Kunden verliert, zeigt unsere Shop-Analyse.