I just found this old topic - problem with missing check for quantities during payment validation is still present even in current PrestaShop version 1.6.0.14.
Better approach as editing each one module is changing function validateOrder in abstract class PaymentModule.
1. Create file /override/classes/PaymentModule.php
2. Copy and paste there this:
<?php
abstract class PaymentModule extends PaymentModuleCore
{
public function validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method = 'Unknown',
$message = null, $extra_vars = array(), $currency_special = null, $dont_touch_amount = false,
$secure_key = false, Shop $shop = null)
{
if (!isset($this->context))
$this->context = Context::getContext();
$this->context->cart = new Cart($id_cart);
if (!$this->context->cart->checkQuantities()){
Tools::redirect(__PS_BASE_URI__.'order.php?step=0');
}
return parent::validateOrder($id_cart, $id_order_state, $amount_paid, $payment_method, $message,
$extra_vars, $currency_special, $dont_touch_amount, $secure_key, $shop);
}
}
3. Delete file /cache/class_index.php (it will be regenerated with reference on this new overridden class)
4. Make sure you have enabled overridden classes in your /admin interface/advanced parameters/performance - second section "Debug mode", option Disable all overrides