Magento 1.9 Lösung – Paypal Express Review bug – Agreements lassen sich nicht bestätigen bzw. jetzt bestellen verschwindet
Hier ein sehr komischer Bug und vorallem auch die Lösung.
Der Bug betrifft Magento 1.9. und Paypal Express Checkout.
In unserem Fall
Magento: 1.9.3.9
Zahlart: Website Payments Standard (Includes Express Checkout)
Wie sich der Bug zeigt?
Der Besucher durchläuft den Checkout und wählt dort die Zahlart "Paypal". Nach der Auswahl der Zahlart wird der Besucher zu normal Paypal geleitet. Dort loggt er sich ein und bezahlt.
Dann landet der Besucher wieder normal im Shop auf "/paypal/express/review/". Hier muss der Besucher noch die AGB + Datenschutzerklärung zustimmen.
Der Bug ist nun, dass der Besucher dort aber nicht weiterkommt. Sobald eine Checkbox gesetzt ist, wird der "jetzt bestellen"-Button deaktiviert. Wenn der Besucher direkt auf "jetzt bestellen" klickt kommt der Hinweis von Magento, dass die Bedingungen zu bestätigen sind.
In unserem Fall kam noch die Besonderheit dazu, dass eine Artikelart die Versandart übersprungen hat. Ohne Versand ist das Script jedoch komplett aufgeschmissen.
Ursache ist ein Bug im Javascript was den review durchführt.
Die Lösung hier gefunden:
https://crazylinux.de/Magento/PayPal
//skin/frontend/base/default/js/checkout/review.js
if (document.getElementById("agreement-1").checked && document.getElementById("agreement-2").checked) {
isDisabled = false;
}else{
isDisabled = true;
}
Statt die /base das entsprechend eigene Template verwenden
Die komplette angepasst Funktion sieht wie folgt aus
ab ca. Zeile 427
_updateOrderSubmit : function(shouldDisable)
{
var isDisabled = shouldDisable || (
this.reloadByShippingSelect && (!this.shippingSelect || '' == this.shippingSelect.value)
);
var no_shipping = isDisabled;
if (no_shipping){
if (document.getElementById("agreement-1").checked && document.getElementById("agreement-2").checked) {
isDisabled = false;
}else{
isDisabled = true;
}
}
this._canSubmitOrder = !isDisabled;
if (this.formSubmit) {
this._toggleButton(this.formSubmit, isDisabled);
}
},
Im Anschluss Cache erneuern und Browser Cache löschen und es sollte funktionieren.