MySQL läuft hier im Strict Mode und lässt für orders_id keinen leeren Wert zu.
includes/modules/payment/sofort_su.php
ab ca. Zeile 365
Code:
if ($this->payment_aborted !== $check_query->fields['orders_status_id']) {
$sql_data_array = array(
'orders_id' => $_SESSION['sofort_order_id'],
'orders_status_id' => $this->payment_aborted,
'date_added' => 'now()',
'customer_notified' => 0,
'comments' => 'Payment aborted. Time: ' . date("Y-m-d H:i:s")
);
$db->Execute("UPDATE `" . TABLE_ORDERS . "` SET orders_status = " . (int) $this->payment_aborted . " WHERE orders_id = " . (int) $_SESSION['sofort_order_id']);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
}
$_SESSION['sofort_order_id'] scheint bei dieser Bestellung leer zu sein, daher dieses Debug Log
Folgende Änderung sollte dieses Log vermeiden, kann das nicht testen, da ich derzeit kein Livesystem für Sofort mit MySQL Strict Mode verfügbar habe:
Code:
if ($this->payment_aborted !== $check_query->fields['orders_status_id']) {
$sofort_order_id = (int)$_SESSION['sofort_order_id'];
$sql_data_array = array(
'orders_id' => $sofort_order_id,
'orders_status_id' => $this->payment_aborted,
'date_added' => 'now()',
'customer_notified' => 0,
'comments' => 'Payment aborted. Time: ' . date("Y-m-d H:i:s")
);
$db->Execute("UPDATE `" . TABLE_ORDERS . "` SET orders_status = " . (int) $this->payment_aborted . " WHERE orders_id = " . (int) $_SESSION['sofort_order_id']);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
}
P.S.
Wenn Debug Logs gepostet werden, dann immer echte Serverpfade mit xxx ersetzen. Solche Beiträge müssen ansonsten kommentarlos gelöscht werden.
Lesezeichen