I am not sure whether this is alterations I have made or if it is a bug. Still looking at it. Maybe someone can advise me :-)
The file I am looking at is modules/pages/checkout_one_confirmation/header_php.php
Line 203 reads:
Code:
$_SESSION['shipping']['extras'] = (isset($quote[0]['extras'])) ? $quote[0]['extras'] : '';
The problem is that for a shipping module that has not previously set 'extras' it adds a empty field to the session. Not a problem by itself but then later on we get to ln 278 or so:
Code:
$session_end_hash = $checkout_one->hashSession($currencies->format ($order->info['total']));
if ($confirmation_required === false && $order_confirmed === true && $session_end_hash !== $session_start_hash) {
$error = true;
$messageStack->add_session('checkout_payment', ERROR_NOJS_ORDER_CHANGED, 'error');
}
Because the session has been amended the error is added. Nothing has actually changed but the hash values will not match.
I find that this is a better version of the line:
Code:
if(isset($quote[0]['extras'])) $_SESSION['shipping']['extras'] = $quote[0]['extras'];
Perhaps I am missing something though? Or perhaps it is due to a fairly highly modified store. If one of the experts can chime in then that would be great.
Nick