Aus Attributen generierten QR-Code in eine Rechnung einbinden

Ich würde gern in eine Rechnung einen QR-Code einbinden, der sämtliche benötigte Zahlungsinformationen enthält.
Generatoren für diesen QR-Code könnte man via API-Calls generell ansprechen.
Ich habe aber im Moment keinerlei Vorstellung, wie etwaiger Code im Shopware aussehen müsste, damit man so einen Call bei der Genereirung der Rechnung aufruft.
Die dem Call zu übergebenden Variablen sind soweit klar, die Ziel-URL steht, nur ein erster Test mittels einem einfachen iframe im invoice.html.twig schlug fehl.
Kann mir jemand einen Hinweis geben, wie ich so eine Einbindung bewerkstellige?

1 Like

Hallo,
nur über das Rechnungstemplate wirst Du das nicht hinkriegen, sondern ein Plugin bauen müssen, dass das ganze umsetzt.

Habe ich selbst auch noch nicht umgesetzt, aber hier wäre eine grobe Skizze, wie man dabei vorgehen könnte:

  1. Erstelle ein Zusatzfeld für die Bestellungen, entweder eine Bilddatei in der dann der QR-Code gespeichert wird oder als Base64 Repräsentation des Bildes (je nachdem, was für einen Dienst Du nutzt)

  2. Schreib ein Plugin, in dem du das Event zur Dokumentenerstellung referenzierst. Darin machst Du dann Deine API-Calls und speicherst den zurückerhaltenen QR-Code in dem Zusatzfeld ab (müsste über das DocumentTemplateRendererParameterEvent laufen soweit ich weiß). Alternativ könntest Du das auch schon beim Erstellen der Order machen, sofern nicht später noch irgendwelche für die Zahlung relevanten Daten dazu kommen.

  3. Jetzt kannst Du in dem Rechnungstemplate darauf zugreifen und den Inhalt des Zusatzfeldes ausgeben.

Hoffe das hilft.

Danke für den Input. Hört sich recht kompliziert an.
Derzeit nutze ich einen statischen QR-Code, der im Filesystem liegt und den ich einfach mittels „<img src“ referenziere. An etwas ähnliches dachte ich halt auch mit dieser Lösung.
Also entweder, direkten Aufruf der URL und das gerenderte SVG Element einfach ausgeben oder eben das SVG von die URL downloaden, temporär speichern und in das Rechnungs PDF mittels „img src“ oder „svg“ oder „source“ (Swift/Twig Funktion) einbinden.
Swift/Twig scheint da jedoch nach meinem derzeitigen Verständnis recht umständlich zu sein resp. habe ich halt von der Sprache kaum Ahnung.
Vielleicht hat ja jemand hier kurz Zeit und Muße, hier einen Ansatz auszutüfteln…

Das Problem ist, dass die Twig-Template-Dateien nicht dafür gedacht sind, dass du da heraus API-Calls machst. Die sind ausschließlich für die Datenausgabe gedacht und direkt daraus einen dynamischen QR-Code zu generieren geht meines Erachtens nicht bzw. wäre auch nicht sehr sauber.

Eventuell hat ja noch jemand eine einfachere Idee, bei Fragen zu dem Vorgehen, wie ich es skizziert habe, kannst Du Dich gerne nochmal melden.

Update:
Ich hab die ganze Sache am Laufen. Nicht unbedingt schön gelöst, aber es funktioniert.
Wenn also jemand die Swiss QR-Bill implementieren will und dafür nicht tausende CHF ausgeben kann, helfe ich gern weiter.
Schlussendlich haben wir es mit dieser „Library“ GitHub - sprain/php-swiss-qr-bill: A PHP library to create Swiss QR bills | QR-Rechnung in PHP erstellen gelöst, die per PHP mittels in der URL übergebenen Variablen aus dem Twig heraus aufgerufen wird und das QR-Image zurückgibt, welches dann in ein ebenfalls im Twig eingebundenes CSS den finalen Überweisungsträger abbildet.
Wäre nur noch die unsaubere Lokalisierung für CH (Betragsformatierung) zu lösen.
Da habe ich momentan nur einen sehr dreckigen Workaround mit replace im Twig am laufen.

Hallo Linuxguru. Wir möchten das ebenfalls „zu Fuss“ probieren. Könntest Du das tpl posten, in dem Du den call der Library absetzt? Würde sehr helfen. Vielen Dank.

Hi @linuxguru
auch wir haben es versucht, manuell zu erstellen, dass dort das php aufgerufen wird… leider nicht so erfolgreich.
Würdest Du uns die Struktur und den Aufruf zur Verfügung stellen?
Merci.