function fn_mb_place_order($data) { define('FORCE_SESSION_START', true); $order_id = 0; $mb_sess_id = base64_decode($data['mb_sess_id']); if (!empty($mb_sess_id)) { Session::resetId($mb_sess_id); $cart =& $_SESSION['cart']; $auth =& $_SESSION['auth']; list($order_id, $process_payment) = fn_place_order($cart, $auth); if (!empty($_REQUEST['order_id'])) { $data = array('order_id' => $order_id, 'type' => 'S', 'data' => TIME); db_query('REPLACE INTO ?:order_data ?e', $data); $data = array('order_id' => $order_id, 'type' => 'E', 'data' => $_REQUEST['inner_order_id']); db_query('REPLACE INTO ?:order_data ?e', $data); } } return $order_id; }
$_return .= '&Signature=' . $sign; $_return .= '&aws-access-key-id=' . $aws_access_key; } echo $_return; exit; } elseif ($message_recognizer == 'NewOrderNotification') { // Order was placed by Amazon checkout. We need to proceed the callback. list($amazon_sess_id, $payment_id) = explode(';', base64_decode((string) $xml->ProcessedOrder->ProcessedOrderItems->ProcessedOrderItem->CartCustomData->ClientRequestId)); $processor_data = fn_get_payment_method_data($payment_id); // If we use the signed cart, validate the request if (!fn_amazon_validate_request($processor_data, $_POST)) { die('Access denied'); } // Restart session if (!empty($amazon_sess_id)) { Session::resetId($amazon_sess_id); fn_payments_set_company_id(0, $_SESSION['settings']['company_id']['value']); $cart =& $_SESSION['cart']; $auth =& $_SESSION['auth']; } // Compare the cart data with the Amazon request if (!fn_amazon_validate_cart_data($cart, $xml)) { fn_set_notification('E', __('error'), 'text_amazon_incorrect_products_count'); exit; } $transaction_id = (string) $xml->ProcessedOrder->AmazonOrderID; // Prevent the double notifications $reference_id = (string) $xml->NotificationReferenceId; if (!empty($_SESSION['reference_id']) && $_SESSION['reference_id'] == $reference_id) { exit; } else {