Critical Error: This page can ONLY be viewed under SSL!");
if($_GET['process']==1){
$transData['customer_id'] = $orderSum["customer_id"];
$transData['order_id'] = $orderSum['cart_order_id'];
$transData['amount'] = $orderSum['prod_total'];
$transData['gateway'] = "psiGate";
// first check card
require("classes".CC_DS."validate".CC_DS."validateCard.php");
$card = new validateCard();
$cardNo = $_POST["cardNumber"];
$issueNo = 0;
$issueDate = 0;
$issueFormat = 4;
$expireDate = trim($_POST["expirationYear"]).str_pad(trim($_POST["expirationMonth"]), 2, '0', STR_PAD_LEFT);
$expireFormat = 4;
$scReqd = TRUE;
$securityCode = $_POST["cvc2"];
$card = $card->check($cardNo,
$issueNo,
$issueDate,
$issueFormat,
$expireDate,
$expireFormat,
$scReqd,
$securityCode);
if($module['validation']==1 && $card['response']=="FAIL"){
$errorMsg = "";
foreach($card['error'] as $val){
$errorMsg .= $val."
";
}
} else {
$XPost = "
";
if($module['test']==1){
$XPost .= "teststore
psigate1234";
} else {
$XPost .= "".$module['acNo']."
".$module['passPhrase']."
";
}
$XPost .=
"".$orderSum['prod_total']."
CC
0
".trim($_POST["cardNumber"])."
".trim($_POST["expirationMonth"])."
".trim($_POST["expirationYear"])."
1
".trim($_POST["cvc2"])."
".trim(get_ip_address())."
-
".$orderSum['cart_order_id']."
Order #".$orderSum['cart_order_id']."
1
".$orderSum['prod_total']."
".trim($_POST["firstName"])." ".$_POST["lastName"]."
".trim($_POST["addr1"])."
".trim($_POST["addr2"])."
".trim($_POST["city"])."
".trim($_POST["state"])."
".trim($_POST["postalCode"])."
".trim($_POST["country"])."
".trim($_POST["emailAddress"])."
";
if($module['test']==1){
$url = "https://dev.psigate.com:7989/Messenger/XMLMessenger";
} else {
$url = $module['url'];
}
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 4); // times out after 4s
curl_setopt($ch, CURLOPT_POSTFIELDS, $XPost); // add POST fields
if($config['proxy']==1){
curl_setopt ($ch, CURLOPT_PROXY, $config['proxyHost'].":".$config['proxyPort']);
}
$result = curl_exec($ch); // run the whole process
$curl_error = curl_errno($ch);
if ($curl_error) {
echo "Curl Error: ".$curl_error." ".curl_error($ch)." - ".$url;
} else {
curl_close($ch);
}
// use XML Parser on $result, and your set!
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($xml_parser, $result, $vals, $index);
xml_parser_free($xml_parser);
// $vals = array of XML tags. Go get em!
/*
foreach($vals as $key => $value){
echo $key ." = ".$value."
";
foreach($value as $key2 => $value2){
echo $key2 ." = ".$value2."
";
}
echo "
";
}
echo "Array 4 Value = ".$vals[4]['value'];
exit;
*/
$notes = explode(":",$vals[6]['value']);
if($vals[4]['value'] == "APPROVED") {
$order->orderStatus(3,$orderSum['cart_order_id']);
$jumpTo = "index.php?_g=co&_a=confirmed&s=2";
$transData['trans_id'] = $vals[13]['value'];
$transData['status'] = $vals[4]['value'];
$transData['notes'] = $notes[1];
} else {
$transData['trans_id'] = "n/a";
$transData['status'] = $vals[4]['value'];
$errorMsg = "This transaction has been declined. Please check the card details and try again.";
$transData['notes'] = $errorMsg;
}
}
$order->storeTrans($transData);
if(isset($jumpTo) && !empty($jumpTo)) {
httpredir($jumpTo);
}
}
$formTemplate = new XTemplate ("modules".CC_DS."gateway".CC_DS.$_POST['gateway'].CC_DS."form.tpl",'',null,'main',true,$skipPath=TRUE);
if(isset($errorMsg)) {
$formTemplate->assign("LANG_ERROR",$errorMsg);
$formTemplate->parse("form.error");
}
$billingName = makeName($orderSum['name']);
$formTemplate->assign("VAL_AMOUNT_DUE",sprintf($lang['gateway']['amount_due'],priceformat($orderSum['prod_total'],true)));
$formTemplate->assign("VAL_FIRST_NAME",$billingName[2]);
$formTemplate->assign("VAL_LAST_NAME",$billingName[3]);
$formTemplate->assign("VAL_EMAIL_ADDRESS",$orderSum['email']);
$formTemplate->assign("VAL_ADD_1",$orderSum['add_1']);
$formTemplate->assign("VAL_ADD_2",$orderSum['add_2']);
$formTemplate->assign("VAL_CITY",$orderSum['town']);
$formTemplate->assign("VAL_COUNTY",$orderSum['county']);
$formTemplate->assign("VAL_POST_CODE",$orderSum['postcode']);
$formTemplate->assign("VAL_CART_ORDER_ID",$orderSum['cart_order_id']);
$formTemplate->assign("VAL_GRAND_TOTAL",$orderSum['prod_total']);
$formTemplate->assign("VAL_MERCH_ID",$module['acNo']);
$cache = new cache('glob.countries');
$countries = $cache->readCache();
if (!$cache->cacheStatus) {
$countries = $db->select("SELECT id, iso, printable_name FROM ".$glob['dbprefix']."CubeCart_iso_countries ORDER BY printable_name");
$cache->writeCache($countries);
}
for($i=0; $iassign("COUNTRY_SELECTED","selected='selected'");
} else {
$formTemplate->assign("COUNTRY_SELECTED","");
}
$formTemplate->assign("VAL_COUNTRY_ISO", $countries[$i]['iso']);
$countryName = "";
$countryName = $countries[$i]['printable_name'];
if (strlen($countryName)>20) {
$countryName = substr($countryName,0,20).'…';
}
$formTemplate->assign("VAL_COUNTRY_NAME",$countryName);
$formTemplate->parse("form.repeat_countries");
}
$formTemplate->assign("LANG_CC_INFO_TITLE",$lang['gateway']['cc_info_title']);
$formTemplate->assign("LANG_FIRST_NAME",$lang['gateway']['first_name']);
$formTemplate->assign("LANG_LAST_NAME",$lang['gateway']['last_name']);
//$formTemplate->assign("LANG_CARD_TYPE",$lang['gateway']['card_type']);
$formTemplate->assign("LANG_CARD_NUMBER",$lang['gateway']['card_number']);
$formTemplate->assign("LANG_EXPIRES",$lang['gateway']['expires']);
$formTemplate->assign("LANG_MMYY",$lang['gateway']['mmyy']);
$formTemplate->assign("LANG_SECURITY_CODE",$lang['gateway']['security_code']);
$formTemplate->assign("LANG_CUST_INFO_TITLE",$lang['gateway']['customer_info']);
$formTemplate->assign("LANG_EMAIL",$lang['gateway']['email']);
$formTemplate->assign("LANG_ADDRESS",$lang['gateway']['address']);
$formTemplate->assign("LANG_CITY",$lang['gateway']['city']);
$formTemplate->assign("LANG_STATE",$lang['gateway']['state']);
$formTemplate->assign("LANG_ZIPCODE",$lang['gateway']['zipcode']);
$formTemplate->assign("LANG_COUNTRY",$lang['gateway']['country']);
$formTemplate->assign("LANG_OPTIONAL",$lang['gateway']['optional']);
$formTemplate->assign("VAL_GATEWAY",sanitizeVar($_POST['gateway']));
$formTemplate->parse("form");
$formTemplate = $formTemplate->text("form");
?>