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'] = "PayJunction";
// first check card
require("classes".CC_DS."validate".CC_DS."validateCard.php");
$card = new validateCard();
$cardNo = $_POST["dc_number"];
$issueNo = 0;
$issueDate = 0;
$issueFormat = 4;
$expireDate = str_pad(trim($_POST["dc_expiration_year"]), 2, '0', STR_PAD_LEFT).str_pad(trim($_POST["dc_expiration_month"]), 2, '0', STR_PAD_LEFT);
$expireFormat = 4;
$scReqd = TRUE;
$securityCode = trim($_POST["dc_verification_number"]);
$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
{
## Required variables
$curl_exec = "/usr/bin/curl -m 64 -d";
$server = "https://payjunction.com/live/vendor/quick_link/transact";
$request = "";
$response = array ();
$post_array = array
(
"dc_test" => $module['testMode'],
"dc_logon" => $module['user'],
"dc_password" => $module['pass'],
"dc_transaction_type" => "AUTHORIZATION_CAPTURE",
"dc_transaction_amount" => $orderSum['prod_total'],
"dc_first_name" => trim($_POST['dc_first_name']),
"dc_last_name" => trim($_POST['dc_last_name']),
"dc_number" => trim($_POST['dc_number']),
"dc_expiration_month" => str_pad(trim($_POST["dc_expiration_month"]), 2, '0', STR_PAD_LEFT),
"dc_expiration_year" => str_pad(trim($_POST["dc_expiration_year"]), 2, '0', STR_PAD_LEFT),
"dc_verification_number"=> trim($_POST['dc_verification_number']),
"dc_address" => trim($_POST['dc_address']),
"dc_city" => trim($_POST['dc_city']),
"dc_state" => trim($_POST['dc_state']),
"dc_zipcode" => trim($_POST['dc_zipcode']),
"dc_country" => getCountryFormat($_POST['dc_country'],"iso","printable_name")
);
## Setup the POST string to send to the PayJunction Server
reset($post_array);
while (list ($key, $val) = each($post_array))
{
$request .= $key . "=" . urlencode($val) . "&";
}
$request = rtrim( $request, "&" );
## Send the secure transaction request to PayJunction
//$content = exec ("$curl_exec \"$request\" $server");
// Use more secure curl_setop instead of exec
$ch = curl_init($server);
curl_setopt($ch, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1)
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); // use HTTP POST to send form data
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response. ###
if($config['proxy']==1){
curl_setopt ($ch, CURLOPT_PROXY, $config['proxyHost'].":".$config['proxyPort']);
}
$content = curl_exec($ch); //execute post and get results
curl_close ($ch);
## Parse the response from PayJunction
$content = array_values (split (chr (28), $content));
while ($key_value = next ($content))
{
list ($key, $value) = split ("=", $key_value);
$response[$key] = $value;
}
if ($response['response_code'] == "00" || $response['response_code'] == "85")
{
$order->orderStatus(3,$orderSum['cart_order_id']);
$jumpTo = "index.php?_g=co&_a=confirmed&s=2";
$transData['trans_id'] = $response['transaction_id'];
$transData['status'] = "Success";
$transData['notes'] = "Transaction was approved.";
}
else
{
switch($response['response_code'])
{
case "FE":
$errorMsg = "There was a format error with your Trinity Gateway Service (API) request.";
break;
case "LE":
$errorMsg = "Could not log you in (problem with dc_logon and/or dc_password).";
break;
case "AE":
$errorMsg = "Address verification failed because address did not match.";
break;
case "ZE":
$errorMsg = "Address verification failed because zip did not match.";
break;
case "XE":
$errorMsg = "Address verification failed because zip and address did not match.";
break;
case "YE":
$errorMsg = "Address verification failed because zip and address did not match.";
break;
case "OE":
$errorMsg = "Address verification failed because address or zip did not match.";
break;
case "UE":
$errorMsg = "Address verification failed because cardholder address unavailable.";
break;
case "RE":
$errorMsg = "Address verification failed because address verification system is not working.";
break;
case "SE":
$errorMsg = "Address verification failed because address verification system is unavailable.";
break;
case "EE":
$errorMsg = "Address verification failed because transaction is not a mail or phone order.";
break;
case "GE":
$errorMsg = "Address verification failed because international support is unavailable.";
break;
case "CE":
$errorMsg = "Declined because CVV2/CVC2 code did not match.";
break;
case "NL":
$errorMsg = "Aborted because of a system error, please try again later.";
break;
case "AB":
$errorMsg = "Aborted because of an upstream system error, please try again later.";
break;
case "04":
$errorMsg = "Declined. Pick up card.";
break;
case "07":
$errorMsg = "Declined. Pick up card (Special Condition).";
break;
case "41":
$errorMsg = "Declined. Pick up card (Lost).";
break;
case "43":
$errorMsg = "Declined. Pick up card (Stolen).";
break;
case "13":
$errorMsg = "Declined because of the amount is invalid.";
break;
case "14":
$errorMsg = "Declined because the card number is invalid.";
break;
case "80":
$errorMsg = "Declined because of an invalid date.";
break;
case "05":
$errorMsg = "Declined. Do not honor.";
break;
case "51":
$errorMsg = "Declined because of insufficient funds.";
break;
case "N4":
$errorMsg = "Declined because the amount exceeds issuer withdrawal limit.";
break;
case "61":
$errorMsg = "Declined because the amount exceeds withdrawal limit.";
break;
case "62":
$errorMsg = "Declined because of an invalid service code (restricted).";
break;
case "65":
$errorMsg = "Declined because the card activity limit exceeded.";
break;
case "93":
$errorMsg = "Declined because there a violation (the transaction could not be completed).";
break;
case "06":
$errorMsg = "Declined because address verification failed.";
break;
case "54":
$errorMsg = "Declined because the card has expired.";
break;
case "15":
$errorMsg = "Declined because there is no such issuer.";
break;
case "96":
$errorMsg = "Declined because of a system error.";
break;
case "N7":
$errorMsg = "Declined because of a CVV2/CVC2 mismatch.";
break;
case "M4":
$errorMsg = "Declined.";
break;
}
$transData['trans_id'] = "n/a";
$transData['status'] = "Error";
$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']);
$cache = new cache('glob.countries');
$countries = $cache->readCache();
if($cache->cacheStatus==FALSE)
{
$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_NUMBER",$lang['gateway']['card_number']);
$formTemplate->assign("LANG_EXPIRES",$lang['gateway']['expires']);
$formTemplate->assign("LANG_MMYYYY",$lang['gateway']['mmyyyy']);
$formTemplate->assign("LANG_SECURITY_CODE",$lang['gateway']['security_code']);
$formTemplate->assign("LANG_CUST_INFO_TITLE",$lang['gateway']['customer_info']);
$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("VAL_GATEWAY",sanitizeVar($_POST['gateway']));
$formTemplate->parse("form");
$formTemplate = $formTemplate->text("form");
?>