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: PayPal (classic) nach Bestellung bleibt Seite auf /checkout_process.php hängen

    MSC

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo liebe Leute & Supporter,
    ich verwende Shop-Version  v2.0.7.2 rev 14622 dated: 2022-07-04
    Dazu das PayPal Classic (Alt) in der aktuellen Version (frisch installiert).

    Wenn ein Kunde über PayPal bezahlt, dann bleibt nach Erfolgreichen Zahlungsvorgang bei PayPal die Seite des Shops auf "checkout_process.php" hängen. Eine Rückkehr zum Shop erfolgt nicht. Im Shop ist die Bestellung vorhanden, aber es kommt keine Bestellbestätigung über EMail an die Shop-Adresse . Der Kunde bekommt eine EMail über seine Bestellung. Das Problem ist neu, denn bisher hat es mit PayPal und EMail-Bestätigung kein Problem gegeben.

    Wenn ich auf der "checkout_process.php" mit F5 aktualisiere, dann lande ich im Shop auf der Seite Zahlungsweise mit dem Fehler: PayPal Zahlung wurde abgebrochen

    Bei Bestellungen, die nicht über PayPal abgewickelt werden, funktioniert die Bestellbetätigung via EMail tadellos, der Shop (und Kunde) bekommt jeweils eine EMail.

    History:
    An PayPal hab ich keine Parameter verändert.
    Der Shop bekam vor 3 Wochen die Updates von Version 2.0.5.1
    PHP 8.0 (zum Test auch 7.4 aktiviert - trotzdem kein Erfolg/EMail)

    Ich hab keine Ahnung wo das Problem sein soll, deshalb bitte ich hier um Hilfe.

    Vielen Dank für eure Zeit und Unterstützung.

    gruss
    MSC

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

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Moin

    In 2.0.7.2 ist ja Paypal Modulversion 1.85 enthalten. Kann also nur ein Update auf 1.86 gewesen sein. Hast du bei diesem Update auch die zwei Dateien im Ordner changed_files beachtet? Eine davon ist nämlich die checkout_process.php und da gab es eine Anpassung beim Punkt send order..

    Gruß Timm

    MSC

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Tim, bis heute war auch PayPal 1.85 installiert, der Fehler war aber schon da. Deswegen habe ich auf PayPal (classic) 1.86 einen Update gemacht. Leider kein Erfolg. 
    Die beiden Dateien im Ordner CHANGED_FILES hab ich auch ins Root-Verzeichnis kopiert.
    Bin völlig ratlos, weil ich im Forum auch nix gefunden habe.

    Vielen Dank.

    MSC

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Ich hab nach langer Suche eine Spur gefunden. Um den Fehler einzugrenzen, habe ich auf einem Testsystem ein Backup des Shops von Version 2.0.7.0 installiert.
    In dieser Version funktioniert PayPal.
    Danach habe ich ein Update auf 2.0.7.1 installiert. Hier habe ich beobachtet, dass PayPal zwar funktioniert, aber der Callback auf den Shop nicht immer klappt. Nach Bezahlen in PayPal ist die Rückkehr zum Shop nicht immer ok.

    Mit Version 2.0.7.2 klappt die Rückkehr von PayPal zum Shop grundsätzlich nicht mehr. Der Browser bleibt bei checkout_process.php hängen. Wenn ich dann mit F5 die Seite aktualisiere, dann lande ich auf der Seite zum Bezahlen mit dem Vermerk. "Paypal wurde abgelehnt".

    Im Einsatz war PayPal Classic in Version 1.85. Ein Update auf 1.86 hat das Problem nicht behoben.

    Im Anhang noch ein Screenshot aus dem LOG-Verzeichnis. Die betreffende Log-zeile ist rot umrandet.

    Hat jemand Rat, was die Ursache sein könnte?

    Vielen Dank.
    msc

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Moin

    Bitte poste Fehlermeldungen in Code tags. Dazu einfach beim schreiben des Beitrags auf den Button xml oder php klicken und es dazwischen einfügen. Dadurch können andere die nach der selben Fehlermeldung suchen, diese auch im Forum finden und Helfenden können sie kopieren und im Bugtracker schauen, ob es die Meldung schon gibt.

    Ich hab es in meinem 2.0.7.2 Testshop mit paypalclassic probiert und wurde ohne Fehlermeldung zum Shop zurückgeleitet und hab sowohl als Kunde als auch als Shopbetreiber die nötigen Emails erhalten. Funktioniert also generell. Schuldest mir jetzt zweimal Paypal Fixgebühren   ;-)

    Wenn man die Fehlermeldung mal durchgeht, dann kommt man an zwei Stellen.

    1)
    send_order.php ca Zeile 152-156
    Code: PHP  [Auswählen]
     //email attachments
      $email_attachments = defined('EMAIL_BILLING_ATTACHMENTS') ? EMAIL_BILLING_ATTACHMENTS : '';

      foreach(auto_include(DIR_FS_CATALOG.'includes/extra/send_order/data/','php') as $file) require ($file);

    Schau mal, ob in dem Ordner irgendwas liegt, was da nicht hingehört.

    Zusätzlich entferne mal testweise Emailanhänge in der Verrechnungsemail in den Emailoptionen im Backend.

    2)
    includes/external/paypal/classes/PayPalPaymentBase.php ca. Zeile 120

    Code: PHP  [Auswählen]
    if ($this->enabled == true
            && defined('MODULE_PAYMENT_'.strtoupper($this->code).'_ZONE')
            && (int) constant('MODULE_PAYMENT_'.strtoupper($this->code).'_ZONE') > 0
            )
        {
          $check_flag = false;
          $check_query = xtc_db_query("SELECT zone_id
                                         FROM "
    .TABLE_ZONES_TO_GEO_ZONES."
                                        WHERE geo_zone_id = '"
    .(int) constant('MODULE_PAYMENT_'.strtoupper($this->code).'_ZONE')."'
                                          AND zone_country_id = '"
    .$order->billing['country']['id']."'
                                     ORDER BY zone_id"
    );
          while($check = xtc_db_fetch_array($check_query)) {
            if ($check['zone_id'] < 1) {
              $check_flag = true;
              break;
            } elseif ($check['zone_id'] == $order->billing['zone_id']) {
              $check_flag = true;
              break;
            }
          }
          if ($check_flag == false) {
            $this->enabled = false;
          }
        }
      }

    Da gehts um Länder und Zonen.

    Ich habe es in den paypalclassic Moduleinstellungen ohne Einträge für Erlaubte Zone und Zahlungszone, nur mit Profil probiert und es ging. Falls du da etwas eingetragen hast, lösch das mal testweise.

    Hintergrund: In den neueren PayPal Checkout Modulen darf da nichts eingetragen sein, da die erlaubten Länder für jedes Modul schon hardcodiert sind und es da zu Fehlern kommt, wenn in den Moduleinstellungen zusätzlich etwas eingetragen ist. Normalerweise sollte es die Felder nicht mehr geben.

    Gruß Timm

    MSC

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Timm,
    vielen Dank für deine schnelle Hilfe. Deine Problemlösung hat prima funktioniert. Es lag an den Einträgen für PayPal (Erlaubte Zone und Zahlungszone). Nachdem ich die Einträge dort rausgenommen habe, klappt der Callback zum Shop wieder und es wird auch wieder eine Bestätigungsmail erzeugt.

    Super Service, Timm. Herzlichen Dank dafür !
    gruss
    msc

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Freut mich, gerne.

    Ab Paypalversion 1.87 sollte das nicht mehr passieren, da dann die Felder nicht mehr vorhanden sind.

    Gruß Timm
    2 Antworten
    1951 Aufrufe
    03. März 2016, 09:56:42 von Bonsai
    3 Antworten
    2505 Aufrufe
    30. Juli 2012, 13:29:28 von DokuMan
    4 Antworten
    6153 Aufrufe
    27. August 2010, 07:23:54 von andy1304
    1 Antworten
    1596 Aufrufe
    30. September 2016, 09:50:59 von Henry07