Für ein weiteres Feature in einem Projekt sollte ein QR Code mit Informationen zu Überweisungen eingebaut werden. Ziel war es dem Rechnungsempfänger eine Möglichkeit zu geben, die Rechnung bequem über eine Banking App zu bezahlen. Zudem sollte damit die Zuordnung der Zahlung bei Geldeingang verbessert werden, indem der Verwendungszweck bereits vordefiniert wird.
Die Erzeugung von QR Codes wurde bereits an anderer Stelle genutzt. Im Projekt werden QR Codes mit Hilfe der QR Library (qrlib.php) erzeugt.
Setup der Umgebung
/create.php /qrlib /qrlib/qrlib.php /qrlib/qr...... (weitere Dateien aus der QR-Lib)
Das Skript create.php
Mit dem Skript create.php binde ich die QR-Lib ein und erstelle eine PNG-Datei welche den QR-Code beinhaltet. Der Kern des Skript zur QR-Code Erstellung sieht so aus:
<?php /** * Giro QR Code Generierung */ include( dirname( __FILE__ ) . '/qrlib.php'); // Daten $iban = "GB33BUKB20201555555555"; $bic = "MARKDEFF"; $recipient = "Max Mustermann"; $currency = "EUR"; $amount = 99.99; $amount = number_format( str_replace( ",", ".", $amount ), 2, ',', '' ); $subject = "Rechnung 123456789"; $comment = "Kommentar"; // QR Code Daten (Zeilenumbruch beachten) $data = "BCD 001 1 SCT ".$bic." ".$recipient." ".$iban." ".$currency.$amount." ".$subject." ".$comment; // Dateiname $tempDir = "/irgendein/pfad/zum/temp/verzeichnis/"; $filename = "SEPA_".time().".png"; // QR Code generieren $qr_Size = 4; QRcode::png( $data, $tempDir . '/' . $filename, "QR_ECLEVEL_M", $qr_Size, 2 ); // Ergebnis checken if( is_file( $tempDir . '/' . $filename ) ) { print( $tempDir . '/' . $filename . " erfolgreich!<br/>" ); } else { print( $tempDir . '/' . $filename . " nicht erfolgreich!<br/>" ); }
Hinweis: Bitte darauf achten keine Überweisung auszulösen! Die Kontodaten sind Testdaten! 🙂
Ich haffe das das Skript mit der Hilfe der Kommentarzeilen selbsterklärend ist. Im Grunde werden im oberen Bereich alle Informationen zur Überweisung definiert. Im mittleren Abschnitt wird die Variable $data gefüllt. Hierbei sind insbesondere die Zeilenumbrüche (auch die Leerzeilen!) zu beachten. Diese fungieren als Trenner zwischen den Angaben.
Im unteren Bereich wird noch der Dateipfad und Dateiname definiert. Anschließen wird mit QRcode::png() die Funktion zur Generierung des QR Codes aufgerufen. Der Erfolg des Aufrufs wird abschließend über das Vorhandensein der PNG Datei überprüft.
Im Projekt sebst wird der QR Code in die PDF Rechnung eingebaut. Nach der erfolgreichen Generierung der Rechnung wird die temporäre PNG Datei mit dem QR Code gelöscht. Des ist nicht Teil dieses Skripts, aber wichtig um ein Vollaufen des angegebenen Verzeichnises zu vermeiden.
Quellen
QR-Library: http://phpqrcode.sourceforge.net/
Spezifikationen des European Payments Council: https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/quick-response-code-guidelines-enable-data-capture-initiation
4 thoughts to “Giro QR Code erzeugen mit PHP”
Hallo Sebastian, Mega Script – hast du eine Idee wie man das lösen könnte das ein Rahmen herum ist mit dem Text Zahlen mit Code? Danke und VG
Hallo Markus.
Das sollte kein Problem sein. Ich würde das über HTML / CSS machen an der Stelle, an der du das QR-Code Bild in deine Seite einbaust. Das könnte so aussehen:
<div style="border: 1px solid #000000; padding:5px;">
<img src="pfad/zumverzeichnis/SEPA_1660338149.png">
<div>Zahlen mit Code</div>
</div>
Ich hoffe ich habe deine Anforderung richtig verstanden.
Viele Grüße,
Sebastian
Hallo Sebastian, wer nur ab und zu einen Girocode erstellen muss und nicht so versiert in PHP ist, für den ist vielleicht https://zahlen-mit-code.com/ etwas. Nutze ich für meine Spenden für unser Tierheim.
Hallo Lisa. Vielen Dank für den Tipp. VG