422 lines
12 KiB
PHP
422 lines
12 KiB
PHP
<?php
|
|
/*
|
|
+--------------------------------------------------------------------------
|
|
| CubeCart 4
|
|
| ========================================
|
|
| CubeCart is a Trade Mark of Devellion Limited
|
|
| Copyright Devellion Limited 2005 - 2006. All rights reserved.
|
|
| Devellion Limited,
|
|
| 5 Bridge Street,
|
|
| Bishops Stortford,
|
|
| HERTFORDSHIRE.
|
|
| CM23 2JU
|
|
| UNITED KINGDOM
|
|
| http://www.devellion.com
|
|
| UK Private Limited Company No. 5323904
|
|
| ========================================
|
|
| Web: http://www.cubecart.com
|
|
| Date: Tuesday, 17th October 2006
|
|
| Email: sales (at) cubecart (dot) com
|
|
| License Type: CubeCart is NOT Open Source Software and Limitations Apply
|
|
| Licence Info: http://www.cubecart.com/site/faq/license.php
|
|
+--------------------------------------------------------------------------
|
|
| form.inc.php
|
|
| ========================================
|
|
| PayPal Direct Payment Gateway
|
|
+--------------------------------------------------------------------------
|
|
*/
|
|
|
|
//if(detectSSL() == FALSE) die ("<strong>Critical Error:</strong> This page can ONLY be viewed under SSL!");
|
|
|
|
// Get Direct Payment module vars
|
|
$module = fetchDbConfig("PayPal_Pro");
|
|
|
|
if($_GET['process']==1){
|
|
|
|
$gatewayName = "PayPal Website Payments Pro (".$module['paymentAction'].")";
|
|
|
|
$transData['customer_id'] = $orderSum["customer_id"];
|
|
$transData['order_id'] = $orderSum['cart_order_id'];
|
|
$transData['amount'] = $orderSum['prod_total'];
|
|
$transData['gateway'] = $gatewayName;
|
|
$transData['extra'] = "C";
|
|
|
|
require("classes".CC_DS."validate".CC_DS."validateCard.php");
|
|
|
|
$card = new validateCard();
|
|
|
|
if($module['mode']=="US") {
|
|
|
|
$cardNo = trim($_POST['cardNumber']);
|
|
$issueNo = trim($_POST['issueNo']);
|
|
$issueDate = false;
|
|
$issueFormat = false;
|
|
$expireDate = trim($_POST["expirationYear"]).str_pad(trim($_POST["expirationMonth"]), 2, '0', STR_PAD_LEFT);
|
|
$expireFormat = 6;
|
|
$scReqd = TRUE;
|
|
$securityCode = trim($_POST["cvc2"]);
|
|
|
|
} else {
|
|
|
|
$cardNo = trim($_POST['cardNumber']);
|
|
$issueNo = trim($_POST['issueNo']);
|
|
$issueDate = trim($_POST["issueYear"]).str_pad(trim($_POST["issueMonth"]), 2, '0', STR_PAD_LEFT);
|
|
$issueFormat = 6;
|
|
$expireDate = trim($_POST["expirationYear"]).str_pad(trim($_POST["expirationMonth"]), 2, '0', STR_PAD_LEFT);
|
|
$expireFormat = 6;
|
|
$scReqd = TRUE;
|
|
$securityCode = trim($_POST["cvc2"]);
|
|
|
|
}
|
|
|
|
$card = $card->check($cardNo, $issueNo, $issueDate, $issueFormat, $expireDate, $expireFormat, $scReqd, $securityCode);
|
|
|
|
if($module['validation']==1 && $card['response']=="FAIL"){
|
|
|
|
$errorMsg['customer'] = "";
|
|
|
|
foreach($card['error'] as $val){
|
|
|
|
$errorMsg['customer'] .= $val."<br />";
|
|
|
|
}
|
|
|
|
$transData['trans_id'] = "";
|
|
$transData['status'] = "Fail";
|
|
$transData['notes'] = $errorMsg['customer'];
|
|
|
|
} else {
|
|
|
|
$extraNotes = "";
|
|
|
|
include("modules".CC_DS."altCheckout".CC_DS."PayPal_Pro".CC_DS."wpp-".$module['mode'].CC_DS."DoDirectPaymentReceipt.php");
|
|
|
|
if($ack=="SUCCESS") {
|
|
|
|
// Sale = Funds taken immediately otherwise they may be taken later
|
|
$paymentResult = ($module['paymentAction'] == "Sale") ? 3 : 2; // 3 is payment complete, 2 is processing
|
|
$confirmationScreen = ($module['paymentAction'] == "Sale") ? 2 : 3; // Just to confuse matter Al you plonker!! 2 = money taken 3 = money not yet taken (Athorized)
|
|
$order->orderStatus($paymentResult,$orderSum['cart_order_id']);
|
|
$jumpTo = "index.php?_g=co&_a=confirmed&s=".$confirmationScreen;
|
|
|
|
$transData['trans_id'] = $resArray['TRANSACTIONID'];
|
|
$transData['status'] = "SUCCESS";
|
|
$transData['notes'] = "Successful transaction via Credit Card. ".$extraNotes;
|
|
|
|
} else {
|
|
$transData['trans_id'] = "";
|
|
$transData['status'] = "FAIL";
|
|
$transData['notes'] = "<strong>Error displayed to customer:</strong> ".$errorMsg['customer']."<br /><strong>Error:</strong> ".$errorMsg['admin']."<br /><strong>PayPal Response:</strong> ".$errorMsg['paypal'];
|
|
}
|
|
|
|
}
|
|
|
|
$order->storeTrans($transData);
|
|
|
|
if(isset($jumpTo) && !empty($jumpTo)) {
|
|
|
|
httpredir($jumpTo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$formTemplate = new XTemplate ("modules".CC_DS."altCheckout".CC_DS."PayPal_Pro".CC_DS."form.tpl",'',null,'main',true,$skipPath=TRUE);
|
|
|
|
if(isset($errorMsg)) {
|
|
|
|
$formTemplate->assign("LANG_ERROR",$errorMsg['customer']);
|
|
$formTemplate->parse("form.error");
|
|
|
|
}
|
|
|
|
$formTemplate->assign("VAL_AMOUNT_DUE",sprintf($lang['gateway']['amount_due'],priceformat($orderSum['prod_total'],true)));
|
|
|
|
$formTemplate->assign("VAL_FIRST_NAME",$cc_session->ccUserData['firstName']);
|
|
$formTemplate->assign("VAL_LAST_NAME",$cc_session->ccUserData['lastName']);
|
|
$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']);
|
|
|
|
$siteCountryIso = getCountryFormat($config['siteCountry'],"id","iso");
|
|
|
|
if($siteCountryIso=="US" || $siteCountryIso=="CA") {
|
|
|
|
// look up county
|
|
$isoLookup = $db->select("SELECT abbrev FROM `".$glob['dbprefix']."CubeCart_iso_counties`
|
|
WHERE `name` LIKE '%".ucfirst(str_replace(" ","",strtolower($orderSum['county'])))."%'");
|
|
|
|
$states = array (
|
|
"Alberta" => "AB",
|
|
"British Columbia" => "BC",
|
|
"Manitoba" => "MB",
|
|
"New Brunswick" => "NB",
|
|
"Newfoundland and Labrador" => "NF",
|
|
"Northwest Territories" => "NT",
|
|
"Nova Scotia" => "NS",
|
|
"Nunavut" => "NU",
|
|
"Ontario" => "ON",
|
|
"Prince Edward Island" => "PE",
|
|
"Quebec" => "QC",
|
|
"Saskatchewan" => "SK",
|
|
"Yukon" => "YK",
|
|
"Alabama" => "AL",
|
|
"Alaska" => "AK",
|
|
"American Samoa" => "AS",
|
|
"Arizona" => "AZ",
|
|
"Arkansas" => "AR",
|
|
"California" => "CA",
|
|
"Colorado" => "CO",
|
|
"Connecticut" => "CT",
|
|
"Delaware" => "DE",
|
|
"District of Columbia" => "DC",
|
|
"Federated States of Micronesia" => "FM",
|
|
"Florida" => "FL",
|
|
"Georgia" => "GA",
|
|
"Guam" => "GU",
|
|
"Hawaii" => "HI",
|
|
"Idaho" => "ID",
|
|
"Illinois" => "IL",
|
|
"Indiana" => "IN",
|
|
"Iowa" => "IA",
|
|
"Kansas" => "KS",
|
|
"Kentucky" => "KY",
|
|
"Louisiana" => "LA",
|
|
"Maine" => "ME",
|
|
"Marshall" => "Islands MH",
|
|
"Maryland" => "MD",
|
|
"Massachusetts" => "MA",
|
|
"Michigan" => "MI",
|
|
"Minnesota" => "MN",
|
|
"Mississippi" => "MS",
|
|
"Missouri" => "MO",
|
|
"Montana" => "MT",
|
|
"Nebraska" => "NE",
|
|
"Nevada" => "NV",
|
|
"New Hampshire" => "NH",
|
|
"New Jersey" => "NJ",
|
|
"New Mexico" => "NM",
|
|
"New York" => "NY",
|
|
"North Carolina" => "NC",
|
|
"North Dakota" => "ND",
|
|
"Northern Mariana Islands" => "MP",
|
|
"Ohio" => "OH",
|
|
"Oklahoma" => "OK",
|
|
"Oregon" => "OR",
|
|
"Palau" => "PW",
|
|
"Pennsylvania" => "PA",
|
|
"Puerto Rico" => "PR",
|
|
"Rhode Island" => "RI",
|
|
"South Carolina" => "SC",
|
|
"South Dakota" => "SD",
|
|
"Tennessee" => "TN",
|
|
"Texas" => "TX",
|
|
"Utah" => "UT",
|
|
"Vermont" => "VT",
|
|
"Virgin Islands" => "VI",
|
|
"Virginia" => "VA",
|
|
"Washington" => "WA",
|
|
"West Virginia" => "WV",
|
|
"Wisconsin" => "WI",
|
|
"Wyoming" => "WY",
|
|
"Armed Forces Americas" => "A",
|
|
"Armed Forces" => "AE",
|
|
"Armed Forces Pacific" => "AP"
|
|
);
|
|
|
|
foreach($states as $key => $value) {
|
|
if($value == $isoLookup[0]['abbrev']) {
|
|
$formTemplate->assign("VAL_STATE_SELECTED","selected='selected'");
|
|
} else {
|
|
$formTemplate->assign("VAL_STATE_SELECTED","");
|
|
}
|
|
|
|
$formTemplate->assign("VAL_STATE_ABBR",$value);
|
|
$formTemplate->assign("VAL_STATE",$key);
|
|
$formTemplate->parse("form.states_list.states_loop");
|
|
}
|
|
|
|
$formTemplate->assign("LANG_STATE",$lang['gateway']['state']);
|
|
|
|
$formTemplate->parse("form.states_list");
|
|
|
|
} else {
|
|
$formTemplate->assign("LANG_STATE",$lang['gateway']['state']);
|
|
$formTemplate->assign("VAL_STATE",$orderSum['county']);
|
|
$formTemplate->parse("form.states_txtbox");
|
|
}
|
|
|
|
$formTemplate->assign("VAL_POST_CODE",$orderSum['postcode']);
|
|
$formTemplate->assign("VAL_CART_ORDER_ID",$basket['cart_order_id']);
|
|
$formTemplate->assign("VAL_ORDER_TOTAL",$basket['grandTotal']);
|
|
$formTemplate->assign("VAL_ITEM_TOTAL",$basket['subTotal']);
|
|
$formTemplate->assign("VAL_TAX_TOTAL",$basket['tax']);
|
|
$formTemplate->assign("VAL_SHIPPING_TOTAL",$basket['shipCost']);
|
|
|
|
|
|
$currency = $db->select("SELECT currency FROM ".$glob['dbprefix']."CubeCart_sessions WHERE sessId = ".$db->mySQLSafe($GLOBALS[CC_SESSION_NAME]));
|
|
|
|
if($currency == TRUE && $currency[0]['currency'] != ''){
|
|
$formTemplate->assign("VAL_CURRENCY_ID", $currency[0]['currency']);
|
|
} else {
|
|
$formTemplate->assign("VAL_CURRENCY_ID", $config['defaultCurrency']);
|
|
}
|
|
|
|
if($module['mode']=="US") {
|
|
|
|
$cards = array(
|
|
"Visa" => "Visa",
|
|
"MasterCard" => "MasterCard",
|
|
"Discover" => "Discover",
|
|
"Amex" => "American Express"
|
|
);
|
|
|
|
} else {
|
|
|
|
$cards = array(
|
|
"0" => "Visa",
|
|
"8" => "Visa Electron",
|
|
"8" => "Delta",
|
|
"1" => "MasterCard",
|
|
"9" => "Maestro / Switch",
|
|
"S" => "Solo"
|
|
//"8" => "Other"
|
|
);
|
|
}
|
|
|
|
foreach($cards as $key => $value) {
|
|
|
|
$formTemplate->assign("VAL_CARD_TYPE",$key);
|
|
|
|
if($key == $_POST['cardType']){
|
|
$formTemplate->assign("CARD_SELECTED","selected='selected'");
|
|
} else {
|
|
$formTemplate->assign("CARD_SELECTED","");
|
|
}
|
|
$formTemplate->assign("VAL_CARD_NAME",$value);
|
|
|
|
$formTemplate->parse("form.repeat_cards");
|
|
|
|
}
|
|
|
|
for($i=1;$i<=12;$i++) {
|
|
|
|
$val = sprintf('%02d',$i);
|
|
|
|
if($val == $_POST['expirationMonth']){
|
|
$formTemplate->assign("EXPIRE_MONTHS_SELECTED","selected='selected'");
|
|
} else {
|
|
$formTemplate->assign("EXPIRE_MONTHS_SELECTED","");
|
|
}
|
|
$formTemplate->assign("VAL_EXPIRE_MONTH",$val);
|
|
|
|
$formTemplate->parse("form.expiration_months");
|
|
|
|
}
|
|
|
|
$thisYear = date("Y");
|
|
$maxYear = $thisYear + 10;
|
|
|
|
for($i=$thisYear;$i<=$maxYear;$i++) {
|
|
|
|
if($i == $_POST['expirationYear']){
|
|
$formTemplate->assign("EXPIRE_YEARS_SELECTED","selected='selected'");
|
|
} else {
|
|
$formTemplate->assign("EXPIRE_YEARS_SELECTED","");
|
|
}
|
|
$formTemplate->assign("VAL_EXPIRE_YEAR",$i);
|
|
|
|
$formTemplate->parse("form.expiration_years");
|
|
|
|
}
|
|
|
|
|
|
$cache = new cache('glob.countries');
|
|
$countries = $cache->readCache();
|
|
|
|
$countries = $db->select("SELECT id, iso, printable_name FROM ".$glob['dbprefix']."CubeCart_iso_countries ORDER BY printable_name");
|
|
|
|
for($i=0; $i<count($countries); $i++){
|
|
|
|
if($countries[$i]['id'] == $orderSum['country']){
|
|
$formTemplate->assign("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_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_EMAIL",$lang['gateway']['email']);
|
|
$formTemplate->assign("LANG_ADDRESS",$lang['gateway']['address']);
|
|
$formTemplate->assign("LANG_CITY",$lang['gateway']['city']);
|
|
$formTemplate->assign("LANG_ZIPCODE",$lang['gateway']['zipcode']);
|
|
$formTemplate->assign("LANG_COUNTRY",$lang['gateway']['country']);
|
|
$formTemplate->assign("LANG_OPTIONAL",$lang['gateway']['optional']);
|
|
|
|
if($module['mode']=="UK"){
|
|
|
|
|
|
for($i=1;$i<=12;$i++) {
|
|
|
|
$val = sprintf('%02d',$i);
|
|
|
|
if($val == $_POST['issueMonth']){
|
|
$formTemplate->assign("ISSUE_MONTHS_SELECTED","selected='selected'");
|
|
} else {
|
|
$formTemplate->assign("ISSUE_MONTHS_SELECTED","");
|
|
}
|
|
$formTemplate->assign("VAL_ISSUE_MONTH",$val);
|
|
|
|
$formTemplate->parse("form.issue_info.issue_months");
|
|
|
|
}
|
|
|
|
$minYear = $thisYear - 10;
|
|
|
|
for($i = $thisYear; $i>=$minYear; $i--) {
|
|
|
|
if($i == $_POST['issueYear']){
|
|
$formTemplate->assign("ISSUE_YEARS_SELECTED","selected='selected'");
|
|
} else {
|
|
$formTemplate->assign("ISSUE_YEARS_SELECTED","");
|
|
}
|
|
$formTemplate->assign("VAL_ISSUE_YEAR",$i);
|
|
|
|
$formTemplate->parse("form.issue_info.issue_years");
|
|
|
|
}
|
|
|
|
|
|
$formTemplate->assign("LANG_ISSUE_DATE", $lang['gateway']['issue_date']);
|
|
$formTemplate->assign("LANG_ISSUE_NO", $lang['gateway']['issue_number']);
|
|
$formTemplate->parse("form.issue_info");
|
|
}
|
|
|
|
$formTemplate->assign("VAL_GATEWAY","PayPal Website Payments Pro (".$module['paymentAction'].")");
|
|
|
|
$formTemplate->parse("form");
|
|
$formTemplate = $formTemplate->text("form");
|
|
?>
|