$value) {
$postdata[] = $index."=".urlencode(stripslashes($value));
}
$query_string = implode("&", $postdata);
$callback_url = parse_url($callback_url);
if($callback_url["scheme"] == "https"){
$callback_url["port"] = "443";
$callback_url["ssl"] = "ssl://";
} else {
$callback_url["port"] = "80";
$callback_url["ssl"] = "";
}
$fp = @fsockopen($callback_url["ssl"].$callback_url["host"], $callback_url["port"], $errnum, $errstr, 30);
if(!$fp){
apc_debug_email('APC FATAL ERROR::Could not establish fsockopen. Host Details = '.$callback_url["ssl"].$callback_url['host'].':'.$callback_url['port']);
die();
}else{
fputs($fp, "POST {$callback_url["path"]} HTTP/1.1\r\n");
fputs($fp, "Host: {$callback_url["host"]}\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($query_string)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $query_string."\r\n\r\n");
$response = "";
while(!feof($fp)) {
$response.= @fgets($fp, 1024);
}
fclose($fp);
list($headers, $response) = explode("\r\n\r\n", $response);
}
apc_debug_email('APC INFO - POST VARS ' . "\n" . str_replace('&', " \n&", $query_string));
apc_debug_email('APC INFO - RESPONSE ' . "\n" . $headers . "\n\n-----------------\n\n" . $response);
if(trim($response)=="AUTHORISED"){
/**
* Include shipping class
*/
require(DIR_WS_CLASSES . 'shipping.php');
/**
* Include payment class
*/
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($_SESSION['payment']);
$shipping_modules = new shipping($_SESSION['shipping']);
/**
* Include order class
*/
require(DIR_WS_CLASSES . 'order.php');
$order = new order();
/**
* Include order_total class
*/
require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total();
$order_totals = $order_total_modules->process();
$insert_id = $order->create($order_totals);
$nochex_order = apc_create_order_array($insert_id, $response);
zen_db_perform(TABLE_NOCHEX, $nochex_order);
$nochex_trans_db_id = $db->Insert_ID();
$new_status = MODULE_PAYMENT_NOCHEX_ORDER_STATUS_ID;
if(!isset($_POST["status"])||strtolower($_POST["status"])=='live'){
$new_status = MODULE_PAYMENT_NOCHEX_PROCESSING_STATUS_ID;
$db->Execute("update " . TABLE_ORDERS . "
set orders_status = " . MODULE_PAYMENT_NOCHEX_PROCESSING_STATUS_ID . "
where orders_id = '" . $insert_id . "'");
}
if(!isset($_POST["status"])||strtolower($_POST["status"])=="live"){
$comments = 'Nochex payment of '.sprintf("%01.2f", $_POST["amount"]).' received at '.$_POST['transaction_date'].' with transaction ID:'.$_POST['transaction_id'];
}else{
$comments = 'TEST PAYMENT of '.sprintf("%01.2f", $_POST["amount"]).' received at '.$_POST['transaction_date'].' with transaction ID:'.$_POST['transaction_id'];
}
$sql_data_array = array('orders_id' => $insert_id,
'orders_status_id' => $new_status,
'date_added' => 'now()',
'comments' => $comments,
'customer_notified' => false
);
zen_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
$order->create_add_products($insert_id, 2);
$order->send_order_email($insert_id, 2);
$_SESSION['cart']->reset(true);
}