Example #1
0
                 }
             }
         }
     }
 } 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 {
         /* 不存在实体商品 */
Example #2
0
/**
 * 合并订单
 * @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;
}
Example #3
0
 /**
  * 获得订单中的费用信息
  *
  * @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;
 }
Example #4
0
 $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'];
Example #5
0
         }
         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'];
Example #6
0
// 页面标题
$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');
Example #7
0
 /**
  * 订单确认
  */
 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');
 }
Example #8
0
 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);
 }
Example #9
0
	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);
	}
Example #10
0
/* 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'] = '验证码不正确!';
Example #11
0
    $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);
Example #12
0
/**
* 获取不同商家的运费方式
**/
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);