} } } } } elseif ('shipping' == $step) { /* 如果不存在实体商品 */ if (!exist_real_goods($order_id)) { die('Hacking Attemp'); } /* 取得可用的配送方式列表 */ $region_id_list = array($order['country'], $order['province'], $order['city'], $order['district']); $shipping_list = available_shipping_list($region_id_list); /* 取得配送费用 */ $total = order_weight_price($order_id); foreach ($shipping_list as $key => $shipping) { $shipping_fee = shipping_fee($shipping['shipping_code'], unserialize($shipping['configure']), $total['weight'], $total['amount'], $total['number']); $shipping_list[$key]['shipping_fee'] = $shipping_fee; $shipping_list[$key]['format_shipping_fee'] = price_format($shipping_fee); $shipping_list[$key]['free_money'] = price_format($shipping['configure']['free_money']); } $smarty->assign('shipping_list', $shipping_list); } elseif ('payment' == $step) { /* 取得可用的支付方式列表 */ if (exist_real_goods($order_id)) { /* 存在实体商品 */ $region_id_list = array($order['country'], $order['province'], $order['city'], $order['district']); $shipping_area = shipping_area_info($order['shipping_id'], $region_id_list); $pay_fee = $shipping_area['support_cod'] == 1 ? $shipping_area['pay_fee'] : 0; $payment_list = available_payment_list($shipping_area['support_cod'], $pay_fee); } else { /* 不存在实体商品 */
/** * 合并订单 * @param string $from_order_sn 从订单号 * @param string $to_order_sn 主订单号 * @return 成功返回true,失败返回错误信息 */ function merge_order($from_order_sn, $to_order_sn) { /* 订单号不能为空 */ if (trim($from_order_sn) == '' || trim($to_order_sn) == '') { return $GLOBALS['_LANG']['order_sn_not_null']; } /* 订单号不能相同 */ if ($from_order_sn == $to_order_sn) { return $GLOBALS['_LANG']['two_order_sn_same']; } /* 取得订单信息 */ $from_order = order_info(0, $from_order_sn); $to_order = order_info(0, $to_order_sn); /* 检查订单是否存在 */ if (!$from_order) { return sprintf($GLOBALS['_LANG']['order_not_exist'], $from_order_sn); } elseif (!$to_order) { return sprintf($GLOBALS['_LANG']['order_not_exist'], $to_order_sn); } /* 检查合并的订单是否为普通订单,非普通订单不允许合并 */ if ($from_order['extension_code'] != '' || $to_order['extension_code'] != 0) { return $GLOBALS['_LANG']['merge_invalid_order']; } /* 检查订单状态是否是已确认或未确认、未付款、未发货 */ if ($from_order['order_status'] != OS_UNCONFIRMED && $from_order['order_status'] != OS_CONFIRMED) { return sprintf($GLOBALS['_LANG']['os_not_unconfirmed_or_confirmed'], $from_order_sn); } elseif ($from_order['pay_status'] != PS_UNPAYED) { return sprintf($GLOBALS['_LANG']['ps_not_unpayed'], $from_order_sn); } elseif ($from_order['shipping_status'] != SS_UNSHIPPED) { return sprintf($GLOBALS['_LANG']['ss_not_unshipped'], $from_order_sn); } if ($to_order['order_status'] != OS_UNCONFIRMED && $to_order['order_status'] != OS_CONFIRMED) { return sprintf($GLOBALS['_LANG']['os_not_unconfirmed_or_confirmed'], $to_order_sn); } elseif ($to_order['pay_status'] != PS_UNPAYED) { return sprintf($GLOBALS['_LANG']['ps_not_unpayed'], $to_order_sn); } elseif ($to_order['shipping_status'] != SS_UNSHIPPED) { return sprintf($GLOBALS['_LANG']['ss_not_unshipped'], $to_order_sn); } /* 检查订单用户是否相同 */ if ($from_order['user_id'] != $to_order['user_id']) { return $GLOBALS['_LANG']['order_user_not_same']; } /* 合并订单 */ $order = $to_order; $order['order_id'] = ''; $order['add_time'] = gmtime(); // 合并商品总额 $order['goods_amount'] += $from_order['goods_amount']; // 合并折扣 $order['discount'] += $from_order['discount']; if ($order['shipping_id'] > 0) { // 重新计算配送费用 $weight_price = order_weight_price($to_order['order_id']); $from_weight_price = order_weight_price($from_order['order_id']); $weight_price['weight'] += $from_weight_price['weight']; $weight_price['amount'] += $from_weight_price['amount']; $weight_price['number'] += $from_weight_price['number']; $region_id_list = array($order['country'], $order['province'], $order['city'], $order['district']); $shipping_area = shipping_area_info($order['shipping_id'], $region_id_list); $order['shipping_fee'] = shipping_fee($shipping_area['shipping_code'], unserialize($shipping_area['configure']), $weight_price['weight'], $weight_price['amount'], $weight_price['number']); // 如果保价了,重新计算保价费 if ($order['insure_fee'] > 0) { $order['insure_fee'] = shipping_insure_fee($shipping_area['shipping_code'], $order['goods_amount'], $shipping_area['insure']); } } // 重新计算包装费、贺卡费 if ($order['pack_id'] > 0) { $pack = pack_info($order['pack_id']); $order['pack_fee'] = $pack['free_money'] > $order['goods_amount'] ? $pack['pack_fee'] : 0; } if ($order['card_id'] > 0) { $card = card_info($order['card_id']); $order['card_fee'] = $card['free_money'] > $order['goods_amount'] ? $card['card_fee'] : 0; } // 红包不变,合并积分、余额、已付款金额 $order['integral'] += $from_order['integral']; $order['integral_money'] = value_of_integral($order['integral']); $order['surplus'] += $from_order['surplus']; $order['money_paid'] += $from_order['money_paid']; // 计算应付款金额(不包括支付费用) $order['order_amount'] = $order['goods_amount'] - $order['discount'] + $order['shipping_fee'] + $order['insure_fee'] + $order['pack_fee'] + $order['card_fee'] - $order['bonus'] - $order['integral_money'] - $order['surplus'] - $order['money_paid']; // 重新计算支付费 if ($order['pay_id'] > 0) { // 货到付款手续费 $cod_fee = $shipping_area ? $shipping_area['pay_fee'] : 0; $order['pay_fee'] = pay_fee($order['pay_id'], $order['order_amount'], $cod_fee); // 应付款金额加上支付费 $order['order_amount'] += $order['pay_fee']; } /* 插入订单表 */ do { $order['order_sn'] = get_order_sn(); if ($GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), addslashes_deep($order), 'INSERT')) { break; } else { if ($GLOBALS['db']->errno() != 1062) { die($GLOBALS['db']->errorMsg()); } } } while (true); // 防止订单号重复 /* 订单号 */ $order_id = $GLOBALS['db']->insert_id(); /* 更新订单商品 */ $sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_goods') . " SET order_id = '{$order_id}' " . "WHERE order_id " . db_create_in(array($from_order['order_id'], $to_order['order_id'])); $GLOBALS['db']->query($sql); include_once ROOT_PATH . 'includes/lib_clips.php'; /* 插入支付日志 */ insert_pay_log($order_id, $order['order_amount'], PAY_ORDER); /* 删除原订单 */ $sql = 'DELETE FROM ' . $GLOBALS['ecs']->table('order_info') . " WHERE order_id " . db_create_in(array($from_order['order_id'], $to_order['order_id'])); $GLOBALS['db']->query($sql); /* 删除原订单支付日志 */ $sql = 'DELETE FROM ' . $GLOBALS['ecs']->table('pay_log') . " WHERE order_id " . db_create_in(array($from_order['order_id'], $to_order['order_id'])); $GLOBALS['db']->query($sql); /* 返还 from_order 的红包,因为只使用 to_order 的红包 */ if ($from_order['bonus_id'] > 0) { unuse_bonus($from_order['bonus_id']); } /* 返回成功 */ return true; }
/** * 获得订单中的费用信息 * * @access public * @param array $order * @param array $goods * @param array $consignee * @param bool $is_gb_deposit 是否团购保证金(如果是,应付款金额只计算商品总额和支付费用,可以获得的积分取 $gift_integral) * @return array */ function order_fee($order, $goods, $consignee) { /* 初始化订单的扩展code */ if (!isset($order['extension_code'])) { $order['extension_code'] = ''; } if ($order['extension_code'] == 'group_buy') { $group_buy = model('GroupBuyBase')->group_buy_info($order['extension_id']); } $total = array('real_goods_count' => 0, 'gift_amount' => 0, 'goods_price' => 0, 'market_price' => 0, 'discount' => 0, 'pack_fee' => 0, 'card_fee' => 0, 'shipping_fee' => 0, 'shipping_insure' => 0, 'integral_money' => 0, 'bonus' => 0, 'surplus' => 0, 'cod_fee' => 0, 'pay_fee' => 0, 'tax' => 0); $weight = 0; /* 商品总价 */ foreach ($goods as $val) { /* 统计实体商品的个数 */ if ($val['is_real']) { $total['real_goods_count']++; } $total['goods_price'] += $val['goods_price'] * $val['goods_number']; $total['market_price'] += $val['market_price'] * $val['goods_number']; } $total['saving'] = $total['market_price'] - $total['goods_price']; $total['save_rate'] = $total['market_price'] ? round($total['saving'] * 100 / $total['market_price']) . '%' : 0; $total['goods_price_formated'] = price_format($total['goods_price'], false); $total['market_price_formated'] = price_format($total['market_price'], false); $total['saving_formated'] = price_format($total['saving'], false); /* 折扣 */ if ($order['extension_code'] != 'group_buy') { $discount = model('Order')->compute_discount(); $total['discount'] = $discount['discount']; if ($total['discount'] > $total['goods_price']) { $total['discount'] = $total['goods_price']; } } $total['discount_formated'] = price_format($total['discount'], false); /* 税额 */ if (!empty($order['need_inv']) && $order['inv_type'] != '') { /* 查税率 */ $rate = 0; $invoice_type = C('invoice_type'); foreach ($invoice_type['type'] as $key => $type) { if ($type == $order['inv_type']) { $rate = floatval($invoice_type['rate'][$key]) / 100; break; } } if ($rate > 0) { $total['tax'] = $rate * $total['goods_price']; } } $total['tax_formated'] = price_format($total['tax'], false); /* 包装费用 */ if (!empty($order['pack_id'])) { $total['pack_fee'] = pack_fee($order['pack_id'], $total['goods_price']); } $total['pack_fee_formated'] = price_format($total['pack_fee'], false); /* 贺卡费用 */ if (!empty($order['card_id'])) { $total['card_fee'] = card_fee($order['card_id'], $total['goods_price']); } $total['card_fee_formated'] = price_format($total['card_fee'], false); /* 红包 */ if (!empty($order['bonus_id'])) { $bonus = model('Order')->bonus_info($order['bonus_id']); $total['bonus'] = $bonus['type_money']; } $total['bonus_formated'] = price_format($total['bonus'], false); /* 线下红包 */ if (!empty($order['bonus_kill'])) { $bonus = model('Order')->bonus_info(0, $order['bonus_kill']); $total['bonus_kill'] = $order['bonus_kill']; $total['bonus_kill_formated'] = price_format($total['bonus_kill'], false); } /* 配送费用 */ $shipping_cod_fee = NULL; if ($order['shipping_id'] > 0 && $total['real_goods_count'] > 0) { $region['country'] = $consignee['country']; $region['province'] = $consignee['province']; $region['city'] = $consignee['city']; $region['district'] = $consignee['district']; $shipping_info = model('Shipping')->shipping_area_info($order['shipping_id'], $region); if (!empty($shipping_info)) { if ($order['extension_code'] == 'group_buy') { $weight_price = model('Order')->cart_weight_price(CART_GROUP_BUY_GOODS); } else { $weight_price = model('Order')->cart_weight_price(); } // 查看购物车中是否全为免运费商品,若是则把运费赋为零 $sql = 'SELECT count(*) as count FROM ' . $this->pre . "cart WHERE `session_id` = '" . SESS_ID . "' AND `extension_code` != 'package_buy' AND `is_shipping` = 0"; $res = $this->row($sql); $shipping_count = $res['count']; $total['shipping_fee'] = ($shipping_count == 0 and $weight_price['free_shipping'] == 1) ? 0 : shipping_fee($shipping_info['shipping_code'], $shipping_info['configure'], $weight_price['weight'], $total['goods_price'], $weight_price['number']); if (!empty($order['need_insure']) && $shipping_info['insure'] > 0) { $total['shipping_insure'] = shipping_insure_fee($shipping_info['shipping_code'], $total['goods_price'], $shipping_info['insure']); } else { $total['shipping_insure'] = 0; } if ($shipping_info['support_cod']) { $shipping_cod_fee = $shipping_info['pay_fee']; } } } $total['shipping_fee_formated'] = price_format($total['shipping_fee'], false); $total['shipping_insure_formated'] = price_format($total['shipping_insure'], false); // 购物车中的商品能享受红包支付的总额 $bonus_amount = model('Order')->compute_discount_amount(); // 红包和积分最多能支付的金额为商品总额 $max_amount = $total['goods_price'] == 0 ? $total['goods_price'] : $total['goods_price'] - $bonus_amount; /* 计算订单总额 */ if ($order['extension_code'] == 'group_buy' && $group_buy['deposit'] > 0) { $total['amount'] = $total['goods_price']; } else { $total['amount'] = $total['goods_price'] - $total['discount'] + $total['tax'] + $total['pack_fee'] + $total['card_fee'] + $total['shipping_fee'] + $total['shipping_insure'] + $total['cod_fee']; // 减去红包金额 $use_bonus = min($total['bonus'], $max_amount); // 实际减去的红包金额 if (isset($total['bonus_kill'])) { $use_bonus_kill = min($total['bonus_kill'], $max_amount); $total['amount'] -= $price = number_format($total['bonus_kill'], 2, '.', ''); // 还需要支付的订单金额 } $total['bonus'] = $use_bonus; $total['bonus_formated'] = price_format($total['bonus'], false); $total['amount'] -= $use_bonus; // 还需要支付的订单金额 $max_amount -= $use_bonus; // 积分最多还能支付的金额 } /* 余额 */ $order['surplus'] = $order['surplus'] > 0 ? $order['surplus'] : 0; if ($total['amount'] > 0) { if (isset($order['surplus']) && $order['surplus'] > $total['amount']) { $order['surplus'] = $total['amount']; $total['amount'] = 0; } else { $total['amount'] -= floatval($order['surplus']); } } else { $order['surplus'] = 0; $total['amount'] = 0; } $total['surplus'] = $order['surplus']; $total['surplus_formated'] = price_format($order['surplus'], false); /* 积分 */ $order['integral'] = $order['integral'] > 0 ? $order['integral'] : 0; if ($total['amount'] > 0 && $max_amount > 0 && $order['integral'] > 0) { $integral_money = value_of_integral($order['integral']); // 使用积分支付 $use_integral = min($total['amount'], $max_amount, $integral_money); // 实际使用积分支付的金额 $total['amount'] -= $use_integral; $total['integral_money'] = $use_integral; $order['integral'] = integral_of_value($use_integral); } else { $total['integral_money'] = 0; $order['integral'] = 0; } $total['integral'] = $order['integral']; $total['integral_formated'] = price_format($total['integral_money'], false); /* 保存订单信息 */ $_SESSION['flow_order'] = $order; $se_flow_type = isset($_SESSION['flow_type']) ? $_SESSION['flow_type'] : ''; /* 支付费用 */ if (!empty($order['pay_id']) && ($total['real_goods_count'] > 0 || $se_flow_type != CART_EXCHANGE_GOODS)) { $total['pay_fee'] = pay_fee($order['pay_id'], $total['amount'], $shipping_cod_fee); } $total['pay_fee_formated'] = price_format($total['pay_fee'], false); $total['amount'] += $total['pay_fee']; // 订单总额累加上支付费用 $total['amount_formated'] = price_format($total['amount'], false); /* 取得可以得到的积分和红包 */ if ($order['extension_code'] == 'group_buy') { $total['will_get_integral'] = $group_buy['gift_integral']; } elseif ($order['extension_code'] == 'exchange_goods') { $total['will_get_integral'] = 0; } else { $total['will_get_integral'] = model('Order')->get_give_integral($goods); } $total['will_get_bonus'] = $order['extension_code'] == 'exchange_goods' ? 0 : price_format(model('Order')->get_total_bonus(), false); $total['formated_goods_price'] = price_format($total['goods_price'], false); $total['formated_market_price'] = price_format($total['market_price'], false); $total['formated_saving'] = price_format($total['saving'], false); if ($order['extension_code'] == 'exchange_goods') { $sql = 'SELECT SUM(eg.exchange_integral) ' . 'as sum FROM ' . $this->pre . 'cart AS c,' . $this->pre . 'exchange_goods AS eg ' . "WHERE c.goods_id = eg.goods_id AND c.session_id= '" . SESS_ID . "' " . " AND c.rec_type = '" . CART_EXCHANGE_GOODS . "' " . ' AND c.is_gift = 0 AND c.goods_id > 0 ' . 'GROUP BY eg.goods_id'; $res = $this->row($sql); $exchange_integral = $res['sum']; $total['exchange_integral'] = $exchange_integral; } return $total; }
$total = order_fee($order, $cart_goods, $consignee); $smarty->assign('shopping_money', sprintf($_LANG['shopping_money'], $total['formated_goods_price'])); $smarty->assign('market_price_desc', sprintf($_LANG['than_market_price'], $total['formated_market_price'], $total['formated_saving'], $total['save_rate'])); $smarty->assign('total', $total); /* 取得配送列表 */ $region = array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district']); $shipping_list = available_shipping_list($region); $cart_weight_price = cart_weight_price($flow_type); $insure_disabled = true; $cod_disabled = true; // 查看购物车中是否全为免运费商品,若是则把运费赋为零 $sql = 'SELECT count(*) FROM ' . $ecs->table('cart') . " WHERE `session_id` = '" . SESS_ID . "' AND `extension_code` != 'package_buy' AND `is_shipping` = 0"; $shipping_count = $db->getOne($sql); foreach ($shipping_list as $key => $val) { $shipping_cfg = unserialize_config($val['configure']); $shipping_fee = ($shipping_count == 0 and $cart_weight_price['free_shipping'] == 1) ? 0 : shipping_fee($val['shipping_code'], unserialize($val['configure']), $cart_weight_price['weight'], $cart_weight_price['amount'], $cart_weight_price['number']); $shipping_list[$key]['format_shipping_fee'] = price_format($shipping_fee, false); $shipping_list[$key]['shipping_fee'] = $shipping_fee; $shipping_list[$key]['free_money'] = price_format($shipping_cfg['free_money'], false); $shipping_list[$key]['insure_formated'] = strpos($val['insure'], '%') === false ? price_format($val['insure'], false) : $val['insure']; } $smarty->assign('shipping_list', $shipping_list); $smarty->assign('insure_disabled', $insure_disabled); $smarty->assign('cod_disabled', $cod_disabled); /* 取得支付列表 */ if ($order['shipping_id'] == 0) { $cod = true; $cod_fee = 0; } else { $shipping = shipping_info($order['shipping_id']); $cod = $shipping['support_cod'];
} exit; } } elseif ('shipping' == $step) { /* 如果不存在实体商品,退出 */ if (!exist_real_goods($order_id)) { die('Hacking Attemp'); } /* 取得订单信息 */ $order_info = order_info($order_id); $region_id_list = array($order_info['country'], $order_info['province'], $order_info['city'], $order_info['district']); /* 保存订单 */ $shipping_id = $_POST['shipping']; $shipping = shipping_area_info($shipping_id, $region_id_list); $weight_amount = order_weight_price($order_id); $shipping_fee = shipping_fee($shipping['shipping_code'], $shipping['configure'], $weight_amount['weight'], $weight_amount['amount'], $weight_amount['number']); $order = array('shipping_id' => $shipping_id, 'shipping_name' => addslashes($shipping['shipping_name']), 'shipping_fee' => $shipping_fee); if (isset($_POST['insure'])) { /* 计算保价费 */ $order['insure_fee'] = shipping_insure_fee($shipping['shipping_code'], order_amount($order_id), $shipping['insure']); } else { $order['insure_fee'] = 0; } update_order($order_id, $order); update_order_amount($order_id); /* 更新 pay_log */ update_pay_log($order_id); /* 清除首页缓存:发货单查询 */ clear_cache_files('index.dwt'); /* todo 记录日志 */ $sn = $old_order['order_sn'];
// 页面标题 $smarty->assign('ur_here', $position['ur_here']); // 当前位置 $smarty->assign('helps', get_shop_help()); // 网店帮助 $smarty->assign('lang', $_LANG); $smarty->assign('choose', $choose); $province_list[NULL] = get_regions(1, $choose['country']); $city_list[NULL] = get_regions(2, $choose['province']); $district_list[NULL] = get_regions(3, $choose['city']); $smarty->assign('province_list', $province_list); $smarty->assign('city_list', $city_list); $smarty->assign('district_list', $district_list); /* 取得国家列表、商店所在国家、商店所在国家的省列表 */ $smarty->assign('country_list', get_regions()); /* 取得配送列表 */ $region = array($choose['country'], $choose['province'], $choose['city'], $choose['district']); $shipping_list = available_shipping_list($region); $cart_weight_price = 0; $insure_disabled = true; $cod_disabled = true; foreach ($shipping_list as $key => $val) { $shipping_cfg = unserialize_config($val['configure']); $shipping_fee = shipping_fee($val['shipping_code'], unserialize($val['configure']), $cart_weight_price['weight'], $cart_weight_price['amount']); $shipping_list[$key]['format_shipping_fee'] = price_format($shipping_fee, false); $shipping_list[$key]['fee'] = $shipping_fee; $shipping_list[$key]['free_money'] = price_format($shipping_cfg['free_money'], false); $shipping_list[$key]['insure_formated'] = strpos($val['insure'], '%') === false ? price_format($val['insure'], false) : $val['insure']; } $smarty->assign('shipping_list', $shipping_list); $smarty->display('myship.dwt');
/** * 订单确认 */ public function checkout() { /* 取得购物类型 */ $flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS; /* 积分兑换商品 */ if ($flow_type == CART_EXCHANGE_GOODS) { $this->assign('is_exchange_goods', 1); } else { // 正常购物流程 清空其他购物流程情况 $_SESSION['flow_order']['extension_code'] = ''; } /* 检查购物车中是否有商品 */ $condition = "session_id = '" . SESS_ID . "' " . "AND parent_id = 0 AND is_gift = 0 AND rec_type = '{$flow_type}'"; $count = $this->model->table('cart')->field('COUNT(*)')->where($condition)->getOne(); if ($count == 0) { show_message(L('no_goods_in_cart'), '', '', 'warning'); } // 检查用户是否已经登录 如果用户已经登录了则检查是否有默认的收货地址 如果没有登录则跳转到登录和注册页面 if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0) { /* 用户没有登录且没有选定匿名购物,转向到登录页面 */ $this->redirect(url('user/login', array('step' => 'flow'))); exit; } // 获取收货人信息 $consignee = model('Order')->get_consignee($_SESSION['user_id']); /* 检查收货人信息是否完整 */ if (!model('Order')->check_consignee_info($consignee, $flow_type)) { /* 如果不完整则转向到收货人信息填写界面 */ ecs_header("Location: " . url('flow/consignee_list') . "\n"); } // 获取配送地址 $consignee_list = model('Users')->get_consignee_list($_SESSION['user_id']); $this->assign('consignee_list', $consignee_list); //获取默认配送地址 $address_id = $this->model->table('users')->field('address_id')->where("user_id = '" . $_SESSION['user_id'] . "' ")->getOne(); $this->assign('address_id', $address_id); $_SESSION['flow_consignee'] = $consignee; $this->assign('consignee', $consignee); /* 对商品信息赋值 */ $cart_goods = model('Order')->cart_goods($flow_type); // 取得商品列表,计算合计 $this->assign('goods_list', $cart_goods); /* 对是否允许修改购物车赋值 */ if ($flow_type != CART_GENERAL_GOODS || C('one_step_buy') == '1') { $this->assign('allow_edit_cart', 0); } else { $this->assign('allow_edit_cart', 1); } // 取得购物流程设置 $this->assign('config', C('CFG')); // 取得订单信息 $order = model('Order')->flow_order_info(); $this->assign('order', $order); /* 计算折扣 */ if ($flow_type != CART_EXCHANGE_GOODS) { $discount = model('Order')->compute_discount(); $this->assign('discount', $discount['discount']); $favour_name = empty($discount['name']) ? '' : join(',', $discount['name']); $this->assign('your_discount', sprintf(L('your_discount'), $favour_name, price_format($discount['discount']))); } //计算订单的费用 $total = model('Users')->order_fee($order, $cart_goods, $consignee); $this->assign('total', $total); $this->assign('shopping_money', sprintf(L('shopping_money'), $total['formated_goods_price'])); $this->assign('market_price_desc', sprintf(L('than_market_price'), $total['formated_market_price'], $total['formated_saving'], $total['save_rate'])); /* 取得可以得到的积分和红包 */ $this->assign('total_integral', model('Order')->cart_amount(false, $flow_type) - $total['integral_money']); /* 取得配送列表 */ $region = array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district']); $shipping_list = model('Shipping')->available_shipping_list($region); $cart_weight_price = model('Order')->cart_weight_price($flow_type); $insure_disabled = true; $cod_disabled = true; // 查看购物车中是否全为免运费商品,若是则把运费赋为零 $condition = "`session_id` = '" . SESS_ID . "' AND `is_shipping` = 0"; $shipping_count = $this->model->table('cart')->field('count(*)')->where($condition)->getOne(); foreach ($shipping_list as $key => $val) { $shipping_cfg = unserialize_config($val['configure']); $shipping_fee = ($shipping_count == 0 and $cart_weight_price['free_shipping'] == 1) ? 0 : shipping_fee($val['shipping_code'], unserialize($val['configure']), $cart_weight_price['weight'], $cart_weight_price['amount'], $cart_weight_price['number']); $shipping_list[$key]['format_shipping_fee'] = price_format($shipping_fee, false); $shipping_list[$key]['shipping_fee'] = $shipping_fee; $shipping_list[$key]['free_money'] = price_format($shipping_cfg['free_money'], false); $shipping_list[$key]['insure_formated'] = strpos($val['insure'], '%') === false ? price_format($val['insure'], false) : $val['insure']; /* 当前的配送方式是否支持保价 */ if ($val['shipping_id'] == $order['shipping_id']) { $insure_disabled = $val['insure'] == 0; $cod_disabled = $val['support_cod'] == 0; } // 兼容过滤ecjia配送方式 if (substr($val['shipping_code'], 0, 5) == 'ship_') { unset($shipping_list[$key]); } } $this->assign('shipping_list', $shipping_list); $this->assign('insure_disabled', $insure_disabled); $this->assign('cod_disabled', $cod_disabled); /* 取得支付列表 */ if ($order['shipping_id'] == 0) { $cod = true; $cod_fee = 0; } else { $shipping = model('Shipping')->shipping_info($order['shipping_id']); $cod = $shipping['support_cod']; if ($cod) { $shipping_area_info = model('Shipping')->shipping_area_info($order['shipping_id'], $region); $cod_fee = $shipping_area_info['pay_fee']; } else { $cod_fee = 0; } } // 给货到付款的手续费加<span id>,以便改变配送的时候动态显示 $payment_list = model('Order')->available_payment_list(1, $cod_fee); if (isset($payment_list)) { foreach ($payment_list as $key => $payment) { if ($payment['is_cod'] == '1') { $payment_list[$key]['format_pay_fee'] = '<span id="ECS_CODFEE">' . $payment['format_pay_fee'] . '</span>'; } /* 如果有易宝神州行支付 如果订单金额大于300 则不显示 */ if ($payment['pay_code'] == 'yeepayszx' && $total['amount'] > 300) { unset($payment_list[$key]); } /* 如果有余额支付 */ if ($payment['pay_code'] == 'balance') { /* 如果未登录,不显示 */ if ($_SESSION['user_id'] == 0) { unset($payment_list[$key]); } else { if ($_SESSION['flow_order']['pay_id'] == $payment['pay_id']) { $this->assign('disable_surplus', 1); } } } // 如果不是微信浏览器访问并且不是微信会员 则不显示微信支付 if ($payment['pay_code'] == 'wxpay' && !is_wechat_browser() && empty($_SESSION['openid'])) { unset($payment_list[$key]); } // 兼容过滤ecjia支付方式 if (substr($payment['pay_code'], 0, 4) == 'pay_') { unset($payment_list[$key]); } } } $this->assign('payment_list', $payment_list); $user_info = model('Order')->user_info($_SESSION['user_id']); /* 如果使用余额,取得用户余额 */ $use_surplus = C('use_surplus'); if ((!isset($use_surplus) || C('use_surplus') == '1') && $_SESSION['user_id'] > 0 && $user_info['user_money'] > 0) { // 能使用余额 $this->assign('allow_use_surplus', 1); $this->assign('your_surplus', $user_info['user_money']); } /* 如果使用积分,取得用户可用积分及本订单最多可以使用的积分 */ $use_integral = C('use_integral'); if ((!isset($use_integral) || C('use_integral') == '1') && $_SESSION['user_id'] > 0 && $user_info['pay_points'] > 0 && $flow_type != CART_EXCHANGE_GOODS) { // 能使用积分 $this->assign('allow_use_integral', 1); $this->assign('order_max_integral', model('Flow')->flow_available_points()); // 可用积分 $this->assign('your_integral', $user_info['pay_points']); // 用户积分 } /* 如果使用缺货处理,取得缺货处理列表 */ $use_how_oos = C('use_how_oos'); if (!isset($use_how_oos) || $use_how_oos == '1') { $oos = L('oos'); if (is_array($oos) && !empty($oos)) { $this->assign('how_oos_list', L('oos')); } } /* 如果能开发票,取得发票内容列表 */ $can_invoice = C('can_invoice'); $invoice_content = C('invoice_content'); if ((!isset($can_invoice) || $can_invoice == '1') && isset($invoice_content) && trim($invoice_content) != '' && $flow_type != CART_EXCHANGE_GOODS) { $inv_content_list = explode("\n", str_replace("\r", '', C('invoice_content'))); $this->assign('inv_content_list', $inv_content_list); $inv_type_list = array(); $invoice_type = C('invoice_type'); foreach ($invoice_type['type'] as $key => $type) { if (!empty($type)) { $inv_type_list[$type] = $type . ' [' . floatval($invoice_type['rate'][$key]) . '%]'; } } $this->assign('inv_type_list', $inv_type_list); } /* 保存 session */ $_SESSION['flow_order'] = $order; $this->assign('currency_format', C('currency_format')); $this->assign('integral_scale', C('integral_scale')); $this->assign('step', ACTION_NAME); model('Common')->assign_dynamic('shopping_flow'); $this->assign('title', L('order_detail')); $this->display('flow.dwt'); }
public function create() { $time = time(); if (!$_REQUEST['cart_ids'] && (!$_REQUEST['item_id'] || !$_REQUEST['num']) && (!$_REQUEST['product_id'] || !$_REQUEST['num'])) { ajaxErrReturn('商品不存在!'); } if (!$_REQUEST['consignee_id']) { ajaxErrReturn('收件人地址必须'); } $logs_model = M('Logs'); $pl_model = M('PmList'); //收件人信息 $admodel = M('MemberAddress'); $ad_data['id'] = $_REQUEST['consignee_id']; $ad_data['member_id'] = $this->user['id']; $address = $admodel->where($ad_data)->find(); if (!$address) { ajaxErrReturn('收件人地址必须'); } $list = $this->products(); $total_fee = 0; //组装,以商家为单位 foreach ($list['data'] as $key => $val) { $seller_id = $val['seller_id']; $id = $val['id']; //$k = array_search($id,$_POST['ids']); if ($val['stock'] < 1) { ajaxErrReturn($val['name'] . '已无库存'); } $num = $val['num'] > $val['stock'] ? $val['stock'] : $val['num']; //超过库存 $list2[$seller_id]['seller_name'] = $val['seller_name']; $list2[$seller_id]['seller_realname'] = $val['seller_realname']; $list2[$seller_id]['num'] = $num; $list2[$seller_id]['total_num'] += $num; $val['amount'] = $num * $val['price']; //$list2[$member_id]['amount'] = $num*$val['price']; $val['module'] = $val['item_id'] ? 'Product_item' : 'Product'; $val['num'] = $num; $list2[$seller_id]['list'][] = $val; $list2[$seller_id]['total_fee'] += $val['amount']; $total_fee += $num * $val['price']; //购买记录 /* $logs_data['msg'] = '<span>'.name_hide($this->user['username']).'</span>下单购买作品'.$val['product_name']; $logs_data['create_time'] = $time; $logs_model->add($logs_data); */ } //优惠券 if ($_POST['coupon_user_id']) { $mc_model = M('MemberCoupon'); $data['a.id'] = array('in', explode(',', $_POST['coupon_user_id'])); //$data['a.id'] = $_POST['coupon_user_id']; $coupons = $mc_model->alias('a')->join('`' . C('DB_PREFIX') . 'coupon` as b on a.coupon_id=b.id')->field('a.id,a.member_id,a.coupon_id,a.deadline,a.status,b.title,b.value,b.info,b.status as c_status,b.seller_id')->group('b.id')->where($data)->select(); //组装已商家为单位优惠券 foreach ($coupons as $key => $val) { $seller_id = $val['seller_id']; $coupons2[$seller_id] = $val; if ($val['deadline'] < time()) { ajaxErrReturn($val['title'] . '优惠券已过期'); } if ($val['member_id'] != $this->user['id']) { ajaxErrReturn($val['title'] . '非法优惠券'); } if ($val['status'] == 1) { ajaxErrReturn($val['title'] . '此优惠券已使用'); } } } //促销 if ($_POST['sp_id']) { $op_model = M('OrderPromotion'); $op_data['id'] = array('in', explode(',', $_POST['sp_id'])); $proms = $op_model->where($op_data)->select(); //组装已商家为单位优惠券 foreach ($proms as $key => $val) { $seller_id = $val['seller_id']; $proms2[$seller_id] = $val; if ($val['btime'] > time()) { ajaxErrReturn($val['title'] . '促销活动还未开始'); } if ($val['etime'] < time()) { ajaxErrReturn($val['title'] . '促销活动已结束'); } } } //生成订单 $model = M('Order'); $mem_model = M('Member'); $od_model = M('OrderDetail'); $time = time(); $model->startTrans(); //启用事务 $mo_sn = ''; if (count($list2) > 1) { $mo_sn = build_order_no($this->user['id']); } foreach ($list2 as $seller_id => $v) { if ($seller_id != 0) { //$mdata['id'] = $seller_id; //$user = $mem_model->field('id,pid')->where($mdata)->find(); //$add_order['agent_id'] = $user['pid'];//代理商 $add_order['seller_id'] = $seller_id; } else { $add_order['agent_id'] = 0; } //订单号 $order_sn = $add_order['order_sn'] = build_order_no($this->user['id']); if ($mo_sn) { $add_order['mo_sn'] = $mo_sn; } //商品总价 $add_order['total_fee'] = $v['total_fee']; //邮费处理 $add_order['shipping_fee'] = shipping_fee($v['list'], $address); $add_order['type'] = 1; $add_order['title'] = '购买商品'; //优惠券处理 if ($_POST['coupon_user_id'] && $coupons2[$seller_id]) { $add_order['coupons_fee'] = $coupons2[$seller_id]['value']; } else { $add_order['coupons_fee'] = 0; } //促销价格 if ($_POST['sp_id'] && $proms2[$seller_id]) { $options['prom_id'] = $proms2[$seller_id]['id']; $prom = get_promotion($v['list'], $options); if ($prom) { $add_order['discount_fee'] = $prom[0]['award_value']; } } else { $add_order['discount_fee'] = 0; } //实付价格 = 总价 - 优惠券价 - 促销价 + 快递费 $add_order['actual_paid'] = $add_order['total_fee'] - $add_order['coupons_fee'] - $add_order['discount_fee'] + $add_order['shipping_fee']; //发票税额 if ($this->configs['tax_rate'] && $_POST['tax']) { $add_order['tax_fee'] = $add_order['actual_paid'] * $this->configs['tax_rate'] / 100; } else { $add_order['tax_fee'] = 0; } $add_order['tax_title'] = $_POST['tax_title']; $add_order['tax_content'] = $_POST['tax_content']; //总价 + 发票税 $add_order['actual_paid'] = $add_order['actual_paid'] + $add_order['tax_fee']; $add_order['bond'] = 0; $add_order['total_num'] = $v['total_num']; $add_order['member_id'] = $this->user['id']; $add_order['member_name'] = $this->user['username']; //$add_order['realname'] = $this->user['realname']; $add_order['seller_id'] = $seller_id; $add_order['recipient'] = $address['name']; $add_order['pv_id'] = $address['pv_id']; $add_order['ct_id'] = $address['ct_id']; $add_order['dist_id'] = $address['dist_id']; $add_order['address'] = $address['province'] . $address['city'] . $address['district'] . $address['addr']; $add_order['zip_code'] = $address['zip_code']; $add_order['mobile'] = $address['mobile']; $add_order['memo'] = $_REQUEST['memo'] ? $_REQUEST['memo'] : ''; $add_order['ip'] = $_SERVER['REMOTE_ADDR']; $add_order['create_time'] = $time; $add_order['order_time'] = $this->configs['order_expired'] != 0 ? $time + 3600 * $this->configs['order_expired'] : 0; $add_order['remark'] = $_POST['remark' . $mid] ? $_POST['remark' . $mid] : ''; $oid = $model->add($add_order); //if(!$out_trade_no)$out_trade_no=$oid; if ($oid) { $result = true; if ($_POST['coupon_user_id'] && $coupons2[$seller_id]) { //优惠券状态修改 $mc_wdata['id'] = $coupons2[$seller_id]['id']; $mc_sdata['status'] = 1; $mc_sdata['order_id'] = $oid; $mc_sdata['use_time'] = $time; $result = $mc_model->where($mc_wdata)->save($mc_sdata); } if (!$result) { $result = $model->rollback(); ajaxErrReturn('优惠券无法使用'); exit; } //促销信息记录 if ($_POST['sp_id'] && $proms2[$seller_id]) { $pl_data['order_id'] = $oid; //$pl_data['info'] = serialize($prom); $pl_data['pm_type'] = 'Order'; $pl_data['pm_id'] = $proms2[$seller_id]['id']; $pl_data['create_time'] = $time; $result = $op_model->add($op_data); } if (!$result) { $result = $model->rollback(); ajaxErrReturn('促销信息有误'); exit; } //订单产品详情 foreach ($v['list'] as $goods) { $od_data['member_id'] = $this->user['id']; $od_data['seller_id'] = $seller_id; $od_data['order_id'] = $oid; $od_data['order_sn'] = $order_sn; $od_data['source'] = $goods['item_id'] ? 'Product_item' : 'Product'; $gid = $goods['id']; $od_data['sourceid'] = $gid; $od_data['product_id'] = $goods['product_id']; $od_data['item_id'] = $goods['item_id']; $od_data['product_name'] = $goods['name']; $od_data['spec'] = $goods['spec'] ? $goods['spec'] : ''; //$od_data['product_name'] = $goods['product_name']; $share_id = $_SESSION['share'][$gid]['share_id']; if ($share_id) { if ($share_id == $this->user['id']) { $share_id = 0; //不能自己分享给自己 } } else { $share_id = 0; } $od_data['share_id'] = $share_id; $od_data['lit_pic'] = $goods['lit_pic']; $od_data['price'] = $goods['price']; $od_data['num'] = $goods['num']; $od_data['create_time'] = $time; $md_id = $od_model->add($od_data); //echo $od_model->getlastsql();exit; if (!$md_id) { $model->rollback(); ajaxErrReturn('详情订单生成失败'); exit; } } } else { $model->rollback(); ajaxErrReturn('订单生成失败'); exit; } } //减去库存 if ($this->configs['site_inventorysetup'] == 1) { stock_update($list['data']); } $model->commit(); $msg['error_code'] = 0; $msg['notice'] = '订单生成成功'; //清除购物车数据 if ($_POST['cart_ids']) { //CartAction::delete(); //$data = R('Cart/delete'); } if ($mo_sn) { $msg['mo_sn'] = $mo_sn; $gourl = U('Order/beforpay', array('mo_sn', $mo_sn)); } else { $msg['order_sn'] = $order_sn; $gourl = U('Order/beforpay', array('order_sn', $order_sn)); } $msg['gourl'] = $gourl; ajaxSucReturn($msg); }
public function checkout () { global $ecs,$db,$_CFG; /*------------------------------------------------------ */ //-- 订单确认 /*------------------------------------------------------ */ #取得购物类型 $flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS; /* #团购标志 if ($flow_type == CART_GROUP_BUY_GOODS) { $smarty->assign('is_group_buy', 1); } #积分兑换商品 elseif ($flow_type == CART_EXCHANGE_GOODS) { $smarty->assign('is_exchange_goods', 1); } else { */ #正常购物流程 清空其他购物流程情况 $_SESSION['flow_order']['extension_code'] = ''; /*}*/ /* 检查购物车中是否有商品 */ $sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') ." WHERE session_id = '" . SESS_ID . "' " . "AND parent_id = 0 AND is_gift = 0 AND rec_type = '$flow_type'"; if ($db->getOne($sql) == 0) { $msg = rpcLang('flow.php', 'no_goods_in_cart'); jsonExit("{\"status\":\"$msg\"}"); } /* * 检查用户是否已经登录 * 如果用户已经登录了则检查是否有默认的收货地址 * 如果没有登录则跳转到登录和注册页面 */ if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0) { $msg = rpcLang('user.php', 'nologin'); jsonExit("{\"status\":\"$msg\"}"); } $consignee = get_consignee($_SESSION['user_id']); #检查收货人信息是否完整 if (!check_consignee_info($consignee, $flow_type)) { $msg = rpcLang('flow.php', 'user_address_not_full'); jsonExit("{\"status\":\"$msg\"}"); } //$_SESSION['flow_consignee'] = $consignee; #对商品信息赋值 $cart_goods = cart_goods($flow_type); // 取得商品列表,计算合计 /* $smarty->assign('goods_list', $cart_goods); #对是否允许修改购物车赋值 if ($flow_type != CART_GENERAL_GOODS || $_CFG['one_step_buy'] == '1') { $smarty->assign('allow_edit_cart', 0); } else { $smarty->assign('allow_edit_cart', 1); } #取得购物流程设置 $smarty->assign('config', $_CFG); */ /* * 取得订单信息 */ $order = flow_order_info(); /* 计算折扣 */ if ($flow_type != CART_EXCHANGE_GOODS && $flow_type != CART_GROUP_BUY_GOODS) { $discount = compute_discount(); } /* * 计算订单的费用 */ $total = order_fee($order, $cart_goods, $consignee); #取得配送列表 $region = array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district']); #快递方式集合 $shipping_list = available_shipping_list($region); #购物车重量 $cart_weight_price = cart_weight_price($flow_type); $insure_disabled = true; $cod_disabled = true; #查看购物车中是否全为免运费商品,若是则把运费赋为零s $sql = 'SELECT count(*) FROM ' . $ecs->table('cart') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 0"; $shipping_count = $db->getOne($sql); foreach ($shipping_list AS $key => $val) { $shipping_cfg = unserialize_config($val['configure']); $shipping_fee = ($shipping_count == 0 AND $cart_weight_price['free_shipping'] == 1) ? 0 : shipping_fee($val['shipping_code'], unserialize($val['configure']), $cart_weight_price['weight'], $cart_weight_price['amount'], $cart_weight_price['number']); $shipping_list[$key]['format_shipping_fee'] = price_format($shipping_fee, false); $shipping_list[$key]['shipping_fee'] = $shipping_fee; $shipping_list[$key]['free_money'] = price_format($shipping_cfg['free_money'], false); $shipping_list[$key]['insure_formated'] = strpos($val['insure'], '%') === false ? price_format($val['insure'], false) : $val['insure']; #当前的配送方式是否支持保价 if ($val['shipping_id'] == $order['shipping_id']) { $insure_disabled = ($val['insure'] == 0); $cod_disabled = ($val['support_cod'] == 0); } } #取得支付列表 if ($order['shipping_id'] == 0) { $cod = true; $cod_fee = 0; } else { $shipping = shipping_info($order['shipping_id']); $cod = $shipping['support_cod']; if ($cod) { #如果是团购,且保证金大于0,不能使用货到付款 if ($flow_type == CART_GROUP_BUY_GOODS) { $group_buy_id = $_SESSION['extension_id']; if ($group_buy_id <= 0) { show_message('error group_buy_id'); } $group_buy = group_buy_info($group_buy_id); if (empty($group_buy)) { show_message('group buy not exists: ' . $group_buy_id); } if ($group_buy['deposit'] > 0) { $cod = false; $cod_fee = 0; #赋值保证金 $smarty->assign('gb_deposit', $group_buy['deposit']); } } if ($cod) { $shipping_area_info = shipping_area_info($order['shipping_id'], $region); $cod_fee = $shipping_area_info['pay_fee']; } } else { $cod_fee = 0; } } # 给货到付款的手续费加<span id>,以便改变配送的时候动态显示 $payment_list = available_payment_list(1, $cod_fee); if(isset($payment_list)) { foreach ($payment_list as $key => $payment) { if ($payment['is_cod'] == '1') { $payment_list[$key]['format_pay_fee'] = '<span id="ECS_CODFEE">' . $payment['format_pay_fee'] . '</span>'; } #如果有易宝神州行支付 如果订单金额大于300 则不显示 if ($payment['pay_code'] == 'yeepayszx' && $total['amount'] > 300) { unset($payment_list[$key]); } #如果有余额支付 if ($payment['pay_code'] == 'balance') { #如果未登录,不显示 if ($_SESSION['user_id'] == 0) { unset($payment_list[$key]); } else { if ($_SESSION['flow_order']['pay_id'] == $payment['pay_id']) { $smarty->assign('disable_surplus', 1); } } } } } $pack_list = array(); $card_list = array(); /* 取得包装与贺卡 */ if ($total['real_goods_count'] > 0) { #只有有实体商品,才要判断包装和贺卡 if (!isset($_CFG['use_package']) || $_CFG['use_package'] == '1') { #如果使用包装,取得包装列表及用户选择的包装 $pack_list = pack_list(); } #如果使用贺卡,取得贺卡列表及用户选择的贺卡 if (!isset($_CFG['use_card']) || $_CFG['use_card'] == '1') { $card_list = card_list(); } } /* $user_info = user_info($_SESSION['user_id']); #如果使用余额,取得用户余额 if ((!isset($_CFG['use_surplus']) || $_CFG['use_surplus'] == '1') && $_SESSION['user_id'] > 0 && $user_info['user_money'] > 0) { // 能使用余额 $smarty->assign('allow_use_surplus', 1); $smarty->assign('your_surplus', $user_info['user_money']); } #如果使用积分,取得用户可用积分及本订单最多可以使用的积分 if ((!isset($_CFG['use_integral']) || $_CFG['use_integral'] == '1') && $_SESSION['user_id'] > 0 && $user_info['pay_points'] > 0 && ($flow_type != CART_GROUP_BUY_GOODS && $flow_type != CART_EXCHANGE_GOODS)) { // 能使用积分 $smarty->assign('allow_use_integral', 1); $smarty->assign('order_max_integral', flow_available_points()); // 可用积分 $smarty->assign('your_integral', $user_info['pay_points']); // 用户积分 }*/ #如果使用红包,取得用户可以使用的红包及用户选择的红包 if ((!isset($_CFG['use_bonus']) || $_CFG['use_bonus'] == '1') && ($flow_type != CART_GROUP_BUY_GOODS && $flow_type != CART_EXCHANGE_GOODS)) { #取得用户可用红包 $user_bonus = zy_user_bonus($_SESSION['user_id'], $total['goods_price']); if (!empty($user_bonus)) { foreach ($user_bonus AS $key => $val) { $user_bonus[$key]['bonus_money_formated'] = price_format($val['type_money'], false); } } #能使用红包 //$smarty->assign('allow_use_bonus', 1); } /* # 如果使用缺货处理,取得缺货处理列表 if (!isset($_CFG['use_how_oos']) || $_CFG['use_how_oos'] == '1') { if (is_array($GLOBALS['_LANG']['oos']) && !empty($GLOBALS['_LANG']['oos'])) { $smarty->assign('how_oos_list', $GLOBALS['_LANG']['oos']); } }*/ #如果能开发票,取得发票内容列表 if ((!isset($_CFG['can_invoice']) || $_CFG['can_invoice'] == '1') && isset($_CFG['invoice_content']) && trim($_CFG['invoice_content']) != '' && $flow_type != CART_EXCHANGE_GOODS) { $inv_content_list = explode("\n", str_replace("\r", '', $_CFG['invoice_content'])); $inv_type_list = array(); foreach ($_CFG['invoice_type']['type'] as $key => $type) { if (!empty($type)) { $inv_type_list[$type] = $type . ' [' . floatval($_CFG['invoice_type']['rate'][$key]) . '%]'; } } $inv_content_list = implode(",", $inv_content_list); $inv_list = array ('inv_content_list'=>$inv_content_list,'inv_type_list'=>$inv_type_list); } #保存session $_SESSION['flow_order'] = $order; /* $pay_code = rpcLang('flow.php', 'pay_code_name'); foreach ($payment_list as $value) { foreach ($value as $k=>$v){ if (strpos($v, $pay_code) !== false) { $payment_list = $value; $payment_list = preg_replace('/<.*?>|\[.*?\]/', '', $payment_list); $payment_list = array($payment_list); } } }*/ $checkout_order = array('cart_goods'=>$cart_goods, 'total'=>$total, 'pack_list'=>$pack_list, 'card_list'=>$card_list, 'shipping_list'=>$shipping_list, 'payment_list'=>$payment_list, 'inv_list'=>$inv_list, 'consignee'=>$consignee,); if (!empty($user_bonus)) { $checkout_order ['user_bonus'] = $user_bonus; } // print_r($checkout_order);die; jsonExit($checkout_order); }
/* ajax获取运费 */ if ($action == 'get_shipping_fee') { require ROOT_PATH . 'includes/cls_json.php'; $region = array(); $json = new JSON(); $result = array('error' => 0, 'message' => '', 'content' => ''); $_POST['goods'] = strip_tags(urldecode($_POST['goods'])); $_POST['goods'] = json_str_iconv($_POST['goods']); $goods = $json->decode($_POST['goods']); $region['country'] = $goods->country; $region['province'] = $goods->province; $region['city'] = $goods->city; $region['district'] = $goods->district; $goods_weight = $goods->goods_weight; $shipping_info = shipping_area_info($shipping_id, $region); $shipping_fee = shipping_fee($shipping_info['shipping_code'], $shipping_info['configure'], $goods_weight, '0', '0'); $result['content'] = $shipping_fee; die($json->encode($result)); } /* ajax获取运单状态 */ if ($action == 'get_OrderStatus') { require ROOT_PATH . 'includes/cls_json.php'; require ROOT_PATH . 'includes/cls_captcha.php'; $json = new JSON(); $result = array('error' => 0, 'message' => '', 'content' => ''); $_POST['order'] = strip_tags(urldecode($_POST['order'])); $_POST['order'] = json_str_iconv($_POST['order']); $order = $json->decode($_POST['order']); $validator = new captcha(); if (!$validator->check_word($order->captcha)) { $result['content'] = '验证码不正确!';
$transportModel = !empty($_REQUEST['transportModel']) ? $_REQUEST['transportModel'] : ''; $postData = array(orderType => $orderType, qty => $qty, productAttr => $productAttr, qtyOfPackage => $qtyOfPackage, packWeight => $packWeight, packVolume => $packVolume, HSCode => $HSCode, originCityCode => $originCityCode, destCityCode => $destCityCode, transportModel => $transportModel); $postUrl = "http://www.234plog.com/eCloudsService/ecshippingcost/"; //可做成配置项 echo json_encode(http_post($postUrl, $postData, $_COOKIE)); exit; } /*------------------------------------------------------ */ //-- PROCESSOR /*------------------------------------------------------ */ //$sql ="select * from jindong_shipping WHERE shipping_id = 8"; //$res = $db->getAll($sql); /*ross 在 产品详情页 显示 运费*/ $shipping_list = available_shipping_list([2]); foreach ($shipping_list as $key => $val) { $shipping_fee = ($shipping_count == 0 and $cart_weight_price['free_shipping'] == 1) ? 0 : shipping_fee($val['shipping_code'], unserialize($val['configure']), $goods_weight, $goods_amount, 1); } $goods2 = get_goods_info($goods_id); if ($goods2['is_shipping']) { $shipping_fee = 0; } $smarty->assign('shipping_fee', $shipping_fee); /*ross 在 产品详情页 显示 运费*/ $cache_id = $goods_id . '-' . $_SESSION['user_rank'] . '-' . $_CFG['lang']; $cache_id = sprintf('%X', crc32($cache_id)); if (!$smarty->is_cached('goods.dwt', $cache_id)) { $smarty->assign('image_width', $_CFG['image_width']); $smarty->assign('image_height', $_CFG['image_height']); $smarty->assign('helps', get_shop_help()); // 网店帮助 $smarty->assign('id', $goods_id);
/** * 获取不同商家的运费方式 **/ function insert_get_shop_shipping($arr) { global $db, $ecs; $need_cache = $GLOBALS['smarty']->caching; $need_compile = $GLOBALS['smarty']->force_compile; $order = $_SESSION['flow_order']; //获取订单信息 $suppid = intval($arr['suppid']); $consignee = $arr['consignee']; $flow_type = $arr['flow_type']; $region = array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district']); $shipping_list = available_shipping_list($region, $suppid); $cart_weight_price = cart_weight_price2($flow_type, $suppid); if (count($shipping_list) > 0) { //获取当前地址下所有的配送方式 $shipping_id = array(); foreach ($shipping_list as $v) { $shipping_id[] = $v['shipping_id']; } $i = 0; $sql_where = $_SESSION['user_id'] > 0 ? "user_id='" . $_SESSION['user_id'] . "' " : "session_id = '" . SESS_ID . "' AND user_id=0 "; $sql = 'SELECT count(*) FROM ' . $ecs->table('cart') . " WHERE {$sql_where} AND `extension_code` != 'package_buy' AND `is_shipping` = 0 AND rec_id in (" . $_SESSION['sel_cartgoods'] . ")"; //jx $shipping_count = $db->getOne($sql); foreach ($shipping_list as $key => $val) { $shipping_cfg = unserialize_config($val['configure']); $shipping_fee = $shipping_count == 0 && $cart_weight_price['free_shipping'] == 1 ? 0 : shipping_fee($val['shipping_code'], unserialize($val['configure']), $cart_weight_price['weight'], $cart_weight_price['amount'], $cart_weight_price['number']); $shipping_list[$key]['format_shipping_fee'] = price_format($shipping_fee, false); $shipping_list[$key]['shipping_fee'] = $shipping_fee; $shipping_list[$key]['free_money'] = price_format($shipping_cfg['free_money'], false); $shipping_list[$key]['insure_formated'] = strpos($val['insure'], '%') === false ? price_format($val['insure'], false) : $val['insure']; $selected = ''; if ($i == 0 && !in_array($order['shipping_pay'][$suppid], $shipping_id)) { $selected = 'selected'; $order['shipping_pay'][$suppid] = $val['shipping_id']; //记录第一个被选中的配送方式的id } if (isset($order['shipping_pay'][$suppid]) && intval($order['shipping_pay'][$suppid]) == $val['shipping_id'] && in_array($order['shipping_pay'][$suppid], $shipping_id)) { $selected = 'selected'; } $shipping_list[$key]['selected'] = $selected; // 当前的配送方式是否支持保价 if ($val['shipping_id'] == $order['shipping_id']) { $insure_disabled = $val['insure'] == 0; $cod_disabled = $val['support_cod'] == 0; } } } $GLOBALS['smarty']->assign('suppid', $suppid); $GLOBALS['smarty']->assign('shipping_list', $shipping_list); $GLOBALS['smarty']->assign('insure_disabled', $insure_disabled); $GLOBALS['smarty']->assign('cod_disabled', $cod_disabled); $GLOBALS['smarty']->caching = $need_cache; $GLOBALS['smarty']->force_compile = $need_compile; $val = $GLOBALS['smarty']->fetch('library/shipping_list.lbi'); $_SESSION['flow_order'] = $order; return $val; }
$transportModel = !empty($_REQUEST['transportModel']) ? $_REQUEST['transportModel'] : ''; $postData = array(orderType => $orderType, qty => $qty, productAttr => $productAttr, qtyOfPackage => $qtyOfPackage, packWeight => $packWeight, packVolume => $packVolume, HSCode => $HSCode, originCityCode => $originCityCode, destCityCode => $destCityCode, transportModel => $transportModel); $postUrl = "http://www.234plog.com/eCloudsService/ecshippingcost/"; //可做成配置项 echo json_encode(http_post($postUrl, $postData, $_COOKIE)); exit; } /*------------------------------------------------------ */ //-- PROCESSOR /*------------------------------------------------------ */ //$sql ="select * from jindong_shipping WHERE shipping_id = 8"; //$res = $db->getAll($sql); /*ross 在 产品详情页 显示 运费*/ $shipping_list = available_shipping_list([2]); foreach ($shipping_list as $key => $val) { $shipping_fee = ($shipping_count == 0 and $cart_weight_price['free_shipping'] == 1) ? 0 : shipping_fee($val['shipping_code'], unserialize($val['configure']), 152.4, 3840, 1); } $goods2 = get_goods_info($goods_id); if ($goods2['is_shipping']) { $shipping_fee = 0; } $smarty->assign('shipping_fee', $shipping_fee); /*ross 在 产品详情页 显示 运费*/ $cache_id = $goods_id . '-' . $_SESSION['user_rank'] . '-' . $_CFG['lang']; $cache_id = sprintf('%X', crc32($cache_id)); if (!$smarty->is_cached('goods.dwt', $cache_id)) { $smarty->assign('image_width', $_CFG['image_width']); $smarty->assign('image_height', $_CFG['image_height']); $smarty->assign('helps', get_shop_help()); // 网店帮助 $smarty->assign('id', $goods_id);