Hi, for anyone still struggling with this, I have been told by RBS Worldpay that the only way they accept callback code with a redirect is to use a meta refresh, rather than javascript as the callback used to.
Therefore, to overcome this issue (worked for me anyway), you need to make sure you are using the latest junior_callback.php file in ext/modules/payment/worldpay, which can be obtained from here:
http://addons.oscommerce.com/info/7151
Open the junior_callback.php file in a text editor and at line 89, before:
<form action="<?php echo tep_href_link(FILENAME_CHECKOUT_PROCESS, tep_session_name() . '=' . $_POST['M_sid'] . '&hash=' . $_POST['M_hash'], 'SSL', false); ?>" method="post">
Add:
<meta http-equiv="refresh" content="0; url=<?php echo tep_href_link(FILENAME_CHECKOUT_PROCESS, tep_session_name() . '=' . $_POST['M_sid'] . '&hash=' . $_POST['hash'], 'SSL', false); ?>">
Repeat this at line 127, before:
<form action="<?php echo tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_session_name() . '=' . $_POST['M_sid'] . '&hash=' . $_POST['M_hash'], 'SSL', false); ?>" method="post">
Add:
<meta http-equiv="refresh" content="0; url=<?php echo tep_href_link(FILENAME_CHECKOUT_PROCESS, tep_session_name() . '=' . $_POST['M_sid'] . '&hash=' . $_POST['hash'], 'SSL', false); ?>">
This seems to invoke the redirect with the OSC session ID and Cart ID, where the form seems to lose them.
I hope this saves someone the hours it took me to work it out!