Bernd Wurst commited on 2013-12-07 08:45:14
Zeige 2 geänderte Dateien mit 99 Einfügungen und 0 Löschungen.
| ... | ... |
@@ -72,4 +72,14 @@ output("<td style=\"font-weight: bold;\">{$summe} €</td></tr>\n");
|
| 72 | 72 |
output('</table><br />');
|
| 73 | 73 |
|
| 74 | 74 |
|
| 75 |
+if ($invoice['bezahlt'] == 0 && $invoice['abbuchung'] == 0) {
|
|
| 76 |
+ $qrcode_image = generate_qrcode_image($invoice_id); |
|
| 77 |
+ |
|
| 78 |
+ output('<h4>QR-Code für Mobile Banking (STUZZA-Verfahren, Österreichische und viele deutschen Banken)</h4><p><img src="data:image/png;base64,'.base64_encode($qrcode_image).'" /></p>');
|
|
| 79 |
+ |
|
| 80 |
+ $qrcode_image = generate_bezahlcode_image($invoice_id); |
|
| 81 |
+ |
|
| 82 |
+ output('<h4>BezahlCode für Mobile Banking (BezahlCode, für iPhone-Anwendungen von Drittanbietern)</h4><p><img src="data:image/png;base64,'.base64_encode($qrcode_image).'" /></p>');
|
|
| 83 |
+} |
|
| 84 |
+ |
|
| 75 | 85 |
?> |
| ... | ... |
@@ -75,4 +75,93 @@ function upcoming_items() |
| 75 | 75 |
} |
| 76 | 76 |
|
| 77 | 77 |
|
| 78 |
+function generate_qrcode_image($id) |
|
| 79 |
+{
|
|
| 80 |
+ $invoice = invoice_details($id); |
|
| 81 |
+ $customerno = $invoice['kunde']; |
|
| 82 |
+ $amount = 'EUR'.sprintf('%.2f', $invoice['betrag']);
|
|
| 83 |
+ $datum = $invoice['datum']; |
|
| 84 |
+ $data = 'BCD |
|
| 85 |
+001 |
|
| 86 |
+1 |
|
| 87 |
+SCT |
|
| 88 |
+GENODES1VBK |
|
| 89 |
+schokokeks.org GbR |
|
| 90 |
+DE91602911200041512006 |
|
| 91 |
+'.$amount.' |
|
| 92 |
+ |
|
| 93 |
+ |
|
| 94 |
+RE '.$id.' KD '.$customerno.' vom '.$datum.' |
|
| 95 |
+Rechnung '.$id.' von schokokeks.org'; |
|
| 96 |
+ |
|
| 97 |
+ $descriptorspec = array( |
|
| 98 |
+ 0 => array("pipe", "r"), // STDIN ist eine Pipe, von der das Child liest
|
|
| 99 |
+ 1 => array("pipe", "w"), // STDOUT ist eine Pipe, in die das Child schreibt
|
|
| 100 |
+ 2 => array("pipe", "w")
|
|
| 101 |
+ ); |
|
| 102 |
+ |
|
| 103 |
+ $process = proc_open('qrencode -t PNG -o - -l M', $descriptorspec, $pipes);
|
|
| 104 |
+ |
|
| 105 |
+ if (is_resource($process)) {
|
|
| 106 |
+ // $pipes sieht nun so aus: |
|
| 107 |
+ // 0 => Schreibhandle, das auf das Child STDIN verbunden ist |
|
| 108 |
+ // 1 => Lesehandle, das auf das Child STDOUT verbunden ist |
|
| 109 |
+ |
|
| 110 |
+ fwrite($pipes[0], $data); |
|
| 111 |
+ fclose($pipes[0]); |
|
| 112 |
+ |
|
| 113 |
+ $pngdata = stream_get_contents($pipes[1]); |
|
| 114 |
+ fclose($pipes[1]); |
|
| 115 |
+ |
|
| 116 |
+ // Es ist wichtig, dass Sie alle Pipes schließen bevor Sie |
|
| 117 |
+ // proc_close aufrufen, um Deadlocks zu vermeiden |
|
| 118 |
+ $return_value = proc_close($process); |
|
| 119 |
+ |
|
| 120 |
+ return $pngdata; |
|
| 121 |
+ } else {
|
|
| 122 |
+ warning('Es ist ein interner Fehler im Webinterface aufgetreten, aufgrund dessen kein QR-Code erstellt werden kann. Sollte dieser Fehler mehrfach auftreten, kontaktieren Sie bitte die Administratoren.');
|
|
| 123 |
+ } |
|
| 124 |
+} |
|
| 125 |
+ |
|
| 126 |
+ |
|
| 127 |
+function generate_bezahlcode_image($id) |
|
| 128 |
+{
|
|
| 129 |
+ $invoice = invoice_details($id); |
|
| 130 |
+ $customerno = $invoice['kunde']; |
|
| 131 |
+ $amount = str_replace('.', '%2C', sprintf('%.2f', $invoice['betrag']));
|
|
| 132 |
+ $datum = $invoice['datum']; |
|
| 133 |
+ $data = 'bank://singlepaymentsepa?name=schokokeks.org%20GbR&reason=RE%20'.$id.'%20KD%20'.$customerno.'%20vom%20'.$datum.'&iban=DE91602911200041512006&bic=GENODES1VBK&amount='.$amount; |
|
| 134 |
+ |
|
| 135 |
+ $descriptorspec = array( |
|
| 136 |
+ 0 => array("pipe", "r"), // STDIN ist eine Pipe, von der das Child liest
|
|
| 137 |
+ 1 => array("pipe", "w"), // STDOUT ist eine Pipe, in die das Child schreibt
|
|
| 138 |
+ 2 => array("pipe", "w")
|
|
| 139 |
+ ); |
|
| 140 |
+ |
|
| 141 |
+ $process = proc_open('qrencode -t PNG -o -', $descriptorspec, $pipes);
|
|
| 142 |
+ |
|
| 143 |
+ if (is_resource($process)) {
|
|
| 144 |
+ // $pipes sieht nun so aus: |
|
| 145 |
+ // 0 => Schreibhandle, das auf das Child STDIN verbunden ist |
|
| 146 |
+ // 1 => Lesehandle, das auf das Child STDOUT verbunden ist |
|
| 147 |
+ |
|
| 148 |
+ fwrite($pipes[0], $data); |
|
| 149 |
+ fclose($pipes[0]); |
|
| 150 |
+ |
|
| 151 |
+ $pngdata = stream_get_contents($pipes[1]); |
|
| 152 |
+ fclose($pipes[1]); |
|
| 153 |
+ |
|
| 154 |
+ // Es ist wichtig, dass Sie alle Pipes schließen bevor Sie |
|
| 155 |
+ // proc_close aufrufen, um Deadlocks zu vermeiden |
|
| 156 |
+ $return_value = proc_close($process); |
|
| 157 |
+ |
|
| 158 |
+ return $pngdata; |
|
| 159 |
+ } else {
|
|
| 160 |
+ warning('Es ist ein interner Fehler im Webinterface aufgetreten, aufgrund dessen kein QR-Code erstellt werden kann. Sollte dieser Fehler mehrfach auftreten, kontaktieren Sie bitte die Administratoren.');
|
|
| 161 |
+ } |
|
| 162 |
+} |
|
| 163 |
+ |
|
| 164 |
+ |
|
| 165 |
+ |
|
| 166 |
+# bank://singlepaymentsepa?name=SCHOKOKEKS.ORG%20GBR&reason=RE%20256%20KD%2032%20vom%202008-03-01&iban=DE91602911200041512006&bic=GENODES1VBK&amount=45%2C00 |
|
| 78 | 167 |
?> |
| 79 | 168 |