SEPA-Lastschrift Zahlungsmethode für Shopware 6.7 mit Mandatsverwaltung, IBAN-Validierung und PDF-Export.
Dieses Plugin ist KEIN Payment Provider!
Das Plugin stellt lediglich die Erfassung und Verwaltung von SEPA-Mandaten bereit. Es erfolgt:
- Keine automatische Abbuchung - Sie müssen die Lastschriften selbst bei Ihrer Bank einreichen
- Keine Risiko- oder Bonitätsprüfung - Es gibt keine Fraud Detection oder Scoring
- Keine Zahlungsgarantie - Rücklastschriften sind möglich und müssen selbst verwaltet werden
Das Plugin ist ideal für Händler, die bereits einen direkten Bankzugang für Lastschrifteinzüge haben und die Mandatsverwaltung in Shopware integrieren möchten.
Die Installation über den Shopware Store wird empfohlen. Nach dem Kauf können Sie das Plugin direkt über das Backend installieren.
Fügen Sie das private Composer-Repository zur composer.json Ihres Shops hinzu:
{
"repositories": [
{
"type": "composer",
"url": "https://packeton.markus-michalski.net"
}
]
}
Hinweis: Die Zugangsdaten zum Repository werden nach Erwerb einer Lizenz zugestellt.
composer require mmd/sepa-payment
Bei der Authentifizierungsabfrage geben Sie die Zugangsdaten ein, die Sie mit Ihrer Lizenz erhalten haben.
bin/console plugin:refresh
bin/console plugin:install --activate MmdSepaPayment
bin/console database:migrate MmdSepaPayment --all
bin/console cache:clear
bin/build-storefront.sh
Auf die neueste Version aktualisieren:
composer update mmd/sepa-payment
bin/console database:migrate MmdSepaPayment --all
bin/console cache:clear
Plugin-Konfiguration im Shopware Admin unter:
Einstellungen > Erweiterungen > SEPA-Lastschrift
| Einstellung | Pflicht | Beschreibung |
|---|---|---|
| Gläubigername | Ja | Ihr Firmenname für das Mandat |
| Gläubiger-ID | Ja | SEPA Gläubiger-Identifikationsnummer |
| Gläubiger-IBAN | Ja | IBAN Ihres Geschäftskontos |
| Gläubiger-BIC | Nein | BIC/SWIFT (optional für Inlandszahlungen) |
Gläubiger-ID beantragen: Die Gläubiger-Identifikationsnummer können Sie bei der Deutschen Bundesbank beantragen: bundesbank.de
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Mandatstext | Standard | Rechtstext, der beim Checkout angezeigt wird |
| Referenz-Präfix | SEPA | Präfix für Mandatsreferenzen |
Nach der Bestellung finden Sie die Mandatsdaten:
Das Plugin dispatcht ein Event, wenn ein SEPA-Mandat erstellt wird. Dies ermöglicht anderen Plugins, auf die Mandatserstellung zu reagieren - ideal für Integrationen mit ERP, CRM, Buchhaltung oder anderen Systemen.
Event-Name: mmd.sepa_payment.mandate.created
Event-Klasse: Mmd\SepaPayment\Event\MandateCreatedEvent
| Methode | Rückgabe | Beschreibung |
|---|---|---|
getMandateId() |
string |
UUID des erstellten Mandats |
getCustomerId() |
string |
UUID des Kunden |
getOrderId() |
string |
UUID der zugehörigen Bestellung |
getContext() |
Context |
Shopware Context |
getMandate() |
SepaMandateEntity\|null |
Das vollständige Mandat-Entity |
<?php
namespace MyPlugin\Subscriber;
use Mmd\SepaPayment\Event\MandateCreatedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class SepaMandateSubscriber implements EventSubscriberInterface
{
public function __construct(
private readonly MyErpService $erpService,
) {}
public static function getSubscribedEvents(): array
{
return [
'mmd.sepa_payment.mandate.created' => 'onMandateCreated',
];
}
public function onMandateCreated(MandateCreatedEvent $event): void
{
$mandateId = $event->getMandateId();
$customerId = $event->getCustomerId();
$orderId = $event->getOrderId();
$mandate = $event->getMandate();
// Beispiel: An ERP-System senden
$this->erpService->syncMandate([
'mandate_reference' => $mandate->getMandateReference(),
'account_holder' => $mandate->getAccountHolder(),
'signed_at' => $mandate->getSignedAt(),
]);
}
}
Wenn Ihr Plugin das SEPA-Plugin nur optional unterstützen soll (nicht als Pflichtabhängigkeit):
<!-- services.xml -->
<service id="MyPlugin\Subscriber\SepaMandateSubscriber">
<argument type="service" id="my_service"/>
<tag name="kernel.event_subscriber"/>
</service>
// Event-Name als String verwenden (keine harte Abhängigkeit auf die Event-Klasse)
public static function getSubscribedEvents(): array
{
return [
'mmd.sepa_payment.mandate.created' => 'onMandateCreated',
];
}
public function onMandateCreated(object $event): void
{
// Type als object, nicht MandateCreatedEvent
$mandateId = $event->getMandateId();
// ...
}
Nutzen Sie den Service für Mandats-Operationen in Ihrem Plugin:
<?php
use Mmd\SepaPayment\Service\Contract\SepaMandateServiceInterface;
class MyService
{
public function __construct(
private readonly SepaMandateServiceInterface $mandateService,
) {}
public function getCustomerMandate(string $customerId, Context $context): ?array
{
$mandate = $this->mandateService->getMandateByCustomerId($customerId, $context);
if ($mandate === null) {
return null;
}
return [
'reference' => $mandate->getMandateReference(),
'iban_masked' => $this->mandateService->getMaskedIban($mandate),
'iban_decrypted' => $this->mandateService->getDecryptedIban($mandate),
'account_holder' => $mandate->getAccountHolder(),
'bic' => $mandate->getBic(),
'signed_at' => $mandate->getSignedAt(),
'status' => $mandate->getStatus(),
];
}
}
| Methode | Beschreibung |
|---|---|
getMandateByCustomerId() |
Aktives Mandat eines Kunden abrufen |
getMandateById() |
Mandat per UUID abrufen |
hasActiveMandate() |
Prüfen ob Kunde aktives Mandat hat |
getDecryptedIban() |
Entschlüsselte IBAN erhalten |
getMaskedIban() |
Maskierte IBAN (DE89****3456) für Anzeige |
Das Event ermöglicht vielfältige Integrationen:
Automatisch Kundenstammdaten in SAP, DATEV, Lexware oder anderen ERP-Systemen aktualisieren, wenn ein neues Mandat erstellt wird.
Mandate-Daten an Salesforce, HubSpot, Pipedrive oder andere CRM-Systeme senden für vollständige Kundendaten.
Benachrichtigung an sevDesk, FastBill, BuchhaltungsButler wenn neue Lastschrift-Mandate vorliegen.
Protokollierung aller Mandatserstellungen für SEPA-Compliance und Audit-Trails.
Automatische E-Mail-Bestätigung an Kunden bei erfolgreicher Mandatserstellung.
Verbindung mit Zapier, Make (Integromat), n8n für beliebige Automationen.
Kommerzielle Lizenz - Einzelinstallations-Lizenz inklusive:
Siehe LICENSE-Datei für vollständige Bedingungen.
Bei Fragen und Support:
Markus Michalski
E-Mail: support@markus-michalski.net