Ergebnis 1 bis 3 von 3

Thema: "Incorrect integer value" bei Sofort Zahlung

  1. #1
    Padawan Anwärter Avatar von harryg
    Registriert seit
    14.06.2012
    Beiträge
    20
    Themen
    11
    DANKE
    2
    Erhaltene Danke: 0

    Standard "Incorrect integer value" bei Sofort Zahlung

    Hallo,
    bekomme nach erfolgter Zahlung mit Sofort Modul folgenden LOG Error nach Umstellung auf PHP 7.3:

    Code:
    [22-Dec-2020 22:19:45 Europe/Vienna] Request URI: /index.php?main_page=sofort_notification, IP address: 3.121.141.196
    #1 trigger_error() called at [/home/.sites/689/site926/web/includes/classes/db/mysql/query_factory.php:171]
    #2 queryFactory->show_error() called at [/xxx/includes/classes/db/mysql/query_factory.php:143]
    #3 queryFactory->set_error() called at [/xxx/includes/classes/db/mysql/query_factory.php:270]
    #4 queryFactory->Execute() called at [/xxx/includes/functions/functions_general.php:952]
    #5 zen_db_perform() called at [/xxx/ext/modules/payment/sofort/services/Communication.php:289]
    #6 Communication->handleSofortStatusUpdate() called at [/xxx/ext/modules/payment/sofort/controller/Notification.php:61]
    #7 Notification->notificationAction() called at [/xxx//includes/modules/pages/sofort_notification/header_php.php:8]
    #8 require(/xxx/includes/modules/pages/sofort_notification/header_php.php) called at [/xxx/index.php:36]
    --> PHP Fatal error: 1366:Incorrect integer value: '' for column 'orders_id' at row 1 :: INSERT INTO orders_status_history (orders_id, orders_status_id, date_added, customer_notified, comments) VALUES ('', '1', now(), '0', 'SOFORT Banking has been completed successfully - Transaction ID: 81805-170714-5FE26245-6E99. Time: 2020/12/22 22:19:45') ==> (as called by) /xxx/includes/functions/functions_general.php on line 952 <== in /xxx/includes/classes/db/mysql/query_factory.php on line 171.
    Aktuelle Zen Cart 1.5.6.e_DE
    MySQL 5.7 mit MySQL Modus: STRICT_TRANS_TABLES

    Der Bestellvorgang und die Zahlung mittels SOFORT funktionieren trotz PHP Error und es werden auch in die Tabelle orders_status_history die Einträge geschrieben und auch die orders_id wird richtig in die DB geschrieben, möchte das aber lösen.
    Finde aber in diesem Fall leider keinen Ansatz in welcher php Datei zu suchen wäre um einen INT Wert entsprechend zu übergeben.

    Bitte um Hilfe.
    Geändert von webchills (23.12.2020 um 17:15 Uhr) Grund: echte Serverpfade entfernt

  2. #2
    Jedi-Ritter Avatar von webchills
    Registriert seit
    31.10.2004
    Ort
    Österreich
    Beiträge
    7.131
    Themen
    97
    DANKE
    3
    Erhaltene Danke: 1.296

    Standard

    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.
    Geändert von webchills (23.12.2020 um 17:16 Uhr)
    !!! kostenloser Support ausschließlich im Forum - Nicht per Email, nicht per Telefon und nicht per PM !!!

  3. #3
    Padawan Anwärter Avatar von harryg
    Registriert seit
    14.06.2012
    Beiträge
    20
    Themen
    11
    DANKE
    2
    Erhaltene Danke: 0
    Erstellt von

    Standard

    Danke - hab das mal so geändert, leider bleibt der PHP Error bei SOFORT Bestellungen über das SU Modul.
    Irgendwie wird hier kein Wert bei orders_id mitgegeben und der "NULL" Wert wird nicht akzeptiert. Komisch nur, dass trotzdem in der table orders_status_history der richtige Wert bei orders_id eingetragen wird und der entsprechende SU comment.

    Hier die Tabellenfelder- Eigenschaften der table orders_status_history:
    Unbenannt.jpg

    Vielleicht gibt es ja noch einen TIPP, ansonsten werde ich wohl mit dem Error leben müssen, solange alles funktioniert.

Ähnliche Themen

  1. (Zen-Cart 1.5.6) Incorrect integer value for column delivery_address_format_id
    Von joanmey im Forum Generelle Fragen
    Antworten: 6
    Letzter Beitrag: 18.01.2020, 11:01
  2. Antworten: 5
    Letzter Beitrag: 25.01.2019, 19:14
  3. Incorrect integer value: '' for column 'track_day'
    Von Beowolf im Forum Paket Tracking
    Antworten: 8
    Letzter Beitrag: 13.06.2018, 13:03
  4. Antworten: 1
    Letzter Beitrag: 03.03.2015, 09:55
  5. Antworten: 2
    Letzter Beitrag: 24.01.2013, 10:09

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
zen-cart-pro.at
Zen Cart ist eine kostenlose unter der GPL-Lizenz veröffentlichte Open-Source Shopsoftware. Das System wird in den USA entwickelt, die amerikanische Website dazu ist www.zen-cart.com

Die deutsche Zen-Cart Version, um die es hier auf zen-cart-pro.at geht, ist eine Anpassung der amerikanischen Version an die Bedürfnisse von Onlineshopbetreibern im deutschsprachigen Raum.
Die amerikanische Zen-Cart Version berücksichtigt viele rechtliche Erfordernisse nicht, denen ein Onlineshop im deutschsprachigen Raum unterworfen ist. Daher wurde die deutsche Zen-Cart Version nicht nur bloß ins Deutsche übersetzt, sondern auch funktional auf die Anforderungen, die an Onlineshops in Deutschland, Österreich und der Schweiz gestellt werden, angepasst.

Die amerikanische Version ist extrem abgespeckt und stellt weiterführende Funktionalitäten durch zusätzliche Module bereit, die erst mühsam manuell installiert werden müssen. Zahlreiche häufig genutzte Erweiterungen und eigene Entwicklungen sind in der deutschen Zen Cart Version bereits vorinstalliert.
Die deutsche Zen-Cart Version bietet außerdem einen völlig multilingualen Adminbereich. Weitere für die deutsche Zen Cart Version angepasste Erweiterungen stehen in unserem Downloadbereich zur Verfügung.

Die deutsche Zen Cart Version wird seit 16 Jahren von einem Team von Entwicklern in Österreich und Deutschland betreut, weiterentwickelt und supportet und steht kostenlos in unserem Downloadbereich zur Verfügung.

[mehr]
Follow Us
  • zen-cart-pro-at auf Twitter
  • zen-cart-pro-at auf Github
  • zen-cart-pro-at auf SourceForge
Aktuelle Version
Zen Cart 1.5.6e deutsch
vom 26.07.2020
[Download]

unterstützen
Unterstütze die Weiterentwicklung der deutschen Zen Cart Version mit einer Spende!

Spende für die Weiterentwicklung der deutschen Zen Cart Version