zen cart 1.5.8
square web pay 1.0.4
bootstrap 3.5.2
I have an issue where the terms and conditions do not need to be ticked for an order to go through. I think it is connected to JavaScript and using preventDefault method. I believe that this means that required fields are not checked when the form is submitted. I have resolved the issue by adding the following to includes/modules/pages/checkout_payment/jscript_square_webPay.php
original starting line 157
Code:
var verifyBuyerResult = document.createElement("input");
verifyBuyerResult.setAttribute("type", "hidden");
verifyBuyerResult.setAttribute("name", "verifyBuyerResult");
verifyBuyerResult.setAttribute("value", JSON.stringify(verificationToken));
document.querySelector('[name="checkout_payment"]').appendChild(verifyBuyerResult);
cardButton.disabled = false;
document.forms["checkout_payment"].submit();
new
Code:
var verifyBuyerResult = document.createElement("input");
verifyBuyerResult.setAttribute("type", "hidden");
verifyBuyerResult.setAttribute("name", "verifyBuyerResult");
verifyBuyerResult.setAttribute("value", JSON.stringify(verificationToken));
document.querySelector('[name="checkout_payment"]').appendChild(verifyBuyerResult);
cardButton.disabled = false;
let isFormValid = document.forms["checkout_payment"].checkValidity();
if (isFormValid) {
document.forms["checkout_payment"].submit();
} else {
document.forms["checkout_payment"].reportValidity();
}
Something similar may be required for one page checkout!
Bookmarks