Kaarten, wallets en lokale betaalmethoden met één aanbieder: zo integreert u Stripe in Shopware 6, via de officiële plugin of via de API, inclusief webhooks, testkaarten en go-live.
Dat uw webshop betalingen soepel en veilig accepteert, is niet onderhandelbaar. Deze gids leidt webshopeigenaren en developers naar een robuuste Stripe-integratie in Shopware 6. U leert:
Welke andere aanbieders te koppelen zijn, ziet u in ons overzicht van Shopware-betaalintegraties.
Stripe is een platform om online betalingen te accepteren: eenmalige aankopen, abonnementen of uitbetalingen aan marktplaatsverkopers. Naast pure kaartbetalingen biedt Stripe:
Voor headless webshops of sterk aangepaste processen:
stripe/stripe-php via Composer installeren, PaymentIntents aanmaken, betalingen bevestigen en abonnementen beheren.payment_intent.succeeded, invoice.payment_failed of charge.refunded ontvangen en de bestelstatus in Shopware instellen.Een eigen koppeling ontwikkelen wij als Shopware-plugin of -app, zie Shopware-pluginontwikkeling.
Beheert u extensies via Composer, dan haalt u het pakket op via uw Shopware-account en activeert u het vervolgens:
bin/console plugin:refresh
bin/console plugin:install --activate StripeShopwarePayment
bin/console cache:clear
De exacte technische naam toont bin/console plugin:list.
pk_test_ en sk_test_).payment_intent.succeeded, payment_intent.payment_failed, charge.refunded en bij abonnementen invoice.payment_succeeded.whsec_…) naar de pluginconfiguratie.Veel pluginversies maken het endpoint automatisch aan. Controleer in het dashboard of het bestaat en naar de juiste modus verwijst.
Activeer de betaalmethoden vervolgens onder Instellingen → Shop → Betaalmethoden en wijs ze toe aan de verkoopkanalen.
4242 4242 4242 4242, willekeurige toekomstige vervaldatum, willekeurige controlecode.Met het Payment Element toont Stripe alle geactiveerde betaalmethoden in één formulier direct in uw checkout. De basisopzet in een eigen integratie:
<form id="payment-form">
<div id="payment-element"></div>
<button id="submit">Nu betalen</button>
</form>
const stripe = Stripe('pk_test_IHR_SCHLUESSEL');
// clientSecret komt van de PaymentIntent die uw server heeft aangemaakt
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); }
});
De Shopware-plugin regelt deze integratie zelf; de code is alleen relevant als u een eigen checkout bouwt.
4242 4242 4242 42424000 0000 0000 00024000 0000 0000 99954000 0025 0000 3155pk_live_, sk_live_) invoeren in de pluginconfiguratie.Stripe stuurt bij elk belangrijk event een melding. De meest voorkomende:
payment_intent.succeeded: bestelling als betaald markeren en bevestiging versturen.payment_intent.payment_failed: klant informeren en een andere betaalmethode aanbieden.charge.refunded: bestelling op “terugbetaald” zetten en bewijs versturen.invoice.payment_succeeded: abonnement verlengen en kwitantie sturen.$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);
Controleer altijd de handtekening, antwoord snel met 200 en verwerk het event idempotent, want Stripe herhaalt afleveringen. Hoe Shopware zelf webhooks afhandelt, leest u in ons artikel over webhooks in Shopware 6.
var/log/ controleren op exceptions.stripe listen --forward-to https://ihr-shop.test/stripe/webhookMet Stripe Checkout of Elements verwerkt Stripe de kaartgegevens, niet uw server. Lever checkoutpagina’s uitsluitend via HTTPS uit en log nooit volledige kaartgegevens.
Activeer de standaardregels van Radar, controleer gemarkeerde betalingen regelmatig en verfijn limieten voor opvallende patronen. Gebruik 3-D Secure; in Europa is sterke klantauthenticatie sowieso verplicht.
Hang ordernummer, klant-ID en winkelwagentotaal als metadata aan elke PaymentIntent. Zo kunt u betalingen in Stripe en boekhouding eenduidig afstemmen.
Hoe wissel ik API-sleutels zonder de webshop offline te halen?
De plugin bewaart test- en live-sleutels naast elkaar; u voert de nieuwe sleutels in en wisselt de modus met een schakelaar. Bij eigen integraties voert u de wijziging door op een rustig moment.
Kan ik betalen in termijnen aanbieden?
Ja. Activeer in het Stripe-dashboard onder betaalmethoden “Nu kopen, later betalen”-opties zoals Klarna en schakel ze vervolgens vrij in de plugin.
Hoe verlopen terugbetalingen?
Volledige terugbetalingen start u in de Shopware-bestelling, de plugin roept de Stripe-API aan. Gedeeltelijke terugbetalingen gaan via het Stripe-dashboard of via de API met opgave van het bedrag.
Wat kost Stripe?
Voor kaarten uit de Europese Economische Ruimte ligt het standaardtarief op ongeveer 1,5 % plus € 0,25 per transactie; internationale kaarten en valutaconversie kosten meer. De actuele voorwaarden staan op stripe.com.
Welke betaalmethoden vullen Stripe zinvol aan?
Voor de Duitse markt vooral PayPal en Amazon Pay, daarnaast kopen op factuur. Waar uw checkout klanten verliest, laat onze shopanalyse zien.