[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 checkout_process.php

Zen Cart 源代码 checkout_process.php




下载文件

文件名: checkout_process.php
文件类型: PHP文件
文件大小: 5.8 KiB
MD5: 6bdc7b9b38c6a13e14ccf9c76511c2b8

checkout_process.php - 关闭高亮
  1. <?php
  2. /**
  3.  * module to process a completed checkout
  4.  *
  5.  * @package procedureCheckout
  6.  * @copyright Copyright 2003-2010 Zen Cart Development Team
  7.  * @copyright Portions Copyright 2003 osCommerce
  8.  * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  9.  * @version $Id: checkout_process.php 17462 2010-09-05 06:23:35Z drbyte $
  10.  */
  11. if (!defined('IS_ADMIN_FLAG')) {
  12.   die('Illegal Access');
  13. }
  14. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEGIN');
  15.  
  16. require(DIR_WS_MODULES . zen_get_module_directory('require_languages.php'));
  17.  
  18. // if the customer is not logged on, redirect them to the time out page
  19.   if (!$_SESSION['customer_id']) {
  20.     zen_redirect(zen_href_link(FILENAME_TIME_OUT));
  21.   } else {
  22.     // validate customer
  23.     if (zen_get_customer_validate_session($_SESSION['customer_id']) == false) {
  24.       $_SESSION['navigation']->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_SHIPPING));
  25.       zen_redirect(zen_href_link(FILENAME_LOGIN, '', 'SSL'));
  26.     }
  27.   }
  28.  
  29. // confirm where link came from
  30. if (!strstr($_SERVER['HTTP_REFERER'], FILENAME_CHECKOUT_CONFIRMATION)) {
  31.   //    zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT,'','SSL'));
  32. }
  33.  
  34. // BEGIN CC SLAM PREVENTION
  35. if (!isset($_SESSION['payment_attempt'])) $_SESSION['payment_attempt'] = 0;
  36. $_SESSION['payment_attempt']++;
  37. $zco_notifier->notify('NOTIFY_CHECKOUT_SLAMMING_ALERT');
  38. if ($_SESSION['payment_attempt'] > 3) {
  39.   $zco_notifier->notify('NOTIFY_CHECKOUT_SLAMMING_LOCKOUT');
  40.   $_SESSION['cart']->reset(TRUE);
  41.   zen_session_destroy();
  42.   zen_redirect(zen_href_link(FILENAME_TIME_OUT));
  43. }
  44. // END CC SLAM PREVENTION
  45.  
  46. if (!isset($credit_covers)) $credit_covers = FALSE;
  47.  
  48. // load selected payment module
  49. require(DIR_WS_CLASSES . 'payment.php');
  50. $payment_modules = new payment($_SESSION['payment']);
  51. // load the selected shipping module
  52. require(DIR_WS_CLASSES . 'shipping.php');
  53. $shipping_modules = new shipping($_SESSION['shipping']);
  54.  
  55. require(DIR_WS_CLASSES . 'order.php');
  56. $order = new order;
  57.  
  58. // prevent 0-entry orders from being generated/spoofed
  59. if (sizeof($order->products) < 1) {
  60.   zen_redirect(zen_href_link(FILENAME_SHOPPING_CART));
  61. }
  62.  
  63. require(DIR_WS_CLASSES . 'order_total.php');
  64. $order_total_modules = new order_total;
  65.  
  66. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEFORE_ORDER_TOTALS_PRE_CONFIRMATION_CHECK');
  67. if (strpos($GLOBALS[$_SESSION['payment']]->code, 'paypal') !== 0) {
  68.   $order_totals = $order_total_modules->pre_confirmation_check();
  69. }
  70. if ($credit_covers === TRUE)
  71. {
  72.     $order->info['payment_method'] = $order->info['payment_module_code'] = '';
  73. }
  74. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEFORE_ORDER_TOTALS_PROCESS');
  75. $order_totals = $order_total_modules->process();
  76. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_TOTALS_PROCESS');
  77.  
  78. if (!isset($_SESSION['payment']) && $credit_covers === FALSE) {
  79.   zen_redirect(zen_href_link(FILENAME_DEFAULT));
  80. }
  81.  
  82. // load the before_process function from the payment modules
  83. $payment_modules->before_process();
  84. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_BEFOREPROCESS');
  85. // create the order record
  86. $insert_id = $order->create($order_totals, 2);
  87. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE');
  88. $payment_modules->after_order_create($insert_id);
  89. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE');
  90. // store the product info to the order
  91. $order->create_add_products($insert_id);
  92. $_SESSION['order_number_created'] = $insert_id;
  93. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE_ADD_PRODUCTS');
  94. //send email notifications
  95. $order->send_order_email($insert_id, 2);
  96. $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_SEND_ORDER_EMAIL');
  97.  
  98. // clear slamming protection since payment was accepted
  99. if (isset($_SESSION['payment_attempt'])) unset($_SESSION['payment_attempt']);
  100.  
  101. /**
  102.  * Calculate order amount for display purposes on checkout-success page as well as adword campaigns etc
  103.  * Takes the product subtotal and subtracts all credits from it
  104.  */
  105.   $ototal = $order_subtotal = $credits_applied = 0;
  106.   for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
  107.     if ($order_totals[$i]['code'] == 'ot_subtotal') $order_subtotal = $order_totals[$i]['value'];
  108.     if ($$order_totals[$i]['code']->credit_class == true) $credits_applied += $order_totals[$i]['value'];
  109.     if ($order_totals[$i]['code'] == 'ot_total') $ototal = $order_totals[$i]['value'];
  110.     if ($order_totals[$i]['code'] == 'ot_tax') $otax = $order_totals[$i]['value'];
  111.     if ($order_totals[$i]['code'] == 'ot_shipping') $oshipping = $order_totals[$i]['value'];
  112.   }
  113.   $commissionable_order = ($order_subtotal - $credits_applied);
  114.   $commissionable_order_formatted = $currencies->format($commissionable_order);
  115.   $_SESSION['order_summary']['order_number'] = $insert_id;
  116.   $_SESSION['order_summary']['order_subtotal'] = $order_subtotal;
  117.   $_SESSION['order_summary']['credits_applied'] = $credits_applied;
  118.   $_SESSION['order_summary']['order_total'] = $ototal;
  119.   $_SESSION['order_summary']['commissionable_order'] = $commissionable_order;
  120.   $_SESSION['order_summary']['commissionable_order_formatted'] = $commissionable_order_formatted;
  121.   $_SESSION['order_summary']['coupon_code'] = $order->info['coupon_code'];
  122.   $_SESSION['order_summary']['currency_code'] = $order->info['currency'];
  123.   $_SESSION['order_summary']['currency_value'] = $order->info['currency_value'];
  124.   $_SESSION['order_summary']['payment_module_code'] = $order->info['payment_module_code'];
  125.   $_SESSION['order_summary']['shipping_method'] = $order->info['shipping_method'];
  126.   $_SESSION['order_summary']['orders_status'] = $order->info['orders_status'];
  127.   $_SESSION['order_summary']['tax'] = $otax;
  128.   $_SESSION['order_summary']['shipping'] = $oshipping;
  129.   $zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_HANDLE_AFFILIATES');
  130.  
  131.