Ticket #35: sepa.php

File sepa.php, 19.0 KB (added by Volker Rehn, 12 years ago)
Line 
1<?php
2// includes/modules/payment/banktransfer.php ==========================================================================
3
4function javascript_validation() {
5 $js = 'if (payment_value == "' . $this->code . '") {' . "\n" .
6 ' var banktransfer_bic = document.getElementById("checkout_payment").banktransfer_bic.value;' . "\n" .
7 ' var banktransfer_iban = document.getElementById("checkout_payment").banktransfer_iban.value;' . "\n" .
8 ' var banktransfer_blz = document.getElementById("checkout_payment").banktransfer_blz.value;' . "\n" .
9 ' var banktransfer_number = document.getElementById("checkout_payment").banktransfer_number.value;' . "\n" .
10 ' var banktransfer_owner = document.getElementById("checkout_payment").banktransfer_owner.value;' . "\n" .
11 ' if (document.getElementById("checkout_payment").banktransfer_fax) { ' . "\n" .
12 ' var banktransfer_fax = document.getElementById("checkout_payment").banktransfer_fax.checked;' . "\n" .
13 ' } else { var banktransfer_fax = false; } ' . "\n" .
14 ' if (banktransfer_fax == false) {' . "\n" .
15 ' if (banktransfer_bic != "" || banktransfer_iban != "") {' . "\n" .
16 ' if (banktransfer_bic == "") {' . "\n" .
17 ' error_message = error_message + "' . JS_BANK_BIC . '";' . "\n" .
18 ' error = 1;' . "\n" .
19 ' }' . "\n" .
20 ' if (banktransfer_iban == "") {' . "\n" .
21 ' error_message = error_message + "' . JS_BANK_IBAN . '";' . "\n" .
22 ' error = 1;' . "\n" .
23 ' }' . "\n" .
24 ' }' . "\n" .
25 ' else {' . "\n" .
26 ' if (banktransfer_blz == "") {' . "\n" .
27 ' error_message = error_message + "' . JS_BANK_BLZ . '";' . "\n" .
28 ' error = 1;' . "\n" .
29 ' }' . "\n" .
30 ' if (banktransfer_number == "") {' . "\n" .
31 ' error_message = error_message + "' . JS_BANK_NUMBER . '";' . "\n" .
32 ' error = 1;' . "\n" .
33 ' }' . "\n" .
34 ' }' . "\n" .
35 ' if (banktransfer_owner == "") {' . "\n" .
36 ' error_message = error_message + "' . JS_BANK_OWNER . '";' . "\n" .
37 ' error = 1;' . "\n" .
38 ' }' . "\n" .
39 ' }' . "\n" .
40 '}' . "\n";
41 return $js;
42 }
43
44function selection() {
45 global $order;
46
47// banktransfer_number von size 20 auf 40, da die iban mit füllzeichen so lang werden kann (ohne die max 34), 11.10.2013 vr
48 $selection = array('id' => $this->code,
49 'module' => $this->title,
50 'description'=>$this->info,
51 'fields' => array(array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE,
52 'field' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_INFO),
53 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_OWNER,
54 'field' => xtc_draw_input_field('banktransfer_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'], 'size="40"')),
55 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BIC,
56 'field' => xtc_draw_input_field('banktransfer_bic', $_GET['banktransfer_bic'], 'size="40" maxlength="11"')),
57 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_IBAN,
58 'field' => xtc_draw_input_field('banktransfer_iban', $_GET['banktransfer_iban'], 'size="40" maxlength="50"')),
59 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BLZ,
60 'field' => xtc_draw_input_field('banktransfer_blz', $_GET['banktransfer_blz'], 'size="40" maxlength="8"')),
61 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NUMBER,
62 'field' => xtc_draw_input_field('banktransfer_number', $_GET['banktransfer_number'], 'size="40" maxlength="32"')),
63 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NAME,
64 'field' => xtc_draw_input_field('banktransfer_bankname')),
65 array('title' => '',
66 'field' => xtc_draw_hidden_field('recheckok', $_POST['recheckok']))
67 ));
68
69 if (MODULE_PAYMENT_BANKTRANSFER_FAX_CONFIRMATION =='true'){
70 $selection['fields'][] = array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE,
71 'field' => MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE2 . '<a href="' . MODULE_PAYMENT_BANKTRANSFER_URL_NOTE . '" target="_blank"><b>' . MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE3 . '</b></a>' . MODULE_PAYMENT_BANKTRANSFER_TEXT_NOTE4);
72 $selection['fields'][] = array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_FAX,
73 'field' => xtc_draw_checkbox_field('banktransfer_fax', 'on'));
74
75 }
76
77 return $selection;
78 }
79
80
81
82function pre_confirmation_check(){
83
84 if ($_POST['banktransfer_fax'] == false && $_POST['recheckok'] != 'true') {
85 include(DIR_WS_CLASSES . 'banktransfer_validation.php');
86 include(DIR_WS_EXTERNAL . 'php-iban/php-iban.php');
87
88 // check iban and bic
89 if (!empty($_POST['banktransfer_iban']) || !empty($_POST['banktransfer_bic'])) {
90 // bic o.k.?
91 if (empty($_POST['banktransfer_bic'])) {
92 $banktransfer_result = 11; // no bic
93 }
94 // iban o.k.?
95 else if (verify_iban($_POST['banktransfer_iban'])) {
96 $banktransfer_iban_parts = iban_get_parts($_POST['banktransfer_iban']);
97 // normalize iban
98 $_POST['banktransfer_iban'] = iban_to_machine_format($_POST['banktransfer_iban']);
99 $banktransfer_result = 0; // o.k.
100 }
101 else {
102 $banktransfer_result = 12; // not o.k.
103 }
104 }
105
106 $banktransfer_validation = new AccountCheck;
107 if (empty($banktransfer_result)) {
108 if (empty($banktransfer_iban_parts)) {
109 $banktransfer_result = $banktransfer_validation->CheckAccount($_POST['banktransfer_number'], $_POST['banktransfer_blz']);
110 }
111 else if ($banktransfer_iban_parts['country'] == 'DE') {
112 // take blz and number from iban, if iban was given and is o.k.
113 $_POST['banktransfer_blz'] = $banktransfer_iban_parts['bank'];
114 $_POST['banktransfer_number'] = $banktransfer_iban_parts['account'];
115 $banktransfer_result = $banktransfer_validation->CheckAccount($_POST['banktransfer_number'], $_POST['banktransfer_blz']);
116 }
117 }
118
119 if ($banktransfer_validation->Bankname != '') {
120 $this->banktransfer_bankname = $banktransfer_validation->Bankname;
121 } else {
122 $this->banktransfer_bankname = xtc_db_prepare_input($_POST['banktransfer_bankname']);
123 }
124
125 if ($_POST['banktransfer_owner'] == '') {
126 $banktransfer_result = 10;
127 }
128
129 switch ($banktransfer_result) {
130 case 0: // payment o.k.
131 $error = 'O.K.';
132 $recheckok = 'false';
133 break;
134 case 1: // number & blz not ok
135 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_1;
136 $recheckok = 'false';
137 break;
138 case 2: // account number has no calculation method
139 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_2;
140 $recheckok = 'true';
141 break;
142 case 3: // No calculation method implemented
143 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_3;
144 $recheckok = 'true';
145 break;
146 case 4: // Number cannot be checked
147 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_4;
148 $recheckok = 'true';
149 break;
150 case 5: // BLZ not found
151 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_5;
152 $recheckok = 'false'; // Set "true" if you have not the latest BLZ table!
153 break;
154 case 8: // no BLZ entered
155 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_8;
156 $recheckok = 'false';
157 break;
158 case 9: // no number entered
159 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_9;
160 $recheckok = 'false';
161 break;
162 case 10: // no account holder entered
163 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_10;
164 $recheckok = 'false';
165 break;
166 case 11: // no bic entered
167 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_11;
168 $recheckok = 'false';
169 break;
170 case 12: // iban not o.k.
171 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_12;
172 $recheckok = 'false';
173 break;
174 case 128: // Internal error
175 $error = 'Internal error, please check again to process your payment';
176 $recheckok = 'true';
177 break;
178 default:
179 $error = MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_4;
180 $recheckok = 'true';
181 break;
182 }
183
184 if ($banktransfer_result > 0 && $_POST['recheckok'] != 'true') {
185 $payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&banktransfer_owner=' . urlencode($_POST['banktransfer_owner']) . '&banktransfer_bic=' . urlencode($_POST['banktransfer_bic']) . '&banktransfer_iban=' . urlencode($_POST['banktransfer_iban']) . '&banktransfer_number=' . urlencode($_POST['banktransfer_number']) . '&banktransfer_blz=' . urlencode($_POST['banktransfer_blz']) . '&banktransfer_bankname=' . urlencode($_POST['banktransfer_bankname']) . '&recheckok=' . $recheckok;
186 xtc_redirect(xtc_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
187 }
188
189 $this->banktransfer_owner = xtc_db_prepare_input($_POST['banktransfer_owner']);
190 $this->banktransfer_bic = xtc_db_prepare_input($_POST['banktransfer_bic']);
191 $this->banktransfer_iban = xtc_db_prepare_input($_POST['banktransfer_iban']);
192 $this->banktransfer_blz = xtc_db_prepare_input($_POST['banktransfer_blz']);
193 $this->banktransfer_number = xtc_db_prepare_input($_POST['banktransfer_number']);
194 $this->banktransfer_prz = $banktransfer_validation->PRZ;
195 $this->banktransfer_status = $banktransfer_result;
196 }
197 }
198
199 function confirmation() {
200 global $banktransfer_val, $banktransfer_owner, $banktransfer_bankname, $banktransfer_bic, $banktransfer_iban, $banktransfer_blz, $banktransfer_number, $checkout_form_action, $checkout_form_submit;
201
202 if (!$_POST['banktransfer_owner'] == '') {
203 $confirmation = array('title' => $this->title,
204 'fields' => array(array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_OWNER,
205 'field' => $this->banktransfer_owner),
206 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BIC,
207 'field' => $this->banktransfer_bic),
208 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_IBAN,
209 'field' => $this->banktransfer_iban),
210 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BLZ,
211 'field' => $this->banktransfer_blz),
212 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NUMBER,
213 'field' => $this->banktransfer_number),
214 array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_NAME,
215 'field' => $this->banktransfer_bankname)
216 ));
217 }
218 if ($_POST['banktransfer_fax'] == "on") {
219 $confirmation = array('fields' => array(array('title' => MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_FAX)));
220 $this->banktransfer_fax = "on";
221 }
222 return $confirmation;
223 }
224
225function process_button() {
226 global $_POST;
227
228 $process_button_string = xtc_draw_hidden_field('banktransfer_blz', $this->banktransfer_blz) .
229 xtc_draw_hidden_field('banktransfer_bankname', $this->banktransfer_bankname).
230 xtc_draw_hidden_field('banktransfer_bic', $this->banktransfer_bic) .
231 xtc_draw_hidden_field('banktransfer_iban', $this->banktransfer_iban) .
232 xtc_draw_hidden_field('banktransfer_number', $this->banktransfer_number) .
233 xtc_draw_hidden_field('banktransfer_owner', $this->banktransfer_owner) .
234 xtc_draw_hidden_field('banktransfer_status', $this->banktransfer_status) .
235 xtc_draw_hidden_field('banktransfer_prz', $this->banktransfer_prz) .
236 xtc_draw_hidden_field('banktransfer_fax', $this->banktransfer_fax);
237
238 return $process_button_string;
239
240 }
241
242function after_process() {
243 global $insert_id, $_POST, $banktransfer_val, $banktransfer_owner, $banktransfer_bankname, $banktransfer_bic, $banktransfer_iban, $banktransfer_blz, $banktransfer_number, $banktransfer_status, $banktransfer_prz, $banktransfer_fax, $checkout_form_action, $checkout_form_submit;
244 xtc_db_query("INSERT INTO banktransfer (orders_id, banktransfer_blz, banktransfer_bankname, banktransfer_number, banktransfer_owner, banktransfer_status, banktransfer_prz, banktransfer_bic, banktransfer_iban) VALUES ('" . $insert_id . "', '" . $this->banktransfer_blz . "', '" . $this->banktransfer_bankname . "', '" . $this->banktransfer_number . "', '" . $this->banktransfer_owner ."', '" . $this->banktransfer_status ."', '" . $this->banktransfer_prz ."', '" . $this->banktransfer_bic ."', '" . $this->banktransfer_iban ."')");
245 if ($_POST['banktransfer_fax'])
246 xtc_db_query("update banktransfer set banktransfer_fax = '" . $this->banktransfer_fax ."' where orders_id = '" . $insert_id . "'");
247 if ($this->order_status) xtc_db_query("UPDATE ". TABLE_ORDERS ." SET orders_status='".$this->order_status."' WHERE orders_id='".$insert_id."'");
248 }
249
250 function install() {
251 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_STATUS', 'True', '6', '1', 'xtc_cfg_select_option(array(\'True\', \'False\'), ', now())");
252 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_ZONE', '0', '6', '2', 'xtc_get_zone_class_title', 'xtc_cfg_pull_down_zone_classes(', now())");
253 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_ALLOWED', '', '6', '0', now())");
254 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_SORT_ORDER', '0', '6', '0', now())");
255 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, set_function, use_function, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_ORDER_STATUS_ID', '0', '6', '0', 'xtc_cfg_pull_down_order_statuses(', 'xtc_get_order_status_name', now())");
256 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_FAX_CONFIRMATION', 'false', '6', '2', 'xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");
257 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_DATABASE_BLZ', 'false', '6', '0', 'xtc_cfg_select_option(array(\'true\', \'false\'), ', now())");
258 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_URL_NOTE', 'fax.html', '6', '0', now())");
259 xtc_db_query("CREATE TABLE IF NOT EXISTS banktransfer (orders_id int(11) NOT NULL default '0', banktransfer_owner varchar(64) default NULL, banktransfer_number varchar(24) default NULL, banktransfer_bankname varchar(255) default NULL, banktransfer_blz varchar(8) default NULL, banktransfer_status int(11) default NULL, banktransfer_prz char(2) default NULL, banktransfer_fax char(2) default NULL, banktransfer_bic varchar(11) default NULL, banktransfer_iban varchar(50) default NULL, KEY orders_id(orders_id))");
260 xtc_db_query("insert into " . TABLE_CONFIGURATION . " ( configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_BANKTRANSFER_MIN_ORDER', '0', '6', '0', now())");
261 }
262
263// lang/german/modules/payment/banktransfer.php =======================================================================
264define('MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_INFO', 'Bitte beachten Sie, dass das Lastschriftverfahren ohne Angabe von BIC/IBAN <b>nur</b> von einem <b>deutschen Girokonto</b> aus m&ouml;glich ist. <br />Durch Angabe von BIC/IBAN k&ouml;nnen Sie das Lastschriftverfahren <b>EU-weit</b> nutzen');
265
266define('MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_IBAN', 'IBAN:');
267define('MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_BIC', 'BIC:');
268
269define('MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_11', 'Sie haben keinen BIC angegeben.');
270define('MODULE_PAYMENT_BANKTRANSFER_TEXT_BANK_ERROR_12', 'Sie haben keine korrekte IBAN eingegeben.');
271
272define('JS_BANK_BIC', '* Bitte geben Sie die BIC Ihrer Bank ein!\n\n');
273define('JS_BANK_IBAN', '* Bitte geben Sie Ihre IBAN ein!\n\n');
274?>