관리-도구
편집 파일: checkout_process.php
<?php /** * module to process a completed checkout * * @package procedureCheckout * @copyright Copyright 2003-2007 Zen Cart Development Team * @copyright Portions Copyright 2003 osCommerce * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 * @version $Id: checkout_process.php 6491 2007-06-15 07:00:52Z drbyte $ */ if (!defined('IS_ADMIN_FLAG')) { die('Illegal Access'); } $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEGIN'); require(DIR_WS_MODULES . zen_get_module_directory('require_languages.php')); // if the customer is not logged on, redirect them to the time out page if (!$_SESSION['customer_id']) { zen_redirect(zen_href_link(FILENAME_TIME_OUT)); } else { // validate customer if (zen_get_customer_validate_session($_SESSION['customer_id']) == false) { $_SESSION['navigation']->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_SHIPPING)); zen_redirect(zen_href_link(FILENAME_LOGIN, '', 'SSL')); } } // confirm where link came from if (!strstr($_SERVER['HTTP_REFERER'], FILENAME_CHECKOUT_CONFIRMATION)) { // zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT,'','SSL')); } // load selected payment module require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment($_SESSION['payment']); // load the selected shipping module require(DIR_WS_CLASSES . 'shipping.php'); $shipping_modules = new shipping($_SESSION['shipping']); require(DIR_WS_CLASSES . 'order.php'); $order = new order; // prevent 0-entry orders from being generated/spoofed if (sizeof($order->products) < 1) { zen_redirect(zen_href_link(FILENAME_SHOPPING_CART)); } require(DIR_WS_CLASSES . 'order_total.php'); $order_total_modules = new order_total; $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEFORE_ORDER_TOTALS_PRE_CONFIRMATION_CHECK'); $order_totals = $order_total_modules->pre_confirmation_check(); //bof tell a freand if($_SESSION["shipping"]["id"] == "tellafriend_tellafriend" && @is_array($_SESSION["tell_a_friend_email"])) { $query = "select customers_firstname, customers_lastname, customers_email_address, customers_referral from " . TABLE_CUSTOMERS . " where customers_id = ". $_SESSION["customer_id"]; $tell_result = mysql_query($query); $tell_res = mysql_fetch_object($tell_result); $tell_f_name = $tell_res->customers_firstname; $tell_l_name = $tell_res->customers_lastname; $tell_name = $tell_f_name. " ". $tell_l_name; $tell_referrer_id = $tell_res->customers_referral; $tell_email = $tell_res->customers_email_address; foreach($_SESSION["tell_a_friend_email"] as $key => $to_email) { $to_f_name = $_SESSION["tell_a_friend_email_f_name"][$key]; $to_l_name = $_SESSION["tell_a_friend_email_l_name"][$key]; $name = $to_f_name. " ". $to_l_name; $language_id = (int)$_SESSION['languages_id']; $sql_data_array = array('referral_id' => tell_referrer_id, 'language_id' => $language_id, 'referral_f_name' => $to_f_name, 'referral_l_name' => $to_l_name, 'customers_id' => ($_SESSION['customer_id']), 'customers_referral' => $tell_referrer_id, 'referral_to_address' => $to_email, 'referral_from_address' => $tell_email); zen_db_perform(TABLE_FREE_SHIPPING_REFERRALS, $sql_data_array); // build the message content $send_subject = sprintf(EMAIL_TEXT_SUBJECT_TELL . $tell_name .'!'); $email_text = sprintf(EMAIL_GREET, $name); $email_text .= EMAIL_WELCOME; $email_text .= $tell_name . " " . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING; $html_msg['EMAIL_MESSAGE_HTML'] = $email_text; //zen_mail($name, $to_email, $send_subject, $email_text, $tell_name, $tell_email, 'tell_a_friend_shipping'); zen_mail($name, $to_email, $send_subject, $email_text, $tell_name, $tell_email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, $html_msg, 'tell_a_friend_shipping_mail'); } $_SESSION["tell_a_friend_email_f_name"] = ""; $_SESSION["tell_a_friend_email_l_name"] = ""; $_SESSION["tell_a_friend_email"] = ""; unset($_SESSION["tell_a_friend_email_f_name"]); unset($_SESSION["tell_a_friend_email_l_name"]); unset($_SESSION["tell_a_friend_email"]); } //eof tell a freand $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEFORE_ORDER_TOTALS_PROCESS'); $order_totals = $order_total_modules->process(); $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_TOTALS_PROCESS'); if (!isset($_SESSION['payment']) && !$credit_covers) { zen_redirect(zen_href_link(FILENAME_DEFAULT)); } // load the before_process function from the payment modules $payment_modules->before_process(); $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_BEFOREPROCESS'); // create the order record $insert_id = $order->create($order_totals, 2); $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE'); $payment_modules->after_order_create($insert_id); $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE'); // store the product info to the order $order->create_add_products($insert_id); $_SESSION['order_number_created'] = $insert_id; $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE_ADD_PRODUCTS'); //send email notifications $order->send_order_email($insert_id, 2); $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_SEND_ORDER_EMAIL'); /** * Calculate order amount for display purposes on checkout-success page as well as adword campaigns etc * Takes the product subtotal and subtracts all credits from it */ $credits_applied = 0; for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) { if ($order_totals[$i]['code'] == 'ot_subtotal') $order_subtotal = $order_totals[$i]['value']; if ($$order_totals[$i]['code']->credit_class == true) $credits_applied += $order_totals[$i]['value']; if ($order_totals[$i]['code'] == 'ot_total') $ototal = $order_totals[$i]['value']; } $commissionable_order = ($order_subtotal - $credits_applied); $commissionable_order_formatted = $currencies->format($commissionable_order); $_SESSION['order_summary']['order_number'] = $insert_id; $_SESSION['order_summary']['order_subtotal'] = $order_subtotal; $_SESSION['order_summary']['credits_applied'] = $credits_applied; $_SESSION['order_summary']['order_total'] = $ototal; $_SESSION['order_summary']['commissionable_order'] = $commissionable_order; $_SESSION['order_summary']['commissionable_order_formatted'] = $commissionable_order_formatted; $_SESSION['order_summary']['coupon_code'] = $order->info['coupon_code']; $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_HANDLE_AFFILIATES'); ?>