so the return URL:
uses the www address, so when you get the empty cart using the address:
that is because of domain switching like i said earlier.
for the shipping failure, add the session dump code to the shipping failure so we can see the response from the shipping lookup service:
<?php session_start(); var_dump($_SESSION); ?>