18 include_once
'./Services/Payment/classes/class.ilBMFSettings.php';
19 #include_once dirname(__FILE__)."/../bmf/lib/ePayment/cfg_epayment.inc.php";
20 include_once dirname(__FILE__).
"/../bmf/lib/SOAP/class.ilBMFClient.php";
22 include_once
'./Services/Payment/classes/class.ilPayMethods.php';
23 include_once
'./Services/Payment/classes/class.ilPurchaseBaseGUI.php';
49 parent::__construct($this->user_obj, $this->pay_method);
64 if(!count($items = $this->psc_obj->getEntries($this->pm_id)))
67 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
68 $this->tpl->touchBlock(
"stop_floating");
74 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_step1'));
75 $this->tpl->setVariable(
"TITLE",$this->lng->txt(
'pay_bmf_personal_data'));
76 $this->tpl->setVariable(
"DESCRIPTION",$this->lng->txt(
'pay_bmf_description_personal_data'));
78 $this->tpl->addBlockfile(
'ADM_CONTENT',
'adm_content',
'tpl.main_view.html',
'Services/Payment');
81 $oForm->setFormAction($this->ctrl->getFormAction($this,
'getPersonalData'));
82 $oForm->setTitle($this->lng->txt(
'pay_bmf_personal_data'));
85 $oFirstname->
setValue($this->user_obj->getFirstname());
86 $oForm->addItem($oFirstname);
89 $oLastname->
setValue($this->user_obj->getLastname());
90 $oForm->addItem($oLastname);
96 $oForm->addItem($oStreet);
98 $oHouseNumber =
new ilTextInputGUI($this->lng->txt(
'pay_bmf_house_number'),
'house_number');
99 $oHouseNumber->
setValue($this->error !=
'' && isset(
$_POST[
'house_number'])
102 $oForm->addItem($oHouseNumber);
104 $oPoBox =
new ilTextInputGUI($this->lng->txt(
'pay_bmf_or').
' '.$this->lng->txt(
'pay_bmf_po_box'),
'po_box');
108 $oForm->addItem($oPoBox);
110 $oZipCode =
new ilTextInputGUI($this->lng->txt(
'zipcode'),
'zipcode');
111 $oZipCode->
setValue($this->error !=
'' && isset(
$_POST[
'zipcode'])
114 $oForm->addItem($oZipCode);
120 $oForm->addItem($oCity);
125 $oCountry->setValue($this->error !=
'' && isset(
$_POST[
'country']) ?
$_POST[
'country']
126 :
$_SESSION[
'bmf'][
'personal_data'][
'country']);
127 $oForm->addItem($oCountry);
130 $oEmail->
setValue($this->user_obj->getEmail());
131 $oForm->addItem($oEmail);
133 $oForm->addcommandButton(
'getPersonalData',ucfirst($this->lng->txt(
'next')));
134 $this->tpl->setVariable(
'FORM',$oForm->getHTML());
142 if (
$_SESSION[
"bmf"][
"personal_data"][
"firstname"] ==
"" ||
143 $_SESSION[
"bmf"][
"personal_data"][
"lastname"] ==
"" ||
144 $_POST[
"zipcode"] ==
"" ||
146 $_POST[
"country"] ==
"" ||
147 $_SESSION[
"bmf"][
"personal_data"][
"email"] ==
"")
149 $this->error = $this->lng->txt(
'pay_bmf_personal_data_not_valid');
154 if ((
$_POST[
"street"] ==
"" &&
$_POST[
"house_number"] ==
"" &&
$_POST[
"po_box"] ==
"") ||
155 ((
$_POST[
"street"] !=
"" ||
$_POST[
"house_number"] !=
"") &&
$_POST[
"po_box"] !=
"") ||
156 (
$_POST[
"street"] !=
"" &&
$_POST[
"house_number"] ==
"") ||
157 (
$_POST[
"street"] ==
"" &&
$_POST[
"house_number"] !=
""))
159 $this->error = $this->lng->txt(
'pay_bmf_street_or_pobox');
166 $_SESSION[
"bmf"][
"personal_data"][
"firstname"] = $this->user_obj->getFirstname();
167 $_SESSION[
"bmf"][
"personal_data"][
"lastname"] = $this->user_obj->getLastname();
169 $_SESSION[
"bmf"][
"personal_data"][
"house_number"] =
$_POST[
"house_number"];
174 $_SESSION[
"bmf"][
"personal_data"][
"email"] = $this->user_obj->getEmail();
175 $_SESSION[
"bmf"][
"personal_data"][
"language"] = $this->user_obj->getLanguage();
177 if (
$_SESSION[
"bmf"][
"personal_data"][
"country"] !=
"DE")
179 if (
$_SESSION[
"bmf"][
"payment_type"] ==
"debit_entry")
196 if(!count($items = $this->psc_obj->getEntries($this->pm_id)))
199 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
200 $this->tpl->touchBlock(
"stop_floating");
207 $this->tpl->addBlockfile(
'ADM_CONTENT',
'adm_content',
'tpl.pay_bmf_payment_type.html',
'Services/Payment');
209 $this->tpl->setVariable(
"PAYMENT_TYPE_FORMACTION",$this->ctrl->getFormAction($this));
213 $this->tpl->setVariable(
"ALT_IMG",$this->lng->txt(
'obj_usr'));
214 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_step2'));
215 $this->tpl->setVariable(
"TITLE",$this->lng->txt(
'pay_bmf_payment_type'));
216 $this->tpl->setVariable(
"DESCRIPTION",$this->lng->txt(
'pay_bmf_description_payment_type'));
217 $this->tpl->touchBlock(
"stop_floating");
218 $this->tpl->setVariable(
"TXT_CLOSE_WINDOW",$this->lng->txt(
'close_window'));
221 if (
$_SESSION[
"bmf"][
"personal_data"][
"country"] ==
"DE")
223 $this->tpl->setVariable(
"TXT_DEBIT_ENTRY",$this->lng->txt(
'pay_bmf_debit_entry'));
225 $this->tpl->setVariable(
"TXT_CREDIT_CARD",$this->lng->txt(
'pay_bmf_credit_card'));
227 $this->tpl->setVariable(
"INPUT_VALUE",ucfirst($this->lng->txt(
'next')));
228 $this->tpl->setVariable(
"CANCEL",$this->lng->txt(
'cancel'));
232 if ($this->error !=
"" &&
233 isset(
$_POST[
"payment_type"]))
235 $this->tpl->setVariable(
"PAYMENT_TYPE_" . strtoupper(
$_POST[
"payment_type"]),
" checked") ;
239 if ((
$_SESSION[
"bmf"][
"personal_data"][
"country"] !=
"DE" &&
$_POST[
"payment_type"] !=
"debit_entry") ||
240 $_SESSION[
"bmf"][
"personal_data"][
"country"] ==
"DE")
242 $this->tpl->setVariable(
"PAYMENT_TYPE_" . strtoupper(
$_SESSION[
"bmf"][
"payment_type"]),
" checked") ;
247 $this->tpl->addBlockfile(
"BUTTONS",
"buttons",
"tpl.buttons.html");
248 $this->tpl->setCurrentBlock(
"btn_cell");
249 $this->tpl->setVariable(
"BTN_LINK", $this->ctrl->getLinkTarget($this,
"showPersonalData"));
250 $this->tpl->setVariable(
"BTN_TXT", $this->lng->txt(
'pay_bmf_back'));
251 $this->tpl->parseCurrentBlock(
"btn_cell");
258 if ((
$_POST[
"payment_type"] !=
"credit_card" &&
$_POST[
"payment_type"] !=
"debit_entry") ||
259 (
$_SESSION[
"bmf"][
"personal_data"][
"country"] !=
"DE" &&
$_POST[
"payment_type"] ==
"debit_entry"))
261 $this->error = $this->lng->txt(
'pay_bmf_payment_type_not_valid');
270 if (
$_SESSION[
"bmf"][
"payment_type"] ==
"credit_card")
294 if(!count($items = $this->psc_obj->getEntries($this->pm_id)))
297 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
298 $this->tpl->touchBlock(
"stop_floating");
305 $this->tpl->addBlockfile(
'ADM_CONTENT',
'adm_content',
'tpl.pay_bmf_debit_entry.html',
'Services/Payment');
309 $this->tpl->setVariable(
"DEBIT_ENTRY_FORMACTION",$this->ctrl->getFormAction($this));
313 $this->tpl->setVariable(
"ALT_IMG",$this->lng->txt(
'obj_usr'));
314 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_step3_debit_entry'));
315 $this->tpl->setVariable(
"TITLE",$this->lng->txt(
'pay_bmf_debit_entry_data'));
316 $this->tpl->setVariable(
"DESCRIPTION",$this->lng->txt(
'pay_bmf_description_debit_entry'));
317 $this->tpl->touchBlock(
"stop_floating");
318 $this->tpl->setVariable(
"TXT_CLOSE_WINDOW",$this->lng->txt(
'close_window'));
321 $this->tpl->setVariable(
"TXT_ACCOUNT_HOLDER",$this->lng->txt(
'pay_bmf_account_holder'));
322 $this->tpl->setVariable(
"TXT_OPTIONAL",$this->lng->txt(
'pay_bmf_optional'));
323 $this->tpl->setVariable(
"TXT_BANK_CODE",$this->lng->txt(
'pay_bmf_bank_code'));
324 $this->tpl->setVariable(
"TXT_ACCOUNT_NUMBER",$this->lng->txt(
'pay_bmf_account_number'));
325 $this->tpl->setVariable(
"TXT_TERMS_CONDITIONS",$this->lng->txt(
'pay_bmf_terms_conditions'));
326 $this->tpl->setVariable(
"TXT_TERMS_CONDITIONS_READ",$this->lng->txt(
'pay_bmf_terms_conditions_read'));
327 $this->tpl->setVariable(
"TXT_TERMS_CONDITIONS_SHOW",$this->lng->txt(
'pay_bmf_terms_conditions_show'));
328 $this->tpl->setVariable(
"LINK_TERMS_CONDITIONS",
"./payment.php?view=conditions");
329 $this->tpl->setVariable(
"TXT_PASSWORD",$this->lng->txt(
'password'));
330 $this->tpl->setVariable(
"TXT_CONFIRM_ORDER",$this->lng->txt(
'pay_confirm_order'));
332 $this->tpl->setVariable(
"INPUT_VALUE",$this->lng->txt(
'pay_send_order'));
333 $this->tpl->setVariable(
"CANCEL",$this->lng->txt(
'cancel'));
337 $this->tpl->setVariable(
"ACCOUNT_HOLDER",
338 $this->error !=
"" && isset(
$_POST[
'account_holder'])
341 $this->tpl->setVariable(
"BANK_CODE",
342 $this->error !=
"" && isset(
$_POST[
'bank_code'])
345 $this->tpl->setVariable(
"ACCOUNT_NUMBER",
346 $this->error !=
"" && isset(
$_POST[
'account_number'])
361 $this->tpl->addBlockfile(
"BUTTONS",
"buttons",
"tpl.buttons.html");
362 $this->tpl->setCurrentBlock(
"btn_cell");
363 $this->tpl->setVariable(
"BTN_LINK", $this->ctrl->getLinkTarget($this,
"showPaymentType"));
364 $this->tpl->setVariable(
"BTN_TXT", $this->lng->txt(
'pay_bmf_back'));
365 $this->tpl->parseCurrentBlock(
"btn_cell");
372 if (
$_POST[
"account_holder"] ==
"" ||
373 $_POST[
"bank_code"] ==
"" ||
374 $_POST[
"account_number"] ==
"")
376 $this->error = $this->lng->txt(
'pay_bmf_debit_entry_not_valid');
381 if (
$_POST[
"terms_conditions"] != 1)
383 $this->error = $this->lng->txt(
'pay_bmf_check_terms_conditions');
388 if (
$_POST[
"password"] ==
"" ||
389 md5(
$_POST[
"password"]) != $this->user_obj->getPasswd())
391 $this->error = $this->lng->txt(
'pay_bmf_password_not_valid');
398 $_SESSION[
"bmf"][
"debit_entry"][
"kontoinhaber"] =
$_POST[
"account_holder"];
409 $this->psc_obj->clearCouponItemsSession();
411 if(!count($items = $this->psc_obj->getEntries($this->pm_id)))
414 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
415 $this->tpl->touchBlock(
"stop_floating");
423 $newCustomer =
new Kunde($this->user_obj->getId());
425 $resultCustomerObj = $customer->anlegenKunde($newCustomer);
427 $resultCustomer = $resultCustomerObj->ergebnis;
429 if (is_object($resultCustomer))
431 if ($resultCustomer->code < 0)
433 $error = $this->lng->txt(
'pay_bmf_server_error_code') .
" " . $resultCustomer->code .
": " . $resultCustomer->kurzText .
"<br>\n" . $resultCustomer->langText;
434 if ($resultCustomer->code == -103 ||
435 $resultCustomer->code == -104 ||
436 $resultCustomer->code == -107 ||
437 ($resultCustomer->code <= -202 && $resultCustomer->code >= -208) ||
438 $resultCustomer->code == -213)
445 $error .=
"<br>\n" . $this->lng->txt(
'pay_bmf_server_error_sysadmin');
462 $tmp_bookEntries = $sc_obj->getShoppingCart();
464 if (!is_array($tmp_bookEntries))
471 for ($i = 0; $i < count($tmp_bookEntries); $i++)
477 $price = $tmp_bookEntries[$i][
"price"];
478 $tmp_bookEntries[$i][
"math_price"] = $price;
480 foreach (
$_SESSION[
"coupons"][
"bmf"] as $key => $coupon)
482 $this->coupon_obj->setId($coupon[
"pc_pk"]);
483 $this->coupon_obj->setCurrentCoupon($coupon);
485 $tmp_pobject =
new ilPaymentObject($this->user_obj, $tmp_bookEntries[$i][
'pobject_id']);
487 if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId()))
489 $_SESSION[
"coupons"][
"bmf"][$key][
"total_objects_coupon_price"] += $price;
490 $_SESSION[
"coupons"][
"bmf"][$key][
"items"][] = $tmp_bookEntries[$i];
500 $tmp_bookEntries[$i][
"price_string"] = number_format( (
float) $tmp_bookEntries[$i][
"price"] , 2,
".",
"");
501 $bookEntries[] =
new Buchung($tmp_bookEntries[$i]);
502 $totalAmount += $tmp_bookEntries[$i][
"price"];
506 $tmp_bookEntries[$i][
"price_string"] = number_format( (
float) $tmp_bookEntries[$i][
"price"] , 2,
",",
".");
510 $coupon_discount_items = $this->psc_obj->calcDiscountPrices(
$_SESSION[
"coupons"][
"bmf"]);
512 if (is_array($coupon_discount_items) && !empty($coupon_discount_items))
514 foreach ($coupon_discount_items as $item)
516 $item[
"price"]= number_format( (
float) $item[
"discount_price"], 2,
".",
"");
517 $bookEntries[] =
new Buchung($item);
518 $totalAmount += $item[
"price"];
522 $totalAmount = number_format( (
float) $totalAmount , 2,
".",
"");
523 $values = array(
"betrag" => $totalAmount,
"buchungen" => $bookEntries);
524 $bookingList =
new BuchungsListe($this->user_obj->getId(), $values);
529 $resultObj = $payment->abbuchenOhneEinzugsermaechtigung($resultCustomerObj->kunde->EShopKundenNr, $address, $bank, $bookingList);
530 $result = $resultObj->ergebnis;
536 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'error'));
537 $this->tpl->touchBlock(
"stop_floating");
538 $error = $this->lng->txt(
'pay_bmf_server_error_code') .
" " .
$result->code .
": " .
$result->kurzText .
"<br>\n" .
$result->langText;
548 else if (
$result->code == -507 ||
555 else if (
$result->code == -402 ||
570 $error .=
"<br>\n" . $this->lng->txt(
'pay_bmf_server_error_sysadmin');
578 $resultCustomerObj->kunde->vorname = utf8_decode($resultCustomerObj->kunde->vorname);
579 $resultCustomerObj->kunde->nachname = utf8_decode($resultCustomerObj->kunde->nachname);
580 $resultCustomerObj->kunde->rechnungsAdresse->strasse = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->strasse);
581 $resultCustomerObj->kunde->rechnungsAdresse->hausNr = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->hausNr);
582 $resultCustomerObj->kunde->rechnungsAdresse->postfach = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->postfach);
583 $resultCustomerObj->kunde->rechnungsAdresse->PLZ = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->PLZ);
584 $resultCustomerObj->kunde->rechnungsAdresse->ort = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->ort);
585 $resultCustomerObj->kunde->rechnungsAdresse->land = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->land);
588 $external_data = array();
589 $external_data[
'voucher'] = $resultObj->buchungsListe->buchungen[$b++]->belegNr;
590 $external_data[
'transaction_extern'] = $resultObj->buchungsListe->kassenzeichen;
591 $external_data[
'street'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->strasse).
' '.utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->hausNr);
592 $external_data[
'po_box'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->postfach);
593 $external_data[
'zipcode'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->PLZ);
594 $external_data[
'city'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->ort);
595 $external_data[
'country'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->land);
597 parent::__addbookings($external_data);
602 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
603 $this->tpl->setVariable(
"DESCRIPTION",$this->lng->txt(
'pay_bmf_thanks'));
604 $this->tpl->touchBlock(
"stop_floating");
608 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.pay_bmf_debit_entry.html',
'Services/Payment');
610 if ($this->ilias->getSetting(
"https") != 1)
612 $this->tpl->setCurrentBlock(
"buyed_objects");
613 $link = $this->ctrl->getLinkTargetByClass(
'ilshopboughtobjectsgui');
614 $this->tpl->setVariable(
"LINK_GOTO_BUYED_OBJECTS", $link);
615 $this->tpl->setVariable(
"TXT_GOTO_BUYED_OBJECTS", $this->lng->txt(
'pay_goto_buyed_objects'));
616 $this->tpl->parseCurrentBlock(
"buyed_objects");
618 $this->tpl->setVariable(
"TXT_CLOSE_WINDOW", $this->lng->txt(
'close_window'));
623 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'error'));
624 $this->tpl->touchBlock(
"stop_floating");
631 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'error'));
632 $this->tpl->touchBlock(
"stop_floating");
652 if(!count($items = $this->psc_obj->getEntries($this->pm_id)))
655 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
656 $this->tpl->touchBlock(
"stop_floating");
663 $this->tpl->addBlockfile(
'ADM_CONTENT',
'adm_content',
'tpl.pay_bmf_credit_card.html',
'Services/Payment');
666 $this->tpl->setVariable(
"CREDIT_CARD_FORMACTION",$this->ctrl->getFormAction($this));
670 $this->tpl->setVariable(
"ALT_IMG",$this->lng->txt(
'obj_usr'));
671 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_step3_credit_card'));
672 $this->tpl->setVariable(
"TITLE",$this->lng->txt(
'pay_bmf_credit_card_data'));
673 $this->tpl->setVariable(
"DESCRIPTION",$this->lng->txt(
'pay_bmf_description_credit_card'));
674 $this->tpl->touchBlock(
"stop_floating");
675 $this->tpl->setVariable(
"TXT_CLOSE_WINDOW",$this->lng->txt(
'close_window'));
678 $this->tpl->setVariable(
"TXT_CARD_HOLDER",$this->lng->txt(
'pay_bmf_card_holder'));
679 $this->tpl->setVariable(
"TXT_CHECK_NUMBER",$this->lng->txt(
'pay_bmf_check_number'));
680 $this->tpl->setVariable(
"TXT_OPTIONAL",$this->lng->txt(
'pay_bmf_optional'));
681 $this->tpl->setVariable(
"TXT_CARD_NUMBER",$this->lng->txt(
'pay_bmf_card_number'));
682 $this->tpl->setVariable(
"TXT_VALIDITY",$this->lng->txt(
'pay_bmf_validity'));
683 $this->tpl->setVariable(
"TXT_TERMS_CONDITIONS",$this->lng->txt(
'pay_bmf_terms_conditions'));
684 $this->tpl->setVariable(
"TXT_TERMS_CONDITIONS_READ",$this->lng->txt(
'pay_bmf_terms_conditions_read'));
685 $this->tpl->setVariable(
"TXT_TERMS_CONDITIONS_SHOW",$this->lng->txt(
'pay_bmf_terms_conditions_show'));
686 $this->tpl->setVariable(
"LINK_TERMS_CONDITIONS",
"./payment.php?view=conditions");
687 $this->tpl->setVariable(
"TXT_PASSWORD",$this->lng->txt(
'password'));
688 $this->tpl->setVariable(
"TXT_CONFIRM_ORDER",$this->lng->txt(
'pay_confirm_order'));
690 $this->tpl->setVariable(
"INPUT_VALUE",$this->lng->txt(
'pay_send_order'));
691 $this->tpl->setVariable(
"CANCEL",$this->lng->txt(
'cancel'));
695 $this->tpl->setVariable(
"CARD_HOLDER",
696 $this->error !=
"" && isset(
$_POST[
'card_holder'])
699 $this->tpl->setVariable(
"CARD_NUMBER_BLOCK_1",
700 $this->error !=
"" && isset(
$_POST[
'card_number'][
'block_1'])
703 $this->tpl->setVariable(
"CARD_NUMBER_BLOCK_2",
704 $this->error !=
"" && isset(
$_POST[
'card_number'][
'block_2'])
707 $this->tpl->setVariable(
"CARD_NUMBER_BLOCK_3",
708 $this->error !=
"" && isset(
$_POST[
'card_number'][
'block_3'])
711 $this->tpl->setVariable(
"CARD_NUMBER_BLOCK_4",
712 $this->error !=
"" && isset(
$_POST[
'card_number'][
'block_4'])
715 $this->tpl->setVariable(
"CHECK_NUMBER",
716 $this->error !=
"" && isset(
$_POST[
'check_number'])
719 for ($i = 1; $i <= 12; $i++)
721 $this->tpl->setCurrentBlock(
"loop_validity_months");
722 $this->tpl->setVariable(
"LOOP_VALIDITY_MONTHS", $i < 10 ?
"0" . $i : $i);
723 $this->tpl->setVariable(
"LOOP_VALIDITY_MONTHS_TXT", $i < 10 ?
"0" . $i : $i);
724 if ($this->error !=
"" &&
725 isset(
$_POST[
'validity'][
'month']))
727 if (
$_POST[
'validity'][
'month'] == $i)
729 $this->tpl->setVariable(
"LOOP_VALIDITY_MONTHS_SELECTED",
" selected");
734 if (
$_SESSION[
"bmf"][
"credit_card"][
"gueltigkeit"][
"monat"] == $i)
736 $this->tpl->setVariable(
"LOOP_VALIDITY_MONTHS_SELECTED",
" selected");
739 $this->tpl->parseCurrentBlock(
"loop_validity_months");
741 for ($i = date(
"Y"); $i <= (date(
"Y")+6); $i++)
743 $this->tpl->setCurrentBlock(
"loop_validity_years");
744 $this->tpl->setVariable(
"LOOP_VALIDITY_YEARS", $i);
745 $this->tpl->setVariable(
"LOOP_VALIDITY_YEARS_TXT", $i);
746 if ($this->error !=
"" &&
747 isset(
$_POST[
'validity'][
'year']))
749 if (
$_POST[
'validity'][
'year'] == $i)
751 $this->tpl->setVariable(
"LOOP_VALIDITY_YEARS_SELECTED",
" selected");
756 if (
$_SESSION[
"bmf"][
"credit_card"][
"gueltigkeit"][
"jahr"] == $i)
758 $this->tpl->setVariable(
"LOOP_VALIDITY_YEARS_SELECTED",
" selected");
761 $this->tpl->parseCurrentBlock(
"loop_validity_years");
775 $this->tpl->addBlockfile(
"BUTTONS",
"buttons",
"tpl.buttons.html");
776 $this->tpl->setCurrentBlock(
"btn_cell");
777 $this->tpl->setVariable(
"BTN_LINK", $this->ctrl->getLinkTarget($this,
"showPaymentType"));
778 $this->tpl->setVariable(
"BTN_TXT", $this->lng->txt(
'pay_bmf_back'));
779 $this->tpl->parseCurrentBlock(
"btn_cell");
786 if (
$_POST[
"card_holder"] ==
"" ||
787 $_POST[
"card_number"][
"block_1"] ==
"" ||
788 $_POST[
"card_number"][
"block_2"] ==
"" ||
789 $_POST[
"card_number"][
"block_3"] ==
"" ||
790 $_POST[
"card_number"][
"block_4"] ==
"" ||
791 $_POST[
"validity"][
"month"] ==
"" ||
792 $_POST[
"validity"][
"year"] ==
"" ||
793 $_POST[
"validity"][
"year"].
"-".
$_POST[
"validity"][
"month"] < date(
"Y-m"))
795 $this->error = $this->lng->txt(
'pay_bmf_credit_card_not_valid');
800 if (
$_POST[
"terms_conditions"] != 1)
802 $this->error = $this->lng->txt(
'pay_bmf_check_terms_conditions');
807 if (
$_POST[
"password"] ==
"" ||
808 md5(
$_POST[
"password"]) != $this->user_obj->getPasswd())
810 $this->error = $this->lng->txt(
'pay_bmf_password_not_valid');
816 $_SESSION[
"bmf"][
"credit_card"][
"gueltigkeit"][
"monat"] =
$_POST[
"validity"][
"month"];
817 $_SESSION[
"bmf"][
"credit_card"][
"gueltigkeit"][
"jahr"] =
$_POST[
"validity"][
"year"];
818 $_SESSION[
"bmf"][
"credit_card"][
"karteninhaber"] =
$_POST[
"card_holder"];
819 $_SESSION[
"bmf"][
"credit_card"][
"kreditkartenNr"][
"block_1"] =
$_POST[
"card_number"][
"block_1"];
820 $_SESSION[
"bmf"][
"credit_card"][
"kreditkartenNr"][
"block_2"] =
$_POST[
"card_number"][
"block_2"];
821 $_SESSION[
"bmf"][
"credit_card"][
"kreditkartenNr"][
"block_3"] =
$_POST[
"card_number"][
"block_3"];
822 $_SESSION[
"bmf"][
"credit_card"][
"kreditkartenNr"][
"block_4"] =
$_POST[
"card_number"][
"block_4"];
823 $_SESSION[
"bmf"][
"credit_card"][
"kartenpruefnummer"] =
$_POST[
"check_number"];
833 $this->psc_obj->clearCouponItemsSession();
835 if(!count($items = $this->psc_obj->getEntries($this->pm_id)))
838 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
839 $this->tpl->touchBlock(
"stop_floating");
847 $customer =
new Kunde($this->user_obj->getId());
853 $tmp_bookEntries = $sc_obj->getShoppingCart();
854 if (!is_array($tmp_bookEntries))
861 for ($i = 0; $i < count($tmp_bookEntries); $i++)
867 $price = $tmp_bookEntries[$i][
"price"];
868 $tmp_bookEntries[$i][
"math_price"] = $price;
870 foreach (
$_SESSION[
"coupons"][
"bmf"] as $key => $coupon)
872 $this->coupon_obj->setId($coupon[
"pc_pk"]);
873 $this->coupon_obj->setCurrentCoupon($coupon);
875 $tmp_pobject =
new ilPaymentObject($this->user_obj, $tmp_bookEntries[$i][
'pobject_id']);
877 if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId()))
879 $_SESSION[
"coupons"][
"bmf"][$key][
"total_objects_coupon_price"] += $price;
880 $_SESSION[
"coupons"][
"bmf"][$key][
"items"][] = $tmp_bookEntries[$i];
891 $tmp_bookEntries[$i][
"price_string"] = number_format( (
float) $tmp_bookEntries[$i][
"price"] , 2,
",",
".");
893 $bookEntries[] =
new Buchung($tmp_bookEntries[$i]);
894 $totalAmount += $tmp_bookEntries[$i][
"price"];
898 $tmp_bookEntries[$i][
"price_string"] = number_format( (
float) $tmp_bookEntries[$i][
"price"] , 2,
",",
".");
902 $coupon_discount_items = $this->psc_obj->calcDiscountPrices(
$_SESSION[
"coupons"][
"bmf"]);
904 if (is_array($coupon_discount_items) && !empty($coupon_discount_items))
906 foreach ($coupon_discount_items as $item)
908 $item[
"price"] = number_format((
float)$item[
"discount_price"] , 2,
".",
"");
909 $bookEntries[] =
new Buchung($item);
910 $totalAmount += $item[
"discount_price"];
914 $totalAmount = number_format((
float)$totalAmount , 2,
".",
"");
915 $values = array(
"betrag" => $totalAmount,
"buchungen" => $bookEntries);
916 $bookingList =
new BuchungsListe($this->user_obj->getId(), $values);
919 $resultObj = $payment->zahlenUndAnlegenKunde($customer, $creditCard, $bookingList);
920 $result = $resultObj->ergebnis;
926 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'error'));
927 $this->tpl->touchBlock(
"stop_floating");
928 $error = $this->lng->txt(
'pay_bmf_server_error_code') .
" " .
$result->code .
": " .
$result->kurzText .
"<br>\n" .
$result->langText;
938 else if (
$result->code == -507 ||
945 else if (
$result->code == -701 ||
957 $error .=
"<br>\n" . $this->lng->txt(
'pay_bmf_server_error_sysadmin');
965 $external_data = array();
966 $external_data[
'voucher'] = $resultObj->buchungsListe->buchungen[$b++]->belegNr;
967 $external_data[
'transaction_extern'] = $resultObj->buchungsListe->kassenzeichen;
968 $external_data[
'street'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->strasse).
' '.utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->hausNr);
969 $external_data[
'po_box'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->postfach);
970 $external_data[
'zipcode'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->PLZ);
971 $external_data[
'city'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->ort);
972 $external_data[
'country'] = utf8_decode($resultCustomerObj->kunde->rechnungsAdresse->land);
974 parent::__addbookings($external_data);
979 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'pay_bmf_your_order'));
980 $this->tpl->setVariable(
"DESCRIPTION",$this->lng->txt(
'pay_bmf_thanks'));
981 $this->tpl->touchBlock(
"stop_floating");
985 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.pay_bmf_credit_card.html',
'Services/Payment');
987 if ($this->ilias->getSetting(
"https") != 1)
989 $this->tpl->setCurrentBlock(
"buyed_objects");
990 $link = $this->ctrl->getLinkTargetByClass(
'ilshopboughtobjectsgui');
991 $this->tpl->setVariable(
"LINK_GOTO_BUYED_OBJECTS", $link);
992 $this->tpl->setVariable(
"TXT_GOTO_BUYED_OBJECTS", $this->lng->txt(
'pay_goto_buyed_objects'));
993 $this->tpl->parseCurrentBlock(
"buyed_objects");
995 $this->tpl->setVariable(
"TXT_CLOSE_WINDOW", $this->lng->txt(
'close_window'));
1000 $this->tpl->setVariable(
"HEADER",$this->lng->txt(
'error'));
1001 $this->tpl->touchBlock(
"stop_floating");
1016 $cmd = $this->ctrl->getCmd();
1018 switch ($this->ctrl->getNextClass($this))
1022 if(!
$cmd = $this->ctrl->getCmd())
1024 $cmd =
'showPersonalData';
1043 $this->_soapClient =
new ilBMFClient(
$bmfConfig[
"ePaymentServer"],
false,
false, array(
'curl' => array(CURLOPT_SSLCERT =>
$bmfConfig[
"clientCertificate"], CURLE_SSL_PEER_CERTIFICATE =>
$bmfConfig[
"caCertificate"], CURLOPT_TIMEOUT => (
int)
$bmfConfig[
"timeOut"])));
1053 'kunde' => $customer
1056 $result = $this->_soapClient->call(
"anlegenKunde", $tmp,
"KundenstammdatenPflegeWS");
1071 $this->_soapClient =
new ilBMFClient(
$bmfConfig[
"ePaymentServer"],
false,
false, array(
'curl' => array(CURLOPT_SSLCERT =>
$bmfConfig[
"clientCertificate"], CURLE_SSL_PEER_CERTIFICATE =>
$bmfConfig[
"caCertificate"], CURLOPT_TIMEOUT => (
int)
$bmfConfig[
"timeOut"])));
1081 'kreditkarte' => $creditCard,
1082 'waehrungskennzeichen' =>
$bmfConfig[
"waehrungskennzeichen"]
1085 $result = $this->_soapClient->call(
"validierenKreditkarte", $tmp,
"KreditkartenzahlungWS");
1098 'Kunde' => $customer,
1099 'Kreditkarte' => $creditCard,
1100 'buchungsListe' => $bookingList,
1101 'lieferadresse' => $lieferadresse
1104 $result = $this->_soapClient->call(
"zahlenUndAnlegenKunde", $tmp,
"KreditkartenzahlungWS");
1119 $this->_soapClient =
new ilBMFClient(
$bmfConfig[
"ePaymentServer"],
false,
false, array(
'curl' => array(CURLOPT_SSLCERT =>
$bmfConfig[
"clientCertificate"], CURLE_SSL_PEER_CERTIFICATE =>
$bmfConfig[
"caCertificate"], CURLOPT_TIMEOUT => (
int)
$bmfConfig[
"timeOut"])));
1129 'eShopKundenNr' => $eShopCustomerNumber,
1130 'lieferAdresse' => $address,
1131 'bankverbindung' => $bank,
1132 'buchungsListe' => $bookingList
1135 $result = $this->_soapClient->call(
"abbuchenOhneEinzugsermaechtigung", $tmp,
"LastschriftWS");
1143 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment' ,
'type' =>
'Kunde');
1145 function Kunde ($customerNumber =
"", $values =
"")
1153 $this->EShopKundenNr = time() .
"_" . substr(md5(uniqid(rand(),
true)), 0, 4);
1154 if ($customerNumber !=
"")
1156 $this->EShopKundenNr = $customerNumber .
"_" . time() .
"_" . substr(md5(uniqid(rand(),
true)), 0, 4);
1162 $values =
$_SESSION[
"bmf"][
"personal_data"];
1165 if ($values[
"language"] != NULL)
1167 $this->sprache = $values[
"language"];
1169 if ($values[
"firstname"] != NULL)
1171 $this->vorname = utf8_decode($values[
"firstname"]);
1173 if ($values[
"lastname"] != NULL)
1175 $this->nachname = utf8_decode($values[
"lastname"]);
1177 if ($values[
"email"] != NULL)
1179 $this->EMailAdresse = utf8_decode($values[
"email"]);
1184 $this->rechnungsAdresse = $address;
1189 return $this->EShopKundenNr;
1196 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment' ,
'type' =>
'Adresse');
1202 $values =
$_SESSION[
"bmf"][
"personal_data"];
1205 if (is_array($values))
1207 if ($values[
"street"] != NULL)
1209 $this->strasse = utf8_decode($values[
"street"]);
1211 if ($values[
"house_number"] != NULL)
1213 $this->hausNr = utf8_decode($values[
"house_number"]);
1215 if ($values[
"po_box"] != NULL)
1217 $this->postfach = utf8_decode($values[
"po_box"]);
1219 if ($values[
"country"] != NULL)
1221 $this->land = utf8_decode($values[
"country"]);
1223 if ($values[
"zipcode"] != NULL)
1225 $this->PLZ = utf8_decode($values[
"zipcode"]);
1227 if ($values[
"city"] != NULL)
1229 $this->ort = utf8_decode($values[
"city"]);
1238 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment' ,
'type' =>
'Kreditkarte');
1244 $values =
$_SESSION[
"bmf"][
"credit_card"];
1247 if (is_array($values))
1249 if ($values[
"karteninhaber"] != NULL)
1251 $this->karteninhaber = utf8_decode($values[
"karteninhaber"]);
1253 if ($values[
"kartenpruefnummer"] != NULL)
1255 $this->kartenpruefnummer = utf8_decode($values[
"kartenpruefnummer"]);
1257 if (is_array ($values[
"kreditkartenNr"]) &&
1258 count($values[
"kreditkartenNr"]) == 4)
1260 for ($i = 1; $i <= count($values[
"kreditkartenNr"]); $i++)
1262 $this->kreditkartenNr .= utf8_decode($values[
"kreditkartenNr"][
"block_".$i]);# .
"-";
1264 # $this->kreditkartenNr = substr($this->kreditkartenNr, 0, strlen($this->kreditkartenNr)-1);
1266 if (is_array($values[
"gueltigkeit"]) &&
1267 $values[
"gueltigkeit"][
"monat"] !=
"" &&
1268 $values[
"gueltigkeit"][
"jahr"] !=
"")
1270 $this->gueltigkeit = utf8_decode($values[
"gueltigkeit"][
"monat"]);
1271 $this->gueltigkeit .= utf8_decode($values[
"gueltigkeit"][
"jahr"]);
1280 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment' ,
'type' =>
'Lastschrift');
1284 $this->EShopKundenNr = time() .
"_" . substr(md5(uniqid(rand(),
true)), 0, 4);
1285 if ($customerNumber !=
"")
1287 $this->EShopKundenNr = $customerNumber .
"_" . time() .
"_" . substr(md5(uniqid(rand(),
true)), 0, 4);
1295 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment' ,
'type' =>
'Bankverbindung');
1301 $values =
$_SESSION[
"bmf"][
"debit_entry"];
1304 if (is_array($values))
1306 if ($values[
"kontoinhaber"] != NULL)
1308 $this->kontoinhaber = utf8_decode($values[
"kontoinhaber"]);
1310 if ($values[
"kontoNr"] != NULL)
1312 $this->kontoNr = utf8_decode($values[
"kontoNr"]);
1314 if ($values[
"BLZ"] != NULL)
1316 $this->BLZ = utf8_decode($values[
"BLZ"]);
1325 var
$OBJTypeNS = array (
'namespace' =>
'http://schemas.xmlsoap.org/soap/encoding/',
'nsPrefix' =>
'ns3',
'type' =>
'Buchung',
'pnamespace' =>
'http://www.bff.bund.de/ePayment',
'pnsPrefix' =>
'ns2',
'item' =>
'ns2:Buchung');
1334 $this->haushaltsstelle =
$bmfConfig[
"haushaltsstelle"];
1338 $this->objektnummer =
$bmfConfig[
"objektNr"];
1341 if (is_array($values))
1343 if ($values[
"object_title"] != NULL)
1345 $buchungstext = utf8_decode($values[
"object_title"]);
1346 if(strlen($buchungstext) > 16)
1348 $buchungstext = substr($buchungstext,0,15).
'...';
1351 $this->buchungstext = $buchungstext;
1353 if ($values[
"price"] !=
"")
1355 $this->betrag = (float)$values[
"price"];
1363 if ($voucherNumber != NULL)
1365 $this->belegNr = $voucherNumber;
1371 return $this->belegNr;
1377 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment',
'nsPrefix' =>
'ns2',
'type' =>
'BuchungsListe');
1388 $this->bewirtschafterNr =
$bmfConfig[
"bewirtschafterNr"];
1390 if (
$bmfConfig[
"waehrungskennzeichen"] != NULL)
1392 $this->waehrungskennzeichen =
$bmfConfig[
"waehrungskennzeichen"];
1394 $this->faelligkeitsdatum = date(
"Y-m-d") .
"T" . date(
"H:i:s") .
"Z";
1395 if (
$bmfConfig[
"kennzeichenMahnverfahren"] != NULL)
1397 $this->kennzeichenMahnverfahren =
$bmfConfig[
"kennzeichenMahnverfahren"];
1400 $inst_id_time = $ilias->getSetting(
'inst_id').
'_'.$userId.
'_'.substr((
string) time(),-3);
1401 $this->EShopTransaktionsNr = $inst_id_time.substr(md5(uniqid(rand(),
true)), 0, 4);
1403 if (is_array($values))
1405 if ($values[
"betrag"] != NULL)
1407 $this->betrag = (float)$values[
"betrag"];
1409 if ($values[
"buchungen"] != NULL)
1411 $this->buchungen = $values[
"buchungen"];
1417 return $this->EShopTransaktionsNr;
1423 if ($kassenzeichen != NULL)
1425 $this->kassenzeichen = $kassenzeichen;
1431 return $this->kassenzeichen;
1438 var
$OBJTypeNS = array (
'namespace' =>
'http://www.bff.bund.de/ePayment' ,
'type' =>
'LieferAdresse');
1444 $values =
$_SESSION[
"bmf"][
"personal_data"];
1447 if (is_array($values))
1449 if ($values[
"firstname"] != NULL)
1451 $this->vorname = utf8_decode($values[
"firstname"]);
1453 if ($values[
"lastname"] != NULL)
1455 $this->nachname = utf8_decode($values[
"lastname"]);
1457 if ($values[
"street"] != NULL)
1459 $this->strasse = utf8_decode($values[
"street"]);
1461 if ($values[
"house_number"] != NULL)
1463 $this->hausNr = utf8_decode($values[
"house_number"]);
1465 if ($values[
"po_box"] != NULL)
1467 $this->postfach = utf8_decode($values[
"po_box"]);
1469 if ($values[
"country"] != NULL)
1471 $this->land = utf8_decode($values[
"country"]);
1473 if ($values[
"zipcode"] != NULL)
1475 $this->PLZ = utf8_decode($values[
"zipcode"]);
1477 if ($values[
"city"] != NULL)
1479 $this->ort = utf8_decode($values[
"city"]);