sync: Zahlungsstrecke, PG-Events, Fatal-Log und PayPal-v2-Blaupause vom Live-Stand 2026-09-13
Deploy to Dev / deploy (push) Successful in 1s
Deploy to Dev / deploy (push) Successful in 1s
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user