389 lines
15 KiB
PHP
389 lines
15 KiB
PHP
<?php
|
|
/*
|
|
+--------------------------------------------------------------------------
|
|
| CubeCart 4
|
|
| ========================================
|
|
| CubeCart is a registered trade mark of Devellion Limited
|
|
| Copyright Devellion Limited 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
|
|
| Email: info (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
|
|
+--------------------------------------------------------------------------
|
|
| gateway.inc.php
|
|
| ========================================
|
|
| Choose and transfer to gateway
|
|
+--------------------------------------------------------------------------
|
|
*/
|
|
|
|
if(!defined('CC_INI_SET')){ die("Access Denied"); }
|
|
|
|
if($cc_session->ccUserData['customer_id']<1){
|
|
httpredir("index.php?_g=co&_a=step1");
|
|
}
|
|
|
|
## Session Required for PayPal Express Checkout
|
|
session_start();
|
|
|
|
// include lang file
|
|
$lang = getLang("includes".CC_DS."content".CC_DS."gateway.inc.php");
|
|
|
|
require_once("classes".CC_DS."cart".CC_DS."shoppingCart.php");
|
|
require_once("classes".CC_DS."cart".CC_DS."order.php");
|
|
$cart = new cart();
|
|
$order = new order();
|
|
|
|
if($_GET['contShop'] == true && isset($_GET['cart_order_id'])) {
|
|
|
|
$pastBasket = $db->select(sprintf("SELECT `basket` FROM `%sCubeCart_order_sum` WHERE `cart_order_id` = %s",$glob['dbprefix'],$db->MySQLSafe($_GET['cart_order_id'])));
|
|
|
|
if($pastBasket==true) {
|
|
$record['basket'] = "'".$pastBasket[0]['basket']."'";
|
|
$db->update($glob['dbprefix']."CubeCart_sessions", $record, "`sessId`= '".$cc_session->ccUserData['sessId']."'");
|
|
}
|
|
|
|
$order->orderStatus(6, $_GET['cart_order_id'], false, true);
|
|
|
|
httpredir("index.php");
|
|
}
|
|
|
|
$basket = $cart->cartContents($cc_session->ccUserData['basket']);
|
|
|
|
$gateway = new XTemplate ("content" . CC_DS . "gateway.tpl");
|
|
$gateway->assign("LANG_PAYMENT",$lang['gateway']['payment']);
|
|
$gateway->assign("LANG_CART",$lang['gateway']['cart']);
|
|
$gateway->assign("LANG_CHECKOUT",$lang['gateway']['checkout']);
|
|
$gateway->assign("LANG_PAYMENT",$lang['gateway']['payment']);
|
|
$gateway->assign("LANG_COMPLETE",$lang['gateway']['complete']);
|
|
|
|
if(!$basket && isset($_GET['cart_order_id']) && isset($_POST['gateway']) && !eregi("[^0-9a-z_-]( )",$_POST['gateway'])){
|
|
|
|
// get module config
|
|
$module = fetchDbConfig($_POST['gateway']);
|
|
|
|
$setgateand['gateway'] = $db->mySQLSafe($_POST['gateway']);
|
|
$setgateand['customer_comments'] = $db->mySQLSafe($_POST['customer_comments']);
|
|
$db->update($glob['dbprefix']."CubeCart_order_sum",$setgateand,"cart_order_id = ".$db->MySQLSafe($_GET["cart_order_id"]));
|
|
|
|
$order->getOrderInv($_GET["cart_order_id"]);
|
|
$orderSum = $order->getOrderSum($_GET["cart_order_id"]);
|
|
|
|
if($_REQUEST['gateway'] == "PayPal_Pro") {
|
|
|
|
$pastBasket = $db->select(sprintf("SELECT `basket` FROM `%sCubeCart_order_sum` WHERE `cart_order_id` = %s",$glob['dbprefix'],$db->MySQLSafe($_GET['cart_order_id'])));
|
|
|
|
$_SESSION['cart_order_id'] = $_GET['cart_order_id'];
|
|
|
|
if($pastBasket==true) {
|
|
$record['basket'] = "'".$pastBasket[0]['basket']."'";
|
|
$db->update($glob['dbprefix']."CubeCart_sessions", $record, "`sessId`= '".$cc_session->ccUserData['sessId']."'");
|
|
}
|
|
|
|
require("modules".CC_DS."altCheckout".CC_DS."PayPal_Pro".CC_DS."button.php");
|
|
|
|
// run class & functs
|
|
$altCheckoutButton = new PayPal_Pro();
|
|
$formAction = $altCheckoutButton->buildIt("PayPal_Pro",true);
|
|
$formMethod = "post";
|
|
$formTarget = "_self";
|
|
|
|
} else {
|
|
|
|
$transVars = "";
|
|
|
|
if(ereg("^PayPal Website Payments Pro",$_POST['gateway'])) {
|
|
$moduleType = "altCheckout";
|
|
$moduleName = "PayPal_Pro";
|
|
} else {
|
|
$moduleType = "gateway";
|
|
$moduleName = $_POST['gateway'];
|
|
}
|
|
|
|
$transferPath = "modules".CC_DS.$moduleType.CC_DS.$moduleName.CC_DS."transfer.inc.php";
|
|
|
|
if(file_exists($transferPath)) {
|
|
require($transferPath);
|
|
} else {
|
|
die("Required path doesn't exist!");
|
|
}
|
|
|
|
|
|
for($i=0;$i<count($order->orderInv);$i++){
|
|
|
|
$orderInv['productId'] = $order->orderInv[$i]['productId'];
|
|
$orderInv['name'] = $order->orderInv[$i]['name'];
|
|
$orderInv['price'] = $order->orderInv[$i]['price'];
|
|
$orderInv['quantity'] = $order->orderInv[$i]['quantity'];
|
|
$orderInv['product_options'] = $order->orderInv[$i]['product_options'];
|
|
$orderInv['productCode'] = $order->orderInv[$i]['productCode'];
|
|
|
|
$transVars .= repeatVars();
|
|
|
|
}
|
|
|
|
|
|
$transVars .= fixedVars();
|
|
}
|
|
|
|
if($transfer == "manual") {
|
|
|
|
$gateway->assign("VAL_FORM_ACTION",$formAction);
|
|
$gateway->assign("VAL_FORM_METHOD",$formMethod);
|
|
$gateway->assign("VAL_TARGET",$formTarget);
|
|
|
|
$gateway->assign("LANG_FORM_TITLE",$lang['gateway']['fill_out_below']);
|
|
|
|
require("modules".CC_DS.$moduleType.CC_DS.$moduleName.CC_DS."form.inc.php");
|
|
|
|
$gateway->assign("FORM_TEMPLATE",$formTemplate);
|
|
|
|
$gateway->parse("gateway.cart_true.transfer.manual_submit");
|
|
$gateway->assign("LANG_CHECKOUT_BTN",$lang['gateway']['confirm_payment']);
|
|
|
|
} else {
|
|
|
|
$gateway->assign("VAL_FORM_ACTION",$formAction);
|
|
$gateway->assign("VAL_FORM_METHOD",$formMethod);
|
|
$gateway->assign("VAL_TARGET",$formTarget);
|
|
|
|
$gateway->assign("LANG_TRANSFERRING",$lang['gateway']['transferring']);
|
|
$gateway->parse("gateway.cart_true.transfer.manual_submit");
|
|
$gateway->parse("gateway.cart_true.transfer.auto_submit");
|
|
$gateway->assign("LANG_CHECKOUT_BTN",$lang['gateway']['go_now']);
|
|
}
|
|
|
|
$gateway->assign("FORM_PARAMETERS", $transVars);
|
|
|
|
$gateway->parse("gateway.cart_true.transfer");
|
|
$gateway->parse("gateway.cart_true");
|
|
|
|
}
|
|
// build order and display payment methods
|
|
elseif(($basket==TRUE || isset($_GET['cart_order_id'])) && !isset($_POST['gateway'])) {
|
|
|
|
// if order id has already been made for PayPal express CO we only need to take payment
|
|
// i.e. Customer Has chosen to pay with paypal after clicking "Place Order"
|
|
if(isset($_SESSION['cart_order_id'])) {
|
|
|
|
$cart_order_id = sanitizeVar($_SESSION['cart_order_id']);
|
|
$skipEmail = true;
|
|
$order->orderStatus(6,$_SESSION['cart_order_id'], $force = false, $skipEmail);
|
|
$order->deleteOrder($_SESSION['cart_order_id']);
|
|
|
|
} elseif(isset($_GET['cart_order_id'])){
|
|
$cart_order_id = sanitizeVar($_GET['cart_order_id']);
|
|
} elseif(!isset($basket['cart_order_id']) && empty($basket['cart_order_id'])) {
|
|
$cart_order_id = $order->mkOrderNo();
|
|
} else {
|
|
$order->deleteOrder($basket["cart_order_id"]);
|
|
}
|
|
|
|
if(!isset($_GET['cart_order_id'])){
|
|
// order inventory
|
|
for($i=1;$i<=count($basket['invArray']);$i++){
|
|
|
|
$orderInv[$i]['productId'] = $basket['invArray'][$i]["productId"];
|
|
$orderInv[$i]['name'] = $basket['invArray'][$i]["name"];
|
|
$orderInv[$i]['price'] = $basket['invArray'][$i]["price"];
|
|
$orderInv[$i]['quantity'] = $basket['invArray'][$i]["quantity"];
|
|
$orderInv[$i]['product_options'] = $basket['invArray'][$i]["prodOptions"];
|
|
$orderInv[$i]['productCode'] = $basket['invArray'][$i]["productCode"];
|
|
$orderInv[$i]['digital'] = $basket['invArray'][$i]["digital"];
|
|
$orderInv[$i]['custom'] = $basket['invArray'][$i]["custom"];
|
|
|
|
}
|
|
|
|
// order summary
|
|
|
|
//////////////////
|
|
// Invoice info
|
|
/////
|
|
$orderSum['cart_order_id'] = $cart_order_id;
|
|
$orderSum['customer_id'] = $cc_session->ccUserData['customer_id'];
|
|
$orderSum['email'] = $cc_session->ccUserData['email'];
|
|
$orderSum['name'] = $cc_session->ccUserData['title']." ".$cc_session->ccUserData['firstName']." ".$cc_session->ccUserData['lastName'];
|
|
$orderSum['companyName'] = $cc_session->ccUserData['companyName'];
|
|
$orderSum['add_1'] = $cc_session->ccUserData['add_1'];
|
|
$orderSum['add_2'] = $cc_session->ccUserData['add_2'];
|
|
$orderSum['town'] = $cc_session->ccUserData['town'];
|
|
$orderSum['county'] = $cc_session->ccUserData['county'];
|
|
$orderSum['postcode'] = $cc_session->ccUserData['postcode'];
|
|
$orderSum['country'] = getCountryFormat($cc_session->ccUserData['country'],"id","printable_name");
|
|
$orderSum['phone'] = $cc_session->ccUserData['phone'];
|
|
$orderSum['mobile'] = $cc_session->ccUserData['mobile'];
|
|
|
|
$currency = $db->select("SELECT currency FROM ".$glob['dbprefix']."CubeCart_sessions WHERE sessId = ".$db->mySQLSafe($GLOBALS[CC_SESSION_NAME]));
|
|
|
|
if($currency == TRUE){
|
|
$orderSum['currency'] = $currency[0]['currency'];
|
|
} else {
|
|
$orderSum['currency'] = $config['defaultCurrency'];
|
|
}
|
|
//////////////////
|
|
// Delivery info
|
|
/////
|
|
$orderSum['name_d'] = $basket['delInf']['title']." ".$basket['delInf']['firstName']." ".$basket['delInf']['lastName'];
|
|
$orderSum['companyName_d'] = $basket['delInf']['companyName'];
|
|
$orderSum['add_1_d'] = $basket['delInf']['add_1'];
|
|
$orderSum['add_2_d'] = $basket['delInf']['add_2'];
|
|
$orderSum['town_d'] = $basket['delInf']['town'];
|
|
$orderSum['county_d'] = $basket['delInf']['county'];
|
|
$orderSum['postcode_d'] = $basket['delInf']['postcode'];
|
|
$orderSum['country_d'] = getCountryFormat($basket['delInf']['country'],"id","printable_name");
|
|
|
|
//////////////////
|
|
// Summary
|
|
/////
|
|
$orderSum['subtotal'] = $basket['subTotal'];
|
|
$orderSum['discount'] = $basket['discount'];
|
|
$orderSum['total_ship'] = $basket['shipCost'];
|
|
$orderSum['total_tax'] = $basket['tax'];
|
|
$orderSum['prod_total'] = $basket['grandTotal'];
|
|
$orderSum['shipMethod'] = $basket['shipMethod'];
|
|
$orderSum['basket'] = $cc_session->ccUserData['basket'];
|
|
|
|
// start: Flexible Taxes, by Estelle Winterflood
|
|
$config_tax_mod = fetchDbConfig("Multiple_Tax_Mod");
|
|
if ($config_tax_mod['status'] && isset($basket['taxes'])){
|
|
$taxes = $basket['taxes'];
|
|
for ($i=1; $i<count($taxes) && $i<=3; $i++){
|
|
$orderSum['tax'.$i.'_disp'] = $taxes[$i]['display'];
|
|
$orderSum['tax'.$i.'_amt'] = $taxes[$i]['amount'];
|
|
}
|
|
}
|
|
// end: Flexible Taxes
|
|
if(isset($_SESSION['token']) && isset($_SESSION['payer_id'])) {
|
|
$orderSum['gateway'] = 'PayPal Website Payments Pro ('.$_SESSION['paymentType'].')'; // this will be updated later
|
|
} else {
|
|
$orderSum['gateway'] = 'Undefined'; // this will be updated later
|
|
}
|
|
|
|
$order->createOrder($orderInv, $orderSum, $skipEmail);
|
|
|
|
} else {
|
|
$orderSum = $order->getOrderSum($_GET["cart_order_id"]);
|
|
}
|
|
|
|
$gateway->assign("VAL_FORM_ACTION","index.php?_g=co&_a=step3&cart_order_id=".$cart_order_id);
|
|
$gateway->assign("VAL_FORM_METHOD","post");
|
|
$gateway->assign("VAL_TARGET","_self");
|
|
$gateway->assign("LANG_CHECKOUT_BTN",$lang['gateway']['continue']);
|
|
$gateway->assign("LANG_PAYMENT_SUMMARY", sprintf($lang['gateway']['payment_summary'], priceFormat($orderSum['prod_total'], true), $cart_order_id));
|
|
|
|
$gateway->assign("LANG_CHOOSE_GATEWAY",$lang['gateway']['choose_method']);
|
|
|
|
$gatewayModules = $db->select("SELECT `folder`, `default`, `module` FROM ".$glob['dbprefix']."CubeCart_Modules WHERE (`module`='gateway' OR `module`='altCheckout') AND status = 1");
|
|
|
|
if ($gatewayModules) {
|
|
|
|
$gateway->assign("LANG_COMMENTS",$lang['gateway']['your_comments']);
|
|
|
|
for ($i=0; $i<count($gatewayModules); $i++){
|
|
|
|
if ($gatewayModules[$i]['module'] == 'gateway' && file_exists(CC_ROOT_DIR.CC_DS.'modules'.CC_DS.'gateway'.CC_DS.$gatewayModules[$i]['folder'].CC_DS.'transfer.inc.php')) {
|
|
|
|
$gateway->assign("TD_CART_CLASS",cellColor($i, $tdEven="tdcartEven", $tdOdd="tdcartOdd"));
|
|
|
|
$module = fetchDbConfig($gatewayModules[$i]['folder']);
|
|
|
|
$gateway->assign("VAL_GATEWAY_DESC",$module['desc']);
|
|
$gateway->assign("VAL_GATEWAY_FOLDER",$gatewayModules[$i]['folder']);
|
|
|
|
if($gatewayModules[$i]['default'] == 1){
|
|
$gateway->assign('VAL_CHECKED', 'checked="checked"');
|
|
} else {
|
|
$gateway->assign('VAL_CHECKED', '');
|
|
}
|
|
|
|
$gateway->parse("gateway.cart_true.choose_gate.gateways_true");
|
|
}
|
|
}
|
|
|
|
$module_express_co = fetchDbConfig("PayPal_Pro");
|
|
|
|
if($module_express_co['status']==true){
|
|
$gateway->assign("TD_CART_CLASS",cellColor($i++, $tdEven="tdcartEven", $tdOdd="tdcartOdd"));
|
|
$gateway->assign("VAL_GATEWAY_DESC","<img src='https://www.paypal.com/en_US/i/logo/PayPal_mark_37x23.gif' border='0' title='' alt='The safer, easier way to pay.' />");
|
|
$gateway->assign("VAL_GATEWAY_FOLDER","PayPal_Pro");
|
|
$gateway->parse("gateway.cart_true.choose_gate.gateways_true");
|
|
$gateway->assign("TD_CART_CLASS",cellColor($i++, $tdEven="tdcartEven", $tdOdd="tdcartOdd"));
|
|
$gateway->assign("VAL_GATEWAY_DESC","<img src='modules/altCheckout/PayPal_Pro/paypal_cards_".strtolower($module_express_co['mode']).".gif' border='0' title='' alt='' />");
|
|
$gateway->assign("VAL_GATEWAY_FOLDER","PayPal Website Payments Pro (".$module_express_co['paymentAction'].")");
|
|
$gateway->parse("gateway.cart_true.choose_gate.gateways_true");
|
|
}
|
|
|
|
if(isset($_GET['cart_order_id'])){
|
|
// add fixed & repeat vars
|
|
$query = "SELECT customer_comments FROM ".$glob['dbprefix']."CubeCart_order_sum WHERE cart_order_id = ".$db->MySQLSafe($_GET["cart_order_id"]);
|
|
$comments = $db->select($query);
|
|
$gateway->assign("VAL_CUSTOMER_COMMENTS",$comments[0]['customer_comments']);
|
|
|
|
}
|
|
|
|
$gateway->parse("gateway.cart_true.choose_gate");
|
|
|
|
} else {
|
|
|
|
$gateway->assign("LANG_GATEWAYS_FALSE",$lang['gateway']['none_configured']);
|
|
$gateway->parse("gateway.cart_true.choose_gate.gateways_false");
|
|
$gateway->parse("gateway.cart_true.choose_gate");
|
|
|
|
}
|
|
|
|
// affiliate tracking code
|
|
$query = "SELECT folder, `default` FROM ".$glob['dbprefix']."CubeCart_Modules WHERE module='affiliate' AND status = 1";
|
|
$affiliateModule = $db->select($query);
|
|
|
|
if($affiliateModule == TRUE){
|
|
|
|
for($i=0; $i<count($affiliateModule); $i++){
|
|
|
|
require("modules".CC_DS."affiliate".CC_DS.$affiliateModule[$i]['folder'].CC_DS."tracker.inc.php");
|
|
|
|
$gateway->assign("VAL_AFFILIATE_TRACK_HTML",$affCode);
|
|
$gateway->parse("gateway.cart_true.affiliate_code");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$gateway->parse("gateway.cart_true");
|
|
// empty basket
|
|
$basket = $cart->emptyCart($keepStock = true);
|
|
|
|
// deal with free orders! Whoopie! All orders for me should be free!
|
|
if($orderSum['prod_total']==0){
|
|
$order->orderStatus(3,$cart_order_id);
|
|
httpredir("index.php?_g=co&_a=confirmed&s=2");
|
|
}
|
|
|
|
// Make express checkout payment
|
|
if(isset($_SESSION['token']) && isset($_SESSION['payer_id'])) {
|
|
httpredir("index.php?_g=rm&type=altCheckout&cmd=process&module=PayPal_Pro&payment=1&cart_order_id=".$cart_order_id);
|
|
}
|
|
|
|
// to prevent refresh errors & duplicate orders
|
|
if(!isset($_GET['cart_order_id'])) {
|
|
httpredir("index.php?_g=co&_a=step3&cart_order_id=".$cart_order_id);
|
|
}
|
|
|
|
} else {
|
|
|
|
$gateway->assign("LANG_CART_EMPTY",$lang['gateway']['cart_empty']);
|
|
$gateway->parse("gateway.cart_false");
|
|
|
|
}
|
|
|
|
$gateway->parse("gateway");
|
|
$page_content = $gateway->text("gateway");
|
|
?>
|