$doc = $xp->getDocument();
if (is_object($doc->root)) {
    $root = $doc->getRoot();
    $message_recognizer = $root->getName();
} else {
    fn_google_xml_error('GCC: failed to parse incoming XML');
}
if ($message_recognizer != 'merchant-calculation-callback') {
    fn_google_xml_error('GCC: incoming XML is not that we are expecting');
}
// Restart session
$google_sess_id = $root->getValueByPath('shopping-cart/merchant-private-data/additional_data/session_id');
if (empty($google_sess_id)) {
    fn_google_xml_error('GCC: failed to get session ID from XML');
}
Session::reset_id($google_sess_id);
$_SESSION['cart'] = empty($_SESSION['cart']) ? array() : $_SESSION['cart'];
$cart =& $_SESSION['cart'];
$currency_code = $root->getValueByPath('shopping-cart/merchant-private-data/additional_data/currency_code');
$response = array();
$adr = $root->getElementByPath('calculate/addresses');
$cds = $root->getElementByPath('calculate/merchant-code-strings');
if ($adr) {
    $addresses = $adr->getElementsByName('anonymous-address');
}
if ($cds) {
    $_codes = array();
    $codes = $cds->getElementsByName('merchant-code-string');
}
if (!empty($addresses)) {
    $total = sizeof($addresses);