v3.0.x UnexpectedValueException für $p_gender-Wert

Thema wurde von Xantiva, 16. August 2016 erstellt.

  1. Xantiva

    Xantiva Erfahrener Benutzer

    Registriert seit:
    5. Mai 2013
    Beiträge:
    65
    Danke erhalten:
    2
    Danke vergeben:
    14
    Hi,

    nach dem Update auf die 3.0.2.0 gibt es hier diverse Abbrüche im Checkout, da in der Datenbanktabelle customers unerwartete Werte für customers_gender drin stehen. Neben "m" und "f" sind sehr viele leere Werte drin, aber auch ein paar "n".

    Request: POST /checkout_process.php (Details)
    Code:
    2016-08-12 15:44:55 (82bd6bc6166191570b46a6b5e4289e64) FATAL ERROR(1): "Uncaught exception 'UnexpectedValueException' with message '$p_gender is not expected string "m" or "f"' in /www/htdocs/xxx/GXEngine/Classes/CoreServices/Customer/ValueObjects/CustomerGender.inc.php:54
    Stack trace:
    #0 /www/htdocs/xxx/system/core/MainFactory.inc.php(291) : eval()'d code(1): CustomerGender->__construct('n')
    #1 /www/htdocs/xxx/system/core/MainFactory.inc.php(291): eval()
    #2 /www/htdocs/xxx/system/core/MainFactory.inc.php(189): MainFactory::create_object('CustomerGender', Array)
    #3 /www/htdocs/xxx/GXEngine/Classes/CoreServices/Customer/CustomerReader.inc.php(171): MainFactory::create('CustomerGender', 'n')
    #4 /www/htdocs/xxx/GXEngine/Classes/CoreServices/Customer/CustomerReader.inc.php(146): CustomerReader->_createCustomerByArray(Array)
    #5 /www/htdocs/xxx/GXEngine/Classes/CoreServices/Customer/CustomerReader.inc.php(8"
    
    Wenn ich das in der Datebank richtig sehe, sind das alles Kunden mit "" und "n", die in der Vorversion (2.2.x) per Paypal und als Gast bestellt haben? In der Tabelle `address_book` habe alle als `address_class` den Wert 'paypal_guest' drin stehen. Der String paypal_guest findet sich in der GMPayPalGuestAccountManager.php, wie auch:
    Code:
    'customers_gender' => 'n',
    Und das "n" habt Ihr im Constructor der CustomerGender.inc.php nicht berücksichtigt:
    Code:
        if(!in_array($p_gender, array('m', 'f', '')))
         {
           throw new UnexpectedValueException('$p_gender is not expected string "m" or "f"');
         }
    
    Ciao,
    Mike
     
  2. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Das ist ne Datenbankinkonsistenz, die Datenbank musste einmal per SQL Update fixen. Alle "n" musst du dabei einmal gegen "" (leer) ersetzen.

    "N" war früher erlaubt, jetzt nicht mehr, das wurde auch mal durch ein normales Shopupdate angepasst. Das Problem tritt dann auf, wenn nach diesem Update noch weiter ein altes, jetzt inkompatibles Modul weiter läuft und wieder kaputte Daten erzeugt. Läuft in dem Shop jetzt noch ein altes PayPal Modul? Das wäre ein Nummer 1 Kandidat. Wenn ja weg, das geht nicht mehr rund. Ansonsten sollte der Fehler verschwunden sein, sobald du die DB dort einmal reparierst.
     
  3. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    Der Gambio-Updater begradigt die Daten im Zuge des 2.3.2.1-Updates einmalig. Anschließend können aber wieder neue, falsche Datensätze entstehen, wenn man ein veraltetes paypalng-Modul in einer neuen Shopsystem-Version verwendet. Das heißt, wer noch ein paypalng aus Shopsystemversion 2.2.x.x. in einem GX3-Shop hat, muss zumindest ECS komplett abschalten, damit diese falschen Daten nicht erzeugt werden.
     
  4. Xantiva

    Xantiva Erfahrener Benutzer

    Registriert seit:
    5. Mai 2013
    Beiträge:
    65
    Danke erhalten:
    2
    Danke vergeben:
    14
    Ja, es wird noch das alte Paypal Modul genutzt. Die Idee war erst mal das Shop-Update zu machen und wenn das läuft, dann auch das PP-Plus Modul noch zu aktualisieren ...

    Vielleicht wäre es da Hilfreich, den Hinweis noch etwas drastischer zu Formulieren. "Veraltet" suggeriert, es gibt was neues, schöneres. Aber das ist nicht nur veraltet, sondern das funktioniert nicht mehr!
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    In den neuen Versionen ist auch das aktuelle PayPal-Plus Modul enthalten.
     
  6. Xantiva

    Xantiva Erfahrener Benutzer

    Registriert seit:
    5. Mai 2013
    Beiträge:
    65
    Danke erhalten:
    2
    Danke vergeben:
    14
    Ich habe mich falsch ausgedrückt: Erst wenn nach ein paar Tagen sicher ist, dass das Shop-Update (in einem Rutsch von 2.2 => 2.4 => 2.6 => 3.0 => 3.0.2.0) fehlerfrei funktioniert hat, sollte von dem alten PayPal-Modul auf das neue PP-Plus umgestellt werden. (Ich habe bewusst nirgendswo gelesen, dass ich umstellen MUSS.)

    Wie jetzt klar ist, hat das eher für Fehler gesorgt.
     
  7. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Wir werden glaube ich einfach in naher Zukunft in den weiteren Updates die alten PayPal Module löschen lassen, ich glaube das hilft allen am besten.