Bug im Checkout Prozess - Versandkosten Manipulation möglich

Thema wurde von maxwell, 14. November 2013 erstellt.

  1. maxwell

    maxwell Erfahrener Benutzer

    Registriert seit:
    2. März 2012
    Beiträge:
    148
    Danke erhalten:
    18
    Danke vergeben:
    62
    Guten Abend,

    es gibt eine Vorgehensweise, die es ermöglicht, die Versandkosten im Bestellprozess zu manipulieren.
    Das Problem ist nämlich, dass die Versandkosten bei "checkout_shipping" abgefragt werden und danach nicht weiter.

    Mein folgendes Beispiel ist mit jeder Versandkostenart reproduzierbar, natürlich macht es nur Sinn, wenn die VSK dadurch nach unten manipuliert werden. Ich habe dies am Modul Freeamount, gambioultra oder dem von uns eingesetzten OVERRULE von HolgerNils (welches auf FLAT aufbaut) nachgestellt.

    Beispiel anhand von Freeamount:
    Ich lege den Versandkostenfrei-Betrag im Admin auf Bspw. 400€ fest.

    Im Shop legt der Kunde dann mehrere Artikel mit Gesamtwert über 400€ in den Korb.
    Die VSK-Art Freeamount wird aktiviert und ist bei "checkout_shipping" auswählbar.

    Bei der "Checkout_Shipping" Seite wähle ich dann also Versandkostenfrei aus.
    Dann gehe ich weiter bis zur „Checkout_Confirmation“ und von dort in den Warenkorb.
    Dann lösche ich alle Artikel und behalte als Kunde nur die, die ich kaufen will (der Wert ist egal, ist im Beispiel jetzt 20€).

    Nun kommt der Trick: Ich gebe in die Browser-Adresszeile den Link direkt zur „checkout_confirmation.php“ ein.

    Dort liegen dann meine grade übrig gebliebenen Artikel im Korb, jedoch ist der Versand noch immer mit "Versandkostenfrei" und 0€ hinterlegt obwohl diese eigentliche gar nicht mehr gültig sein dürfte, weil der Betrag unterschritten ist.

    Lösung?
    Kann man auf der letzten Seite nochmal eine Prüfung einbauen, ob der aktuelle Korb noch berechtigt ist für die jeweils gewählte Versandart? Das sollte im besten Falle dann für alle möglicherweise installierten Versandarten so ablaufen...
     
  2. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Also ich kann das bei uns (2.0.9) nicht nachvollziehen!
    Wenn ich den "Trick" anwende, springt er ohne weiteres zutun wieder in die "checkout_shipping.php" und berechnet die VersKosten.
     
  3. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Kann ich in einem Kundenshop V2.0.14.1 bestätigen!
    Bei www.reifen24.de geht das dank OnePageCheckout nicht!!!

    Ist aber schon sehr seltsam......
     
  4. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    So hier mal ein kleiner Fix für das Problem!

    Man öffne die /shopping_cart.php mit einem Editor, suche nach:
    Code:
    unset($_SESSION['nvpReqArray']);
    unset($_SESSION['reshash']['FORMATED_ERRORS']);
    unset($_SESSION['reshash']);
    unset($_SESSION['tmp_oID'])
    und füge darunter ein:

    Code:
    unset($_SESSION['shipping']);
    speichern. Fertsch...... Ist nicht updatessicher aber da es von GM sicherlich gelöst wird ist das auch net notwendig! ;) ;) ;)
     
  5. maxwell

    maxwell Erfahrener Benutzer

    Registriert seit:
    2. März 2012
    Beiträge:
    148
    Danke erhalten:
    18
    Danke vergeben:
    62
    #5 maxwell, 14. November 2013
    Zuletzt bearbeitet: 14. November 2013
    Prima, so eine Minilösung für ein großes Problem ;)

    Werde ich heute Abend testen und Rückmeldung geben...


    Edit: Funktioniert ganz wunderbar! Springt jetzt korrekterweise zur "Checkout_Shipping" Seite, wenn ich nochmal im Warenkorb war und dort was verändert habe. Genial!
    Ist sichergestellt, dass Artikel auf keinem anderen Wege aus dem WK gelöscht werden können??


    Vielen Dank! Werde diesen Thread an das Ticket beim Support hängen, damit Gambio das möglichst zügig einbaut.
     
  6. Nonito (Gambio)

    Nonito (Gambio) Administrator

    Registriert seit:
    21. April 2011
    Beiträge:
    279
    Danke erhalten:
    134
    Danke vergeben:
    52
    Am sichersten ist es, wenn die Zeile in die includes/cart_actions.php eingefügt wird. Dann wird die Versandart auch bei den neuen Ajax-Requests zurückgesetzt.

    Unter die Zeile
    PHP:
    if (isset ($_GET['action'])) {
    einfügen:
    PHP:
       unset($_SESSION['shipping']);
    Ergebnis:
    PHP:
    if (isset ($_GET['action'])) {
       unset(
    $_SESSION['shipping']);
    Nehmen wir natürlich ins nächste Update rein!
     
  7. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.693
    Danke vergeben:
    903
    Eigentlich gibt es bereits einen Mechanismus, der die Manipulation des Warenkorbs im Bestellvorgang verhindern soll, nämlich die cartID. Hier hat sich ein Fehler eingeschlichen, den wir mit dem Service Pack 2.0.14.2 beheben werden. Bis dahin kann weiterhin Nonitos Lösung genutzt werden.
     
  8. maxwell

    maxwell Erfahrener Benutzer

    Registriert seit:
    2. März 2012
    Beiträge:
    148
    Danke erhalten:
    18
    Danke vergeben:
    62
    Prima, hat sich die Bugmeldung ja gelohnt.

    Reicht eigentlich Nonitos Lösung oder muss die von Steffen auch noch dazu?
     
  9. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Nonitos Lösung reicht..... ;)