QR-Codes für Überweisung bei offenen Rechnungen anzeigen
Bernd Wurst

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