am: 19. Februar 2013, 10:15:17
Hallo Zusammen
seit ein paar Wochen kommen bei uns Bestellungen an, die als Zahlweise "no_payment" ausgewiesen haben.
Ich konnte nun das Problem auch im aktuellen Demo-Shop nachstellen.
Man bucht ein Guthaben auf und legt einen Artikel in den Warenkorb. Bei der Auswahl der Zahlweise genügt es, die Checkbox anzuklicken, damit das Guthaben für die Bestellung herangezogen wird. Obwohl das Guthaben die Kosten nicht abdeckt - d.h. ein Restbetrag wäre noch zu zahlen - kann man zum Checkout weitergehen - siehe Screenshot im Anhang.
Meiner Meinung nach liegt es an der Stelle in der "checkout_confirmation.php"
// load the selected payment modulerequire_once (DIR_WS_CLASSES
. 'payment.php');if (isset ($_SESSION['credit_covers']) || !isset($_SESSION['payment'])) { //DokuMan - 2010-10-14 - check that payment is not yet set, SP1b $_SESSION['payment'] = 'no_payment'; // GV Code Start/End ICW added for CREDIT CLASS}$payment_modules = new payment
($_SESSION['payment']); Obwohl die Variable "credit_covers" nicht gesetzt ist, wird durch die oder-Anweisung "no_payment" gesetzt.
Es gibt einen Block der im SP1b geändert wurde, der meiner Meinung nach diesen Fall abfangen würde.
// GV Code line changed , SP1b//if ((is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && (!is_object($$_SESSION['payment'])) && (!isset ($_SESSION['credit_covers']))) || (is_object($$_SESSION['payment']) && ($$_SESSION['payment']->enabled == false))) {if ((is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && (!isset($$_SESSION['payment']) || !is_object($$_SESSION['payment'])) && (!isset($_SESSION['credit_covers']))) || (isset($$_SESSION['payment']) && is_object($$_SESSION['payment']) && ($$_SESSION['payment']->enabled == false))) { xtc_redirect
(xtc_href_link
(FILENAME_CHECKOUT_PAYMENT
, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED
), 'SSL'));} Ich teste das gerade und berichte über meine Versuche. Sollte eventuell jemand eine Idee haben, so würde ich mich um jede Hilfe freuen.
Danke im Vorraus.
Nachtrag:
Wenn man im Block
if(isset($_SESSION['payment']) && $_SESSION['payment'] != 'no_payment') { //web28 - 2012-04-27 - fix for coupon amount == order total if ((is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && (!is_object($$_SESSION['payment'])) && (!isset ($_SESSION['credit_covers']))) || (is_object($$_SESSION['payment']) && ($$_SESSION['payment']->enabled == false))) { xtc_redirect
(xtc_href_link
(FILENAME_CHECKOUT_PAYMENT
, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED
), 'SSL')); }} das "!=" zu einem "==" ändert, funktioniert alles.
if(isset($_SESSION['payment']) && $_SESSION['payment'] == 'no_payment') { //web28 - 2012-04-27 - fix for coupon amount == order total if ((is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && (!is_object($$_SESSION['payment'])) && (!isset ($_SESSION['credit_covers']))) || (is_object($$_SESSION['payment']) && ($$_SESSION['payment']->enabled == false))) { xtc_redirect
(xtc_href_link
(FILENAME_CHECKOUT_PAYMENT
, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED
), 'SSL')); }} Aber ich habe noch nicht getestet, welche Seitenfeekte das haben könnte.
Linkback: https://www.modified-shop.org/forum/index.php?topic=24856.0