sync: Zahlungsstrecke, PG-Events, Fatal-Log und PayPal-v2-Blaupause vom Live-Stand 2026-09-13
Deploy to Dev / deploy (push) Successful in 1s

This commit is contained in:
Thomas Bartelt
2026-09-13 19:20:24 +02:00
parent 20d55f77b8
commit af81e8f63a
22 changed files with 1963 additions and 58 deletions
+20 -5
View File
@@ -176,12 +176,27 @@ class CartSessionManager {
public function updateCartStatus($session_key, $status) {
$session_key_clean = $this->db->real_escape_string($session_key);
$status_clean = $this->db->real_escape_string($status);
// 25.08.2026: 'completed' ist ein Endzustand -- Geld ist eingezogen, daran aendert
// ein spaeterer Request nichts mehr. Vorher konnte jeder Reload der Rueckkehr-URL
// eine bezahlte Bestellung auf 'abandoned' zuruecksetzen (belegt am 24.08. bei
// Order 111902 und beim Kunden EC-6PP77504DT5715642). Die Statistik zaehlte solche
// Faelle als Abbruch, obwohl bezahlt wurde.
//
// Der Riegel sitzt hier unten in der WHERE-Klausel und nicht im aufrufenden Code,
// damit er auch fuer kuenftige Aufrufer gilt -- und weil MySQL das atomar
// entscheidet: zwei gleichzeitig zurueckkehrende Requests koennen sich nicht mehr
// gegenseitig ueberholen.
$schutz = '';
if ($status_clean !== 'completed') {
$schutz = " AND status <> 'completed'";
}
$query = "
UPDATE cart_sessions
SET status = '{$status_clean}',
updated_at = CURRENT_TIMESTAMP
WHERE session_key = '{$session_key_clean}'
UPDATE cart_sessions
SET status = '{$status_clean}',
updated_at = CURRENT_TIMESTAMP
WHERE session_key = '{$session_key_clean}'{$schutz}
";
$result = $this->db->query($query);