QR Code mit TestdatenFü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

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.