Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Fehler 915: Anmeldung eines Kunden mit ausländischer USt-Id nicht mehr möglich

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    Hallo zusammen,

    ich benutze derzeit (leider noch immer  :sorry:  die ältere) Version v1.03

    Nun habe ich von einem Kunden den Hinweis bekommen, die Anmeldung mit seiner USt-Id aus dem Ausland funktioniert nicht. Ich habe das gleich mal ausprobiert und mich mit den zugehörigen Daten anmelden wollen. Daraufhin kommt folgende Fehlermeldung:

    Zitat
    Fatal error: Call to undefined function: wddx_deserialize() in /hp/aa/ah/bc/www/includes/classes/vat_validation.php on line 915

    Ich hab mal in die entsprechende Datei geschaut, aber da fehlt mir dann das weitere Fachwissen, weil darin steht dann $des_out = wddx_deserialize(curl_exec($ch));

    Ein ähnliches Problem hat es wohl hier mal gegeben: Adminbereich neuen Kunden mit UStID anlegen nicht möglich: fatal error line 133

    Das angepasst ergibt leider keine Besserung und bezieht sich wohl eher auf das Anlegen eines Kunden direkt im Adminbereich, oder?

    Hat jemand einen Tipp, wie ich das Problem beheben kann?
    Wäre echt klasse, wenn Ihr mir hier erneut weiterhelfen könntet.

    beste Grüße
    Chrischan



    Linkback: https://www.modified-shop.org/forum/index.php?topic=13150.0

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Hallo Chrischan,

    #1 Schritt: Prüfen, ob die UST-ID wirklich als gültig erkannt wird: http://ec.europa.eu/taxation_customs/vies/lang.do?fromWhichPage=vieshome&selectedLanguage=DE
    (mir sind aktuell Fälle bekannt, das einige italienische USTIDs nicht funktionieren oder irgendwie umgestellt werden)

    #2 Schritt: Quelltext zur VAT-ID Überprüfung aktualisieren. Derzeit aktuellste Version hier: /includes/classes/vat_validation.php

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    Hallo DokuMan,

    besten Dank für deine Rückmeldung. Die Steuernummer passt. Ich hab eben die alte gegen die aktuellere VAT-Datei getauscht und leider kommt jetzt folgende Fehlermeldung:

    Zitat
    Fatal error: Call to undefined function: wddx_deserialize() in /hp/aa/ah/bc/www/includes/classes/vat_validation.php on line 942

    Komischerweise geht das mit der Anmeldung in Verbindung mit der Angabe einer Steuernummer erst seit einigen Tagen oder wenigen Wochen nicht mehr. Geändert wurde jedoch am Shop selbst eigentlich nichts.

    Bin über jede Hilfe dankbar.  :?

    Grüße
    Chrischan

    hendrik

    • Experte
    • Beiträge: 2.038
    Zitat
    Fatal error: Call to undefined function: wddx_deserialize()

    PHP findet eine Funktion nicht. Diese ist Teil einer Bibliothek die in der PHP-Installation deines Servers/Hosters nicht vorhanden ist (muß beim PHP-Interpreter mit eincompiliert werden). Noch nie erlebt, meist ist das vorhanden.

    Sprich mal den Service deines Hosters an und zeige ihm die Fehlermeldung.

    Gruß
    Hen

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    Hallo Hendrik,

    vielen Dank auch für Deine Hilfe! Der Hoster bei dem der Shop abgelegt ist, ist 1blu. Ich hab denen auch gleich mal eine Mail zukommen lassen. Ich werde berichten

    Grüße
    Chrischan

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    du kannst aber auch in der /includes/classes/vat_validation.php am Ende VOR dem hier:

    Code: PHP  [Auswählen]
    }
    ?>
     
    das hier einfügen:

    Code: PHP  [Auswählen]
    if (!function_exists('wddx_deserialize'))
    {
        /**
         * Clone implementation of wddx_deserialize
         */

        function wddx_deserialize($xmlpacket)
        {
            if ($xmlpacket instanceof SimpleXMLElement)
            {
                if (!empty($xmlpacket->struct))
                {
                    $struct = array();
                    foreach ($xmlpacket->xpath("struct/var") as $var)
                    {
                        if (!empty($var["name"]))
                        {
                            $key = (string) $var["name"];
                            $struct[$key] = wddx_deserialize($var);
                        }
                    }
                    return $struct;
                }
                else if (!empty($xmlpacket->array))
                {
                    $array = array();
                    foreach ($xmlpacket->xpath("array/*") as $var)
                    {
                        array_push($array, wddx_deserialize($var));
                    }
                    return $array;
                }
                else if (!empty($xmlpacket->string))
                {
                    return (string) $xmlpacket->string;
                }
                else if (!empty($xmlpacket->number))
                {
                    return (int) $xmlpacket->number;
                }
                else
                {
                    if (is_numeric((string) $xmlpacket))
                    {
                        return (int) $xmlpacket;
                    }
                    else
                    {
                        return (string) $xmlpacket;
                    }
                }
            }
            else
            {
                $sxe = simplexml_load_string($xmlpacket);
                $datanode = $sxe->xpath("/wddxPacket[@version='1.0']/data");
                return wddx_deserialize($datanode[0]);
            }
        }
    }
     
    Gruss Gerhard

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    Hallo Gerhard,

    ohhh, das sieht ja schon gut aus. Eine Art Ersatz also für das, was serverseitig nicht vorhanden ist, ja?

    Ich hab das gerade probiert, aber irgendwo scheint da noch ein Fehler drin zu sein, den er nicht annimmt. Die Fehlermeldung lautet wie folgt:

    Parse error: syntax error, unexpected T_IF, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /hp/aa/ah/bc/www/includes/classes/vat_validation.php on line 1000

    Hab ich hier Mist gebaut und irgendwo etwas zu viel oder zu wenig? Eigentlich hab ich das nämlich nur reinkopiert an die besagte Stelle. Den Code hab ich wie folgt eingefügt:

    Code: PHP  [Auswählen]
    } // end function Live
      /*******************************************************************/

      if (!function_exists('wddx_deserialize'))
            {
        /**
         * Clone implementation of wddx_deserialize
         */

        function wddx_deserialize($xmlpacket)
        {
            if ($xmlpacket instanceof SimpleXMLElement)
            {
                if (!empty($xmlpacket->struct))
                {
                    $struct = array();
                    foreach ($xmlpacket->xpath("struct/var") as $var)
                    {
                        if (!empty($var["name"]))
                        {
                            $key = (string) $var["name"];
                            $struct[$key] = wddx_deserialize($var);
                        }
                    }
                    return $struct;
                }
                else if (!empty($xmlpacket->array))
                {
                    $array = array();
                    foreach ($xmlpacket->xpath("array/*") as $var)
                    {
                        array_push($array, wddx_deserialize($var));
                    }
                    return $array;
                }
                else if (!empty($xmlpacket->string))
                {
                    return (string) $xmlpacket->string;
                }
                else if (!empty($xmlpacket->number))
                {
                    return (int) $xmlpacket->number;
                }
                else
                {
                    if (is_numeric((string) $xmlpacket))
                    {
                        return (int) $xmlpacket;
                    }
                    else
                    {
                        return (string) $xmlpacket;
                    }
                }
            }
            else
            {
                $sxe = simplexml_load_string($xmlpacket);
                $datanode = $sxe->xpath("/wddxPacket[@version='1.0']/data");
                return wddx_deserialize($datanode[0]);
            }
        }
    }

    }
    ?>
    Kannst du mir hier nochmal weiterhelfen?
    Besten Dank dafür vorab!!!

    Grüße
    Chrischan

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    setze mal nur das hier ein, praktisch ohne Abfrage ob die Funktion vorhanden ist.

    Code: PHP  [Auswählen]
        /**
         * Clone implementation of wddx_deserialize
         */

        function wddx_deserialize($xmlpacket)
        {
            if ($xmlpacket instanceof SimpleXMLElement)
            {
                if (!empty($xmlpacket->struct))
                {
                    $struct = array();
                    foreach ($xmlpacket->xpath("struct/var") as $var)
                    {
                        if (!empty($var["name"]))
                        {
                            $key = (string) $var["name"];
                            $struct[$key] = wddx_deserialize($var);
                        }
                    }
                    return $struct;
                }
                else if (!empty($xmlpacket->array))
                {
                    $array = array();
                    foreach ($xmlpacket->xpath("array/*") as $var)
                    {
                        array_push($array, wddx_deserialize($var));
                    }
                    return $array;
                }
                else if (!empty($xmlpacket->string))
                {
                    return (string) $xmlpacket->string;
                }
                else if (!empty($xmlpacket->number))
                {
                    return (int) $xmlpacket->number;
                }
                else
                {
                    if (is_numeric((string) $xmlpacket))
                    {
                        return (int) $xmlpacket;
                    }
                    else
                    {
                        return (string) $xmlpacket;
                    }
                }
            }
            else
            {
                $sxe = simplexml_load_string($xmlpacket);
                $datanode = $sxe->xpath("/wddxPacket[@version='1.0']/data");
                return wddx_deserialize($datanode[0]);
            }
        }
     

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    @Gerhard: sehr gute Idee, ich habe die beiden "/functions/compatibility.php" damit in r1980 erweitert.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Somit setze ich das Thema hier mal auf "behoben". ;-)

    Grüße

    Torsten

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    @Gerhard,

    ich muss dich jetzt nochmal stören  :D

    Aktuell bekomme ich mit der neuen Variante noch immer einen Fehler in Zeile 980 angezeigt.
    Parse error: syntax error, unexpected T_STRING in /hp/aa/ah/bc/www/includes/classes/vat_validation.php on line 980Bei mir ist das die Zeile hier:

    Code: PHP  [Auswählen]
    if ($xmlpacket instanceof SimpleXMLElement)
    Ein Semikolon oder ähnliches fehlt da nicht, oder? Ich hoffe, du kannst mir hier nochmal helfen

    Grüße
    Chrischan

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    kannst du mir mal verraten, welche PHP Version du hast ?

    Findest du im Adminbereich unter "Hilfsprogramme" -> "Server Info".

    Gruss Gerhard

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    Hallo Gerhard,

    die PHP Version ist:    4.4.2-Debian-0.1~sarge1 (Zend: 1.3.0)

    Grüße
    Chrischan

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    das habe ich mir gedacht...

    ersetze mal das

    Code: PHP  [Auswählen]
    if ($xmlpacket instanceof SimpleXMLElement)
    durch

    Code: PHP  [Auswählen]
    if (is_a($xmlpacket, SimpleXMLElement))
    der Operator instanceof ist erst ap PHP5 verfügbar.

    Gruss Gerhard

    Chrisip

    • Frisch an Board
    • Beiträge: 81
    Hallo Gerhard,

    das hab ich geändert, jetzt kommt allerdings erneut in Zeile 915 eine Fehlermeldung (hier Z.2):

    Code: PHP  [Auswählen]
    /* Aufruf von CURL und Ausgabe mit WDDX deserialisieren */

                    $des_out = wddx_deserialize(curl_exec($ch));
                    curl_close($ch);

                    /* Die deserialisierte Ausgabe in ein Array schreiben */
    Die PHP-Version wird über den Hoster aktualisiert, oder? Ich bin gerade mit 1blu am mailen, mal schauen ob die ebenfalls eine Idee dazu haben.

    Weil, bevor das jetzt hier für dich ein riesen Aufwand wird,  :oops: würde ich mir ja fast noch überlegen, auf die neue Version 1.05 zu wechseln. Ich habe allerdings einige Anpassungen vornehmen müssen und möchte daher ungern zu diesem Zeitpunkt schon wechseln. Wenn du also noch eine Idee hast, wie ich hier zum Ziel kommen kann, würde ich mich riesig drüber freuen.

    Grüße
    Chris

    Shop Hosting
    8 Antworten
    5903 Aufrufe
    16. Oktober 2011, 22:29:33 von miheha
    6 Antworten
    4657 Aufrufe
    24. August 2011, 09:25:48 von Sabo
    52 Antworten
    7855 Aufrufe
    03. Juni 2019, 11:10:48 von RWEVGMBH
               
    anything