Пример #1
0
    function respond() {
        
        ini_set("display_errors","On");
        $where = array('ologin_code'=>front::$get['ologin_code']);
        $ologins = ologin::getInstance()->getrows($where);
        $ologin = unserialize_config($ologins[0]['ologin_config']);

        //var_dump($ologin);
        
        $aliapy_config['partner'] = $ologin['alipaylogin_id'];
        $aliapy_config['key'] = $ologin['alipaylogin_key'];
        $aliapy_config['return_url'] = ologin::url(basename(__FILE__,'.php'));
        $aliapy_config['sign_type']    = 'MD5';
        $aliapy_config['input_charset']= 'utf-8';
        $aliapy_config['transport']    = 'http';
        $aliapy_config['cacert']    = getcwd().'/lib/plugins/alipayauth/cacert.pem';
        //var_dump($aliapy_config);
        unset($_GET['case']);unset($_GET['act']);unset($_GET['ologin_code']);unset($_GET['site']);
        require_once("alipayauth/alipay_notify.class.php");
        $alipayNotify = new AlipayNotify($aliapy_config);
        //var_dump($alipayNotify);
        $verify_result = $alipayNotify->verifyReturn();
        //var_dump($verify_result);
        if($verify_result) {//验证成功
            $user_id = front::$get['user_id'];
            $token = front::$get['token'];
            session::set('access_token',$token);
            session::set("openid",$user_id);
            return array('nickname'=>  front::get('real_name'));
        }
        else {
            echo "验证失败";exit;
        }
    }
Пример #2
0
 /**
  * 服务器端 POST形式响应
  */
 public function respond_post()
 {
     $_POST['code'] = $_POST['code'] ? $_POST['code'] : $_GET['code'];
     if ($_POST['code']) {
         $payment = $this->get_by_code($_POST['code']);
         if (!$payment) {
             error_log(date('m-d H:i:s', SYS_TIME) . '| POST: payment is null |' . "\r\n", 3, CACHE_PATH . 'pay_error_log.php');
         }
         $cfg = unserialize_config($payment['config']);
         $pay_name = ucwords($payment['pay_code']);
         pc_base::load_app_class('pay_factory', '', 0);
         $payment_handler = new pay_factory($pay_name, $cfg);
         $return_data = $payment_handler->notify();
         if ($return_data) {
             if ($return_data['order_status'] == 0) {
                 $this->update_member_amount_by_sn($return_data['order_id']);
             }
             $this->update_recode_status_by_sn($return_data['order_id'], $return_data['order_status']);
             $result = TRUE;
         } else {
             $result = FALSE;
         }
         $payment_handler->response($result);
     }
 }
Пример #3
0
 function respond() {
     $logintype = front::$get['ologin_code'];
     $where = array('ologin_code' => $logintype);
     $ologins = ologin::getInstance()->getrows($where);
     $ologin_cfg = unserialize_config($ologins[0]['ologin_config']);
     $this->qq_callback($ologin_cfg);
     return $this->get_openid($ologin_cfg);
 }
Пример #4
0
 function ologin_action(){
     $logintype = $_GET['logtype'];
     $where = array('ologin_code'=>$logintype);
     $ologins = ologin::getInstance()->getrows($where);
     include_once ROOT.'/lib/plugins/ologin/'.$logintype.'.php';
     $loginobj = new $logintype();
     $url = $loginobj->get_code(unserialize_config($ologins[0]['ologin_config']));
     @header("Location: $url");
     exit;
 }
Пример #5
0
/**
 * 取得某配送方式对应于某收货地址的区域信息
 * @param   int     $shipping_id        配送方式id
 * @param   array   $region_id_list     收货人地区id数组
 * @return  array   配送区域信息(config 对应着反序列化的 configure)
 */
function shipping_area_info($shipping_id, $region_id_list)
{
    $sql = 'SELECT s.shipping_code, s.shipping_name, ' . 's.shipping_desc, s.insure, s.support_cod, a.configure ' . 'FROM ' . $GLOBALS['ecs']->table('shipping') . ' AS s, ' . $GLOBALS['ecs']->table('shipping_area') . ' AS a, ' . $GLOBALS['ecs']->table('area_region') . ' AS r ' . "WHERE s.shipping_id = '{$shipping_id}' " . 'AND r.region_id ' . db_create_in($region_id_list) . ' AND r.shipping_area_id = a.shipping_area_id AND a.shipping_id = s.shipping_id AND s.enabled = 1';
    $row = $GLOBALS['db']->getRow($sql);
    if (!empty($row)) {
        $shipping_config = unserialize_config($row['configure']);
        if (isset($shipping_config['pay_fee'])) {
            if (strpos($shipping_config['pay_fee'], '%') !== false) {
                $row['pay_fee'] = floatval($shipping_config['pay_fee']) . '%';
            } else {
                $row['pay_fee'] = floatval($shipping_config['pay_fee']);
            }
        } else {
            $row['pay_fee'] = 0.0;
        }
    }
    return $row;
}
 /**
  * --------------------------------------------------------------
  * 服务器端get响应
  * --------------------------------------------------------------
  * 返回成功提示,5秒后跳转到指定页面
  */
 public function respondGet($code = '')
 {
     if (empty($code)) {
         return false;
     }
     \Omnipay::setGateway($code);
     $resquest = \Omnipay::completePurchase(['request_params' => \Input::all()]);
     $response = $resquest->send();
     if ($response->isSuccessful()) {
         //TODO
         //验证成功
         //更新账户余额
         //更新订单状态
     } else {
     }
     if ($code) {
         $payment = $this->get_by_code($_GET['code']);
         if (!$payment) {
             showmessage(L('payment_failed'));
         }
         $cfg = unserialize_config($payment['config']);
         $pay_name = ucwords($payment['pay_code']);
         pc_base::load_app_class('pay_factory', '', 0);
         $payment_handler = new pay_factory($pay_name, $cfg);
         $return_data = $payment_handler->receive();
         if ($return_data) {
             if ($return_data['order_status'] == 0) {
                 $this->update_member_amount_by_sn($return_data['order_id']);
             }
             $this->update_recode_status_by_sn($return_data['order_id'], $return_data['order_status']);
             //支付成功
             //showmessage(L('pay_success'),APP_PATH.'index.php?m=pay&c=deposit');
         } else {
             //支付失败
             //showmessage(L('pay_failed'),APP_PATH.'index.php?m=pay&c=deposit');
         }
     } else {
         //支付成功
     }
 }
Пример #7
0
 /**
  *  提交订单
  */
 public function done()
 {
     /* 取得购物类型 */
     $flow_type = isset($_SESSION['flow_type']) ? intval($_SESSION['flow_type']) : CART_GENERAL_GOODS;
     /* 检查购物车中是否有商品 */
     $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 (C('use_storage') == '1' && C('stock_dec_time') == SDT_PLACE) {
         $cart_goods_stock = model('Order')->get_cart_goods();
         $_cart_goods_stock = array();
         foreach ($cart_goods_stock['goods_list'] as $value) {
             $_cart_goods_stock[$value['rec_id']] = $value['goods_number'];
         }
         model('Flow')->flow_cart_stock($_cart_goods_stock);
         unset($cart_goods_stock, $_cart_goods_stock);
     }
     // 检查用户是否已经登录 如果用户已经登录了则检查是否有默认的收货地址 如果没有登录则跳转到登录和注册页面
     if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0) {
         /* 用户没有登录且没有选定匿名购物,转向到登录页面 */
         ecs_header("Location: " . url('user/login') . "\n");
     }
     // 获取收货人信息
     $consignee = model('Order')->get_consignee($_SESSION['user_id']);
     /* 检查收货人信息是否完整 */
     if (!model('Order')->check_consignee_info($consignee, $flow_type)) {
         /* 如果不完整则转向到收货人信息填写界面 */
         ecs_header("Location: " . url('flow/consignee') . "\n");
     }
     // 处理接收信息
     $how_oos = I('post.how_oos', 0);
     $inv_type = I('post.inv_type', '');
     $inv_payee = I('post.inv_payee', '');
     $inv_content = I('post.inv_content', '');
     $postscript = I('post.postscript', '');
     $oos = L('oos.' . $how_oos);
     // 订单信息
     $order = array('shipping_id' => I('post.shipping'), 'pay_id' => I('post.payment'), 'surplus' => isset($_POST['surplus']) ? floatval($_POST['surplus']) : 0.0, 'integral' => isset($_POST['integral']) ? intval($_POST['integral']) : 0, 'need_inv' => empty($_POST['need_inv']) ? 0 : 1, 'inv_type' => $_POST['inv_type'], 'inv_payee' => trim($_POST['inv_payee']), 'inv_content' => $_POST['inv_content'], 'postscript' => trim($_POST['postscript']), 'how_oos' => isset($oos) ? addslashes("{$oos}") : '', 'need_insure' => isset($_POST['need_insure']) ? intval($_POST['need_insure']) : 0, 'user_id' => $_SESSION['user_id'], 'add_time' => gmtime(), 'order_status' => OS_UNCONFIRMED, 'shipping_status' => SS_UNSHIPPED, 'pay_status' => PS_UNPAYED, 'agency_id' => model('Order')->get_agency_by_regions(array($consignee['country'], $consignee['province'], $consignee['city'], $consignee['district'])), 'mobile_order' => 1, 'mobile_pay' => 1);
     /* 扩展信息 */
     if (isset($_SESSION['flow_type']) && intval($_SESSION['flow_type']) != CART_GENERAL_GOODS) {
         $order['extension_code'] = $_SESSION['extension_code'];
         $order['extension_id'] = $_SESSION['extension_id'];
     } else {
         $order['extension_code'] = '';
         $order['extension_id'] = 0;
     }
     /* 检查积分余额是否合法 */
     $user_id = $_SESSION['user_id'];
     if ($user_id > 0) {
         $user_info = model('Order')->user_info($user_id);
         $order['surplus'] = min($order['surplus'], $user_info['user_money'] + $user_info['credit_line']);
         if ($order['surplus'] < 0) {
             $order['surplus'] = 0;
         }
         // 查询用户有多少积分
         $flow_points = model('Flow')->flow_available_points();
         // 该订单允许使用的积分
         $user_points = $user_info['pay_points'];
         // 用户的积分总数
         $order['integral'] = min($order['integral'], $user_points, $flow_points);
         if ($order['integral'] < 0) {
             $order['integral'] = 0;
         }
     } else {
         $order['surplus'] = 0;
         $order['integral'] = 0;
     }
     /* 订单中的商品 */
     $cart_goods = model('Order')->cart_goods($flow_type);
     if (empty($cart_goods)) {
         show_message(L('no_goods_in_cart'), L('back_home'), './', 'warning');
     }
     /* 检查商品总额是否达到最低限购金额 */
     if ($flow_type == CART_GENERAL_GOODS && model('Order')->cart_amount(true, CART_GENERAL_GOODS) < C('min_goods_amount')) {
         show_message(sprintf(L('goods_amount_not_enough'), price_format(C('min_goods_amount'), false)));
     }
     /* 收货人信息 */
     foreach ($consignee as $key => $value) {
         $order[$key] = addslashes($value);
     }
     /* 判断是不是实体商品 */
     foreach ($cart_goods as $val) {
         /* 统计实体商品的个数 */
         if ($val['is_real']) {
             $is_real_good = 1;
         }
     }
     if (isset($is_real_good)) {
         $res = $this->model->table('shipping')->field('shipping_id')->where("shipping_id=" . $order['shipping_id'] . " AND enabled =1")->getOne();
         if (!$res) {
             show_message(L('flow_no_shipping'));
         }
     }
     /* 订单中的总额 */
     $total = model('Users')->order_fee($order, $cart_goods, $consignee);
     $order['goods_amount'] = $total['goods_price'];
     $order['discount'] = $total['discount'];
     $order['surplus'] = $total['surplus'];
     $order['tax'] = $total['tax'];
     // 购物车中的商品能享受红包支付的总额
     $discount_amout = model('Order')->compute_discount_amount();
     // 红包和积分最多能支付的金额为商品总额
     $temp_amout = $order['goods_amount'] - $discount_amout;
     /* 配送方式 */
     if ($order['shipping_id'] > 0) {
         $shipping = model('Shipping')->shipping_info($order['shipping_id']);
         $order['shipping_name'] = addslashes($shipping['shipping_name']);
     }
     $order['shipping_fee'] = $total['shipping_fee'];
     $order['insure_fee'] = $total['shipping_insure'];
     /* 支付方式 */
     if ($order['pay_id'] > 0) {
         $payment = model('Order')->payment_info($order['pay_id']);
         $order['pay_name'] = addslashes($payment['pay_name']);
     }
     $order['pay_fee'] = $total['pay_fee'];
     $order['cod_fee'] = $total['cod_fee'];
     $order['order_amount'] = number_format($total['amount'], 2, '.', '');
     /* 如果全部使用余额支付,检查余额是否足够 */
     if ($payment['pay_code'] == 'balance' && $order['order_amount'] > 0) {
         if ($order['surplus'] > 0) {
             // 余额支付里如果输入了一个金额
             $order['order_amount'] = $order['order_amount'] + $order['surplus'];
             $order['surplus'] = 0;
         }
         if ($order['order_amount'] > $user_info['user_money'] + $user_info['credit_line']) {
             show_message(L('balance_not_enough'));
         } else {
             $order['surplus'] = $order['order_amount'];
             $order['order_amount'] = 0;
         }
     }
     /* 如果订单金额为0(使用余额或积分或红包支付),修改订单状态为已确认、已付款 */
     if ($order['order_amount'] <= 0) {
         $order['order_status'] = OS_CONFIRMED;
         $order['confirm_time'] = gmtime();
         $order['pay_status'] = PS_PAYED;
         $order['pay_time'] = gmtime();
         $order['order_amount'] = 0;
     }
     $order['integral_money'] = $total['integral_money'];
     $order['integral'] = $total['integral'];
     if ($order['extension_code'] == 'exchange_goods') {
         $order['integral_money'] = 0;
         $order['integral'] = $total['exchange_integral'];
     }
     $order['from_ad'] = !empty($_SESSION['from_ad']) ? $_SESSION['from_ad'] : '0';
     $order['referer'] = !empty($_SESSION['referer']) ? addslashes($_SESSION['referer']) : '';
     /* 记录扩展信息 */
     if ($flow_type != CART_GENERAL_GOODS) {
         $order['extension_code'] = $_SESSION['extension_code'];
         $order['extension_id'] = $_SESSION['extension_id'];
     }
     $affiliate = unserialize(C('affiliate'));
     if (isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 1) {
         // 推荐订单分成
         $parent_id = model('Users')->get_affiliate();
         if ($user_id == $parent_id) {
             $parent_id = 0;
         }
     } elseif (isset($affiliate['on']) && $affiliate['on'] == 1 && $affiliate['config']['separate_by'] == 0) {
         // 推荐注册分成
         $parent_id = 0;
     } else {
         // 分成功能关闭
         $parent_id = 0;
     }
     $order['parent_id'] = $parent_id;
     //分销 start
     $parent_id = model('Sale')->get_parent_id($parent_id);
     $order['parent_id'] = $parent_id;
     /* 插入订单表 */
     $error_no = 0;
     do {
         $order['order_sn'] = get_order_sn();
         // 获取新订单号
         $new_order = model('Common')->filter_field('order_info', $order);
         $this->model->table('order_info')->data($new_order)->insert();
         $error_no = M()->errno();
         if ($error_no > 0 && $error_no != 1062) {
             die(M()->errorMsg());
         }
     } while ($error_no == 1062);
     // 如果是订单号重复则重新提交数据
     $new_order_id = M()->insert_id();
     $order['order_id'] = $new_order_id;
     /* 插入订单商品 */
     $sql = "INSERT INTO " . $this->model->pre . "order_goods( " . "order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) " . " SELECT '{$new_order_id}', goods_id, goods_name, goods_sn, product_id, goods_number, market_price, " . "goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id" . " FROM " . $this->model->pre . "cart WHERE session_id = '" . SESS_ID . "' AND rec_type = '{$flow_type}'";
     $this->model->query($sql);
     /* 处理余额、积分、红包 */
     if ($order['user_id'] > 0 && $order['surplus'] > 0) {
         model('ClipsBase')->log_account_change($order['user_id'], $order['surplus'] * -1, 0, 0, 0, sprintf(L('pay_order'), $order['order_sn']));
     }
     if ($order['user_id'] > 0 && $order['integral'] > 0) {
         model('ClipsBase')->log_account_change($order['user_id'], 0, 0, 0, $order['integral'] * -1, sprintf(L('pay_order'), $order['order_sn']));
     }
     /* 如果使用库存,且下订单时减库存,则减少库存 */
     if (C('use_storage') == '1' && C('stock_dec_time') == SDT_PLACE) {
         model('Order')->change_order_goods_storage($order['order_id'], true, SDT_PLACE);
     }
     /* 给商家发邮件 */
     /* 增加是否给客服发送邮件选项 */
     if (C('send_service_email') && C('service_email') != '') {
         $tpl = model('Base')->get_mail_template('remind_of_new_order');
         $this->assign('order', $order);
         $this->assign('goods_list', $cart_goods);
         $this->assign('shop_name', C('shop_name'));
         $this->assign('send_date', date(C('time_format')));
         $content = ECTouch::$view->fetch('str:' . $tpl['template_content']);
         send_mail(C('shop_name'), C('service_email'), $tpl['template_subject'], $content, $tpl['is_html']);
     }
     /* 如果需要,发短信 */
     if (C('sms_order_placed') == '1' && C('sms_shop_mobile') != '') {
         $sms = new EcsSms();
         $msg = $order['pay_status'] == PS_UNPAYED ? L('order_placed_sms') : L('order_placed_sms') . '[' . L('sms_paid') . ']';
         $sms->send(C('sms_shop_mobile'), sprintf($msg, $order['consignee'], $order['mobile']), '', 13, 1);
     }
     /* 如果需要,微信通知 by wanglu */
     if (method_exists('WechatController', 'do_oauth')) {
         $order_url = __HOST__ . url('user/order_detail', array('order_id' => $order['order_id']));
         $order_url = urlencode(base64_encode($order_url));
         send_wechat_message('order_remind', '', $order['order_sn'] . L('order_effective'), $order_url, $order['order_sn']);
     }
     /* 如果订单金额为0 处理虚拟卡 */
     if ($order['order_amount'] <= 0) {
         $sql = "SELECT goods_id, goods_name, goods_number AS num FROM " . $this->model->pre . "cart WHERE is_real = 0 AND extension_code = 'virtual_card'" . " AND session_id = '" . SESS_ID . "' AND rec_type = '{$flow_type}'";
         $res = $this->model->query($sql);
         $virtual_goods = array();
         foreach ($res as $row) {
             $virtual_goods['virtual_card'][] = array('goods_id' => $row['goods_id'], 'goods_name' => $row['goods_name'], 'num' => $row['num']);
         }
         if ($virtual_goods) {
             /* 虚拟卡发货 */
             if (model('OrderBase')->virtual_goods_ship($virtual_goods, $msg, $order['order_sn'], true)) {
                 /* 如果没有实体商品,修改发货状态,送积分和红包 */
                 $count = $this->model->table('order_goods')->field('COUNT(*)')->where("order_id = '{$order['order_id']}' " . " AND is_real = 1")->getOne();
                 if ($count <= 0) {
                     /* 修改订单状态 */
                     model('Users')->update_order($order['order_id'], array('shipping_status' => SS_SHIPPED, 'shipping_time' => gmtime()));
                     /* 如果订单用户不为空,计算积分,并发给用户;发红包 */
                     if ($order['user_id'] > 0) {
                         /* 取得用户信息 */
                         $user = model('Order')->user_info($order['user_id']);
                         /* 计算并发放积分 */
                         $integral = model('Order')->integral_to_give($order);
                         model('ClipsBase')->log_account_change($order['user_id'], 0, 0, intval($integral['rank_points']), intval($integral['custom_points']), sprintf(L('order_gift_integral'), $order['order_sn']));
                     }
                 }
             }
         }
     }
     // 销量
     model('Flow')->add_touch_goods($flow_type, $order['extension_code']);
     /* 记录供应商信息 */
     $sql = "update " . $this->model->pre . "order_goods og , " . $this->model->pre . "goods g set og.suppliers_id=g.suppliers_id\r\n            where og.goods_id=g.goods_id and og.order_id='" . $order['order_id'] . "'";
     $this->model->query($sql);
     /* 清空购物车 */
     model('Order')->clear_cart($flow_type);
     /* 清除缓存,否则买了商品,但是前台页面读取缓存,商品数量不减少 */
     clear_all_files();
     /* 插入支付日志 */
     $order['log_id'] = model('ClipsBase')->insert_pay_log($new_order_id, $order['order_amount'], PAY_ORDER);
     /* 取得支付信息,生成支付代码 */
     if ($order['order_amount'] > 0) {
         $payment = model('Order')->payment_info($order['pay_id']);
         include_once ROOT_PATH . 'plugins/payment/' . $payment['pay_code'] . '.php';
         $pay_obj = new $payment['pay_code']();
         $pay_online = $pay_obj->get_code($order, unserialize_config($payment['pay_config']));
         $order['pay_desc'] = $payment['pay_desc'];
         $this->assign('pay_online', $pay_online);
     }
     if (!empty($order['shipping_name'])) {
         $order['shipping_name'] = trim(stripcslashes($order['shipping_name']));
     }
     // 货到付款不显示
     if ($payment['pay_code'] != 'balance') {
         /* 生成订单后,修改支付,配送方式 */
         // 支付方式
         $payment_list = model('Order')->available_payment_list(0);
         if (isset($payment_list)) {
             foreach ($payment_list as $key => $payment) {
                 /* 如果有易宝神州行支付 如果订单金额大于300 则不显示 */
                 if ($payment['pay_code'] == 'yeepayszx' && $total['amount'] > 300) {
                     unset($payment_list[$key]);
                 }
                 // 过滤掉当前的支付方式
                 if ($payment['pay_id'] == $order['pay_id']) {
                     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);
         $this->assign('pay_code', 'no_balance');
     }
     // 如果是银行汇款或货到付款 则显示支付描述
     if ($payment['pay_code'] == 'bank' || $payment['pay_code'] == 'cod') {
         if (empty($order['pay_name'])) {
             $order['pay_name'] = trim(stripcslashes($payment['pay_name']));
         }
         $this->assign('pay_desc', $order['pay_desc']);
     }
     /* 订单信息 */
     $this->assign('order', $order);
     $this->assign('total', $total);
     $this->assign('goods_list', $cart_goods);
     $this->assign('order_submit_back', sprintf(L('order_submit_back'), L('back_home'), L('goto_user_center')));
     // 返回提示
     user_uc_call('add_feed', array($order['order_id'], BUY_GOODS));
     // 推送feed到uc
     unset($_SESSION['flow_consignee']);
     // 清除session中保存的收货人信息
     unset($_SESSION['flow_order']);
     unset($_SESSION['direct_shopping']);
     $this->assign('currency_format', C('currency_format'));
     $this->assign('integral_scale', C('integral_scale'));
     $this->assign('step', ACTION_NAME);
     $this->assign('title', L('order_submit'));
     $this->display('flow.dwt');
 }
Пример #8
0
 }
 //如果原来的支付方式已禁用或者已删除, 重新选择支付方式
 if ($payment_id == 0) {
     ecs_header("Location: user.php?act=account_deposit&id=" . $surplus_id . "\n");
     exit;
 }
 //获取单条会员帐目信息
 $order = array();
 $order = get_surplus_info($surplus_id);
 //支付方式的信息
 $payment_info = array();
 $payment_info = payment_info($payment_id);
 /* 如果当前支付方式没有被禁用,进行支付的操作 */
 if (!empty($payment_info)) {
     //取得支付信息,生成支付代码
     $payment = unserialize_config($payment_info['pay_config']);
     //生成伪订单号
     $order['order_sn'] = $surplus_id;
     //获取需要支付的log_id
     $order['log_id'] = get_paylog_id($surplus_id, $pay_type = PAY_SURPLUS);
     $order['user_name'] = $_SESSION['user_name'];
     $order['surplus_amount'] = $order['amount'];
     //计算支付手续费用
     $payment_info['pay_fee'] = pay_fee($payment_id, $order['surplus_amount'], 0);
     //计算此次预付款需要支付的总金额
     $order['order_amount'] = $order['surplus_amount'] + $payment_info['pay_fee'];
     //如果支付费用改变了,也要相应的更改pay_log表的order_amount
     $order_amount = $db->getOne("SELECT order_amount FROM " . $ecs->table('pay_log') . " WHERE log_id = '{$order['log_id']}'");
     if ($order_amount != $order['order_amount']) {
         $db->query("UPDATE " . $ecs->table('pay_log') . " SET order_amount = '{$order['order_amount']}' WHERE log_id = '{$order['log_id']}'");
     }
Пример #9
0
 /**
  * 会员通过帐目明细列表进行再付款的操作
  */
 public function pay()
 {
     //变量初始化
     $surplus_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
     $payment_id = isset($_GET['pid']) ? intval($_GET['pid']) : 0;
     if ($surplus_id == 0) {
         ecs_header("Location: " . url('User/account_log'));
         exit;
     }
     //如果原来的支付方式已禁用或者已删除, 重新选择支付方式
     if ($payment_id == 0) {
         ecs_header("Location: " . url('User/account_deposit', array('id' => $surplus_id)));
         exit;
     }
     //获取单条会员帐目信息
     $order = array();
     $order = model('ClipsBase')->get_surplus_info($surplus_id);
     //支付方式的信息
     $payment_info = array();
     $payment_info = model('Order')->payment_info($payment_id);
     /* 如果当前支付方式没有被禁用,进行支付的操作 */
     if (!empty($payment_info)) {
         //取得支付信息,生成支付代码
         $payment = unserialize_config($payment_info['pay_config']);
         //生成伪订单号
         $order['order_sn'] = $surplus_id;
         //获取需要支付的log_id
         $order['log_id'] = model('ClipsBase')->get_paylog_id($surplus_id, $pay_type = PAY_SURPLUS);
         $order['user_name'] = $_SESSION['user_name'];
         $order['surplus_amount'] = $order['amount'];
         //计算支付手续费用
         $payment_info['pay_fee'] = pay_fee($payment_id, $order['surplus_amount'], 0);
         //计算此次预付款需要支付的总金额
         $order['order_amount'] = $order['surplus_amount'] + $payment_info['pay_fee'];
         //如果支付费用改变了,也要相应的更改pay_log表的order_amount
         $order_amount = M()->getOne("SELECT order_amount FROM " . M()->pre . 'pay_log' . " WHERE log_id = '{$order['log_id']}'");
         $this->model->table('order_goods')->field('COUNT(*)')->where("order_id = '{$order['order_id']}' " . " AND is_real = 1")->getOne();
         if ($order_amount != $order['order_amount']) {
             M()->query("UPDATE " . M()->pre . "pay_log SET order_amount = '{$order['order_amount']}' WHERE log_id = '{$order['log_id']}'");
         }
         /* 调用相应的支付方式文件 */
         include_once ROOT_PATH . 'plugins/payment/' . $payment_info['pay_code'] . '.php';
         /* 取得在线支付方式的支付按钮 */
         $pay_obj = new $payment_info['pay_code']();
         $payment_info['pay_button'] = $pay_obj->get_code($order, $payment);
         /* 模板赋值 */
         $this->assign('payment', $payment_info);
         $this->assign('order', $order);
         $this->assign('pay_fee', price_format($payment_info['pay_fee'], false));
         $this->assign('amount', price_format($order['surplus_amount'], false));
         $this->display('user_act_account.dwt');
     } else {
         $this->assign('payment', model('ClipsBase')->get_online_payment_list());
         $this->assign('order', $order);
         $this->display('user_account_deposit.dwt');
     }
 }
Пример #10
0
 /**
  *  获取指订单的详情
  *
  * @access  public
  * @param   int         $order_id       订单ID
  * @param   int         $user_id        用户ID
  *
  * @return   arr        $order          订单所有信息的数组
  */
 function get_order_detail($order_id, $user_id = 0)
 {
     $order_id = intval($order_id);
     if ($order_id <= 0) {
         ECTouch::err()->add(L('invalid_order_id'));
         return false;
     }
     $order = model('Order')->order_info($order_id);
     //切换手机订单的关联的支付方式
     if ($order['mobile_pay'] <= 0) {
         //查询手机版支付方式的配置参数
         $sql = "SELECT pay_id, pay_config FROM " . $this->pre . 'touch_payment';
         $touch_payment_list = $this->query($sql);
         if (is_array($touch_payment_list)) {
             foreach ($touch_payment_list as $vo) {
                 $touch_store = unserialize($vo['pay_config']);
                 /* 取出已经设置属性的code */
                 $touch_code_list = array();
                 foreach ($touch_store as $key => $value) {
                     if ($value['name'] == 'relate_pay' && $value['value'] == $order['pay_id']) {
                         $touch_pay_id = $vo['pay_id'];
                     }
                 }
             }
         }
         // 默认没有设置关联支付方式的
         if ($touch_pay_id <= 0) {
             $payment_list = model('Order')->available_payment_list(false, 0, true);
             /* 过滤掉余额支付方式 */
             if (is_array($payment_list)) {
                 foreach ($payment_list as $key => $payment) {
                     if ($payment['pay_code'] != 'balance') {
                         $touch_pay_id = $payment['pay_id'];
                         break;
                     }
                 }
             }
         }
         /* 检查订单是否未付款和未发货 以及订单金额是否为0 和支付id是否为改变 */
         if ($touch_pay_id > 0 && $order['pay_status'] == PS_UNPAYED && $order['shipping_status'] == SS_UNSHIPPED && $order['goods_amount'] > 0) {
             //查询电脑版支付方式
             $touch_payment_info = model('Order')->payment_info($touch_pay_id);
             $order['pay_id'] = $touch_payment_info['pay_id'];
             $order['pay_name'] = $touch_payment_info['pay_name'];
             $order_amount = $order['order_amount'] - $order['pay_fee'];
             $pay_fee = pay_fee($touch_pay_id, $order_amount);
             $order_amount += $pay_fee;
             $sql = "UPDATE " . $this->pre . "order_info SET pay_id='{$touch_pay_id}', pay_name='{$touch_payment_info['pay_name']}', pay_fee='{$pay_fee}', order_amount='{$order_amount}', `mobile_pay` = '1'" . " WHERE order_id = '{$order_id}'";
             $this->query($sql);
         }
     }
     //检查订单是否属于该用户
     if ($user_id > 0 && $user_id != $order['user_id']) {
         ECTouch::err()->add(L('no_priv'));
         return false;
     }
     /* 对发货号处理 */
     if (!empty($order['invoice_no'])) {
         $sql = "SELECT shipping_code FROM " . $this->pre . "shipping WHERE shipping_id = '{$order['shipping_id']}'";
         $res = $this->row($sql);
         $shipping_code = $res['shipping_code'];
         $plugin = ROOT_PATH . 'includes/modules/shipping/' . $shipping_code . '.php';
         if (file_exists($plugin)) {
             include_once $plugin;
             $shipping = new $shipping_code();
             $order['invoice_no'] = $shipping->query($order['invoice_no']);
         }
     }
     /* 只有未确认才允许用户修改订单地址 */
     if ($order['order_status'] == OS_UNCONFIRMED) {
         $order['allow_update_address'] = 1;
         //允许修改收货地址
     } else {
         $order['allow_update_address'] = 0;
     }
     /* 获取订单中实体商品数量 */
     $order['exist_real_goods'] = model('Order')->exist_real_goods($order_id);
     /* 如果是未付款状态,生成支付按钮 */
     if ($order['pay_status'] == PS_UNPAYED && ($order['order_status'] == OS_UNCONFIRMED || $order['order_status'] == OS_CONFIRMED)) {
         /*
          * 在线支付按钮
          */
         //支付方式信息
         $payment_info = array();
         $payment_info = Model('Order')->payment_info($order['pay_id']);
         //无效支付方式
         if ($payment_info === false) {
             $order['pay_online'] = '';
         } else {
             //取得支付信息,生成支付代码
             $payment = unserialize_config($payment_info['pay_config']);
             //获取需要支付的log_id
             $order['log_id'] = model('ClipsBase')->get_paylog_id($order['order_id'], $pay_type = PAY_ORDER);
             $order['user_name'] = $_SESSION['user_name'];
             $order['pay_desc'] = $payment_info['pay_desc'];
             /* 调用相应的支付方式文件 */
             include_once ROOT_PATH . 'plugins/payment/' . $payment_info['pay_code'] . '.php';
             /* 取得在线支付方式的支付按钮 */
             $pay_obj = new $payment_info['pay_code']();
             $order['pay_online'] = $pay_obj->get_code($order, $payment);
         }
     } else {
         $order['pay_online'] = '';
     }
     /* 无配送时的处理 */
     $order['shipping_id'] == -1 and $order['shipping_name'] = L('shipping_not_need');
     /* 其他信息初始化 */
     $order['how_oos_name'] = $order['how_oos'];
     $order['how_surplus_name'] = $order['how_surplus'];
     /* 虚拟商品付款后处理 */
     if ($order['pay_status'] != PS_UNPAYED) {
         /* 取得已发货的虚拟商品信息 */
         $virtual_goods = model('OrderBase')->get_virtual_goods($order_id, true);
         $virtual_card = array();
         foreach ($virtual_goods as $code => $goods_list) {
             /* 只处理虚拟卡 */
             if ($code == 'virtual_card') {
                 foreach ($goods_list as $goods) {
                     if ($info = model('OrderBase')->virtual_card_result($order['order_sn'], $goods)) {
                         $virtual_card[] = array('goods_id' => $goods['goods_id'], 'goods_name' => $goods['goods_name'], 'info' => $info);
                     }
                 }
             }
             /* 处理超值礼包里面的虚拟卡 */
             if ($code == 'package_buy') {
                 foreach ($goods_list as $goods) {
                     $sql = 'SELECT g.goods_id FROM ' . $this->pre . 'package_goods AS pg, ' . $this->pre . 'goods AS g ' . "WHERE pg.goods_id = g.goods_id AND pg.package_id = '" . $goods['goods_id'] . "' AND extension_code = 'virtual_card'";
                     $vcard_arr = $this->query($sql);
                     foreach ($vcard_arr as $val) {
                         if ($info = model('OrderBase')->virtual_card_result($order['order_sn'], $val)) {
                             $virtual_card[] = array('goods_id' => $goods['goods_id'], 'goods_name' => $goods['goods_name'], 'info' => $info);
                         }
                     }
                 }
             }
         }
         $var_card = deleteRepeat($virtual_card);
         ECTouch::view()->assign('virtual_card', $var_card);
     }
     /* 确认时间 支付时间 发货时间 */
     if ($order['confirm_time'] > 0 && ($order['order_status'] == OS_CONFIRMED || $order['order_status'] == OS_SPLITED || $order['order_status'] == OS_SPLITING_PART)) {
         $order['confirm_time'] = sprintf(L('confirm_time'), local_date(C('time_format'), $order['confirm_time']));
     } else {
         $order['confirm_time'] = '';
     }
     if ($order['pay_time'] > 0 && $order['pay_status'] != PS_UNPAYED) {
         $order['pay_time'] = sprintf(L('pay_time'), local_date(C('time_format'), $order['pay_time']));
     } else {
         $order['pay_time'] = '';
     }
     if ($order['shipping_time'] > 0 && in_array($order['shipping_status'], array(SS_SHIPPED, SS_RECEIVED))) {
         $order['shipping_time'] = sprintf(L('shipping_time'), local_date(C('time_format'), $order['shipping_time']));
     } else {
         $order['shipping_time'] = '';
     }
     return $order;
 }
Пример #11
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;
}
Пример #12
0
        $pay_code = $arr1[0];
    }
    /* 判断是否启用 */
    $sql = "SELECT pay_id FROM " . $ecs->table('touch_payment') . " WHERE pay_code = '{$pay_code}' AND enabled = 1";
    $pay_id = $db->getOne($sql);
    if (empty($pay_id)) {
        $msg = $_LANG['pay_disabled'];
    } else {
        $plugin_file = 'include/modules/payment/' . $pay_code . '.php';
        /* 检查插件文件是否存在,如果存在则验证支付是否成功,否则则返回失败信息 */
        if (file_exists($plugin_file)) {
            $param = payment_info($pay_id);
            /* 根据支付方式代码创建支付类的对象并调用其响应操作方法 */
            include_once $plugin_file;
            $payment = new $pay_code();
            $config = unserialize_config($param['pay_config']);
            $config['call_type'] = $_REQUEST['call_type'];
            unset($_GET['code']);
            unset($_GET['call_type']);
            $msg = @$payment->respond($config) ? $_LANG['pay_success'] : $_LANG['pay_fail'];
        } else {
            $msg = $_LANG['pay_not_exist'];
        }
    }
}
assign_template();
$position = assign_ur_here();
$smarty->assign('page_title', $position['title']);
// 页面标题
$smarty->assign('ur_here', $position['ur_here']);
// 当前位置
Пример #13
0
function get_user_orders_ex($user_id, $num = 10, $start = 0, $ext = null)
{
    global $_CFG;
    /*判断组团的状态*/
    $sql = "select * from " . $GLOBALS['hhs']->table('order_info') . " where user_id='{$user_id}' limit " . $start . "," . $num;
    $orders = $GLOBALS['db']->getAll($sql);
    if (!empty($orders)) {
        foreach ($orders as $v) {
            if ($v['extension_code'] == 'team_goods' && $v['team_status'] == 1) {
                $sql = "select pay_time from " . $GLOBALS['hhs']->table('order_info') . " where order_id=" . $v['team_sign'];
                $pay_time = $GLOBALS['db']->getOne($sql);
                if ($pay_time + $_CFG['team_suc_time'] * 24 * 3600 < gmtime()) {
                    //取消订单
                    $sql = "update " . $GLOBALS['hhs']->table('order_info') . " set team_status=3,order_status=2 where team_status=1 and team_sign=" . $v['team_sign'];
                    $GLOBALS['db']->query($sql);
                    $sql = "UPDATE " . $GLOBALS['hhs']->table('order_info') . " SET order_status=2 WHERE team_status=0 and team_sign=" . $v['team_sign'];
                    $GLOBALS['db']->query($sql);
                }
            }
        }
    }
    include_once ROOT_PATH . 'includes/lib_order.php';
    /* 取得订单列表 */
    $arr = array();
    $sql = "SELECT order_id,share_pay_type, order_sn, order_status, shipping_status, pay_status,pay_id, add_time,order_amount, shipping_name,shipping_id,invoice_no, " . "(goods_amount + shipping_fee + insure_fee + pay_fee + pack_fee + card_fee + tax - discount) AS total_fee,extension_code,extension_id,team_sign,team_first,team_status " . " FROM " . $GLOBALS['hhs']->table('order_info') . " WHERE user_id = '{$user_id}' " . $ext . " ORDER BY add_time DESC";
    $res = $GLOBALS['db']->SelectLimit($sql, $num, $start);
    while ($row = $GLOBALS['db']->fetchRow($res)) {
        if ($row['order_status'] == OS_UNCONFIRMED) {
            $row['handler'] = "<a href=\"user.php?act=cancel_order&order_id=" . $row['order_id'] . "\" onclick=\"if (!confirm('" . $GLOBALS['_LANG']['confirm_cancel'] . "')) return false;\">" . $GLOBALS['_LANG']['cancel'] . "</a>";
        } else {
            if ($row['order_status'] == OS_SPLITED) {
                /* 对配送状态的处理 */
                if ($row['shipping_status'] == SS_SHIPPED) {
                    @($row['handler'] = "<a href=\"javascript:void(0);\" onclick='get_invoice(\"" . $row['shipping_name'] . "\",\"" . $row['invoice_no'] . "\");'>查看物流</a>");
                    @($row['handler'] .= "<a href=\"user.php?act=affirm_received&order_id=" . $row['order_id'] . "\" onclick=\"if (!confirm('" . $GLOBALS['_LANG']['confirm_received'] . "')) return false;\">" . $GLOBALS['_LANG']['received'] . "</a>");
                } elseif ($row['shipping_status'] == SS_RECEIVED) {
                    //@$row['handler'] = '<span style="color:red">'.$GLOBALS['_LANG']['ss_received'] .'</span>';
                } else {
                    if ($row['pay_status'] == PS_UNPAYED) {
                        //@$row['handler'] = "<a href=\"user.php?act=order_detail&order_id=" .$row['order_id']. '">' .$GLOBALS['_LANG']['pay_money']. '</a>';
                    } else {
                        //@$row['handler'] = "<a href=\"user.php?act=order_detail&order_id=" .$row['order_id']. '">' .$GLOBALS['_LANG']['view_order']. '</a>';
                    }
                }
            } else {
                //$row['handler'] = '<span style="color:red">'.$GLOBALS['_LANG']['os'][$row['order_status']] .'</span>';
            }
        }
        $pay_online = '';
        if ($row['share_pay_type'] > 0 && $row['pay_status'] == PS_UNPAYED) {
            $pay_online = "<a class='state_btn_2' href='share_pay.php?id=" . $row['order_id'] . "'>代付</a>";
        }
        if ($row['share_pay_type'] == 0 && $row['pay_status'] == PS_UNPAYED && ($row['order_status'] == OS_UNCONFIRMED || $row['order_status'] == OS_CONFIRMED)) {
            $payment_info = array();
            $payment_info = payment_info($row['pay_id']);
            //无效支付方式
            if ($payment_info === false) {
                $row['pay_online'] = '';
            } else {
                if ($payment_info['pay_code'] == 'cod') {
                    $payment_info = $GLOBALS['db']->getRow("select * from " . $GLOBALS['hhs']->table("payment") . " where pay_code='wxpay' AND enabled = 1");
                }
                //取得支付信息,生成支付代码
                $payment = unserialize_config($payment_info['pay_config']);
                //获取需要支付的log_id
                $row['log_id'] = get_paylog_id($row['order_id'], $pay_type = PAY_ORDER);
                $row['user_name'] = $_SESSION['user_name'];
                $row['pay_desc'] = $payment_info['pay_desc'];
                if ($row['extension_id']) {
                    $sql = "select goods_name from " . $GLOBALS['hhs']->table('goods') . " where goods_id=" . $row['extension_id'];
                    $row['goods_name'] = $GLOBALS['db']->getOne($sql);
                }
                /* 调用相应的支付方式文件 */
                include_once ROOT_PATH . 'includes/modules/payment/' . $payment_info['pay_code'] . '.php';
                if ($row['order_amount'] > 0) {
                    if ($payment_info['pay_code'] != 'alipay') {
                        /* 调用相应的支付方式文件 */
                        include_once ROOT_PATH . 'includes/modules/payment/' . $payment_info['pay_code'] . '.php';
                        /* 取得在线支付方式的支付按钮 */
                        $pay_obj = new $payment_info['pay_code']();
                        $pay_online = $pay_obj->get_code($row, $payment);
                    } else {
                        $pay_online = '<a class="state_btn_2" href="toalipay.php?order_id=' . $row['order_id'] . '"   >支付宝支付</a>';
                    }
                }
            }
        }
        $row['handler'] = $pay_online . $row['handler'];
        $row['shipping_status'] = $row['shipping_status'] == SS_SHIPPED_ING ? SS_PREPARING : $row['shipping_status'];
        /*
                if($row['order_status']==2){
                    $row['order_status'] =  $GLOBALS['_LANG']['os'][$row['order_status']] ;
                }else{
                    if($row['pay_status']==0){
                        $row['order_status'] = $GLOBALS['_LANG']['ps'][$row['pay_status']];
                    }else{
                        $row['order_status'] =  $GLOBALS['_LANG']['ss'][$row['shipping_status']];// $GLOBALS['_LANG']['ps'][$row['pay_status']] . ',' .
                    } 
                }*/
        $row['order_status'] = $GLOBALS['_LANG']['ps'][$row['pay_status']] . ',' . $GLOBALS['_LANG']['ss'][$row['shipping_status']];
        //$GLOBALS['_LANG']['os'][$row['order_status']]. ',' .
        $row['goods_list'] = get_order_goods_list($row['order_id']);
        $row['can_refund'] = can_refund($row['order_id']);
        //var_dump($row);exit();
        $arr[] = array('order_id' => $row['order_id'], 'order_sn' => $row['order_sn'], 'goods_list' => $row['goods_list'], 'goods_num' => count($row['goods_list']), 'order_time' => local_date($GLOBALS['_CFG']['time_format'], $row['add_time']), 'order_status' => $row['order_status'], 'shipping_fee' => price_format($row['shipping_fee'], false), 'total_fee' => price_format($row['total_fee'], false), 'order_amount' => price_format($row['order_amount'], false), 'can_refund' => $row['can_refund'], 'handler' => $row['handler']);
    }
    return $arr;
}
Пример #14
0
/**
 * 取得某配送方式对应于某收货地址的区域信息
 * @param   int     $shipping_id        配送方式id
 * @param   array   $region_id_list     收货人地区id数组
 * @return  array   配送区域信息(config 对应着反序列化的 configure)
 */
function shipping_area_info($shipping_id, $region_id_list)
{
    $sql = 'SELECT s.shipping_code, s.shipping_name, ' . 's.shipping_desc, s.insure, s.support_cod,r.region_id,a.configure ' . 'FROM ' . $GLOBALS['ecs']->table('shipping') . ' AS s, ' . $GLOBALS['ecs']->table('shipping_area') . ' AS a, ' . $GLOBALS['ecs']->table('area_region') . ' AS r ' . "WHERE s.shipping_id = '{$shipping_id}' " . 'AND r.region_id ' . db_create_in($region_id_list) . ' AND r.shipping_area_id = a.shipping_area_id AND a.shipping_id = s.shipping_id AND s.enabled = 1';
    $rows = $GLOBALS['db']->getAll($sql);
    //echo 'aa'.$region_id_list['province'];
    //dump($row);
    if (!empty($rows)) {
        /*如果全国的运费和该省份的运费同时设置了,过滤掉全国的运费,只使用该省份的运费 add by 2014-09-16 9:41*/
        $shipping_province = false;
        foreach ($rows as $r_key => $r_val) {
            if ($r_val['region_id'] == $region_id_list['province']) {
                $shipping_province = true;
                //如果存在某省份的运费,把省份运费标志为true
            }
        }
        foreach ($rows as $r_key => $r_val) {
            if ($shipping_province && $r_val['region_id'] == 1) {
                continue;
            }
            $row = $rows[$r_key];
        }
        //过滤结束
        //$row = $row[1];
        //dump($row);
        $shipping_config = unserialize_config($row['configure']);
        if (isset($shipping_config['pay_fee'])) {
            if (strpos($shipping_config['pay_fee'], '%') !== false) {
                $row['pay_fee'] = floatval($shipping_config['pay_fee']) . '%';
            } else {
                $row['pay_fee'] = floatval($shipping_config['pay_fee']);
            }
        } else {
            $row['pay_fee'] = 0.0;
        }
    }
    return $row;
}
Пример #15
0
    function payorders_action() {
        if (front::get('oid')) {
            preg_match_all("/-(.*)-(.*)-(.*)/isu", front::get('oid'), $oidout);
            $this->view->paytype = $oidout[3][0];
            $this->view->user_id = $oidout[2][0];
            $where = array();
            $where['oid'] = front::get('oid');
            $this->view->orders = orders::getInstance()->getrow($where);
            $string = $this->view->orders['aid'];
            $find = ',';
            $pos = strpos($string, $find);
            $this->view->statusnum = $data['status'] = $this->view->orders['status'];
            switch ($data['status']) {
                case 1:
                    $this->view->orders['status'] = lang('完成');
                    break;
                case 2:
                    $this->view->orders['status'] = lang('处理中');
                    break;
                case 3:
                    $this->view->orders['status'] = lang('已发货');
                    break;
                case 4:
                    $this->view->orders['status'] = lang('客户已付款,待审核');
                    break;
                case 5:
                    $this->view->orders['status'] = lang('已核实客户支付');
                    break;
                default:
                    $this->view->orders['status'] = lang('新订单');
                    break;
            }
            if ($this->view->user['userid'] != $this->view->user_id) {
                echo '<script type="text/javascript">alert("' . lang('您未登录,请保存订单编号') . '")</script>';
            }
            $logisticsid = $oidout[1][0];
            if ($pos !== false) {
                $_aid = $string;
                $_aid = substr($_aid, 0, -1);
                $this->view->archivearr1 = $this->view->_archivearr = archive::getInstance()->getrows('aid in (' . $_aid . ')', 100);
                $pnums = explode(',', $this->view->orders['pnums']);
                foreach ($this->view->archivearr1 as $key => $val) {
                    $prices = getPrices($val['attr2']);
					$val['attr2'] = $prices['price'];
                    $this->view->archivearr1[$key]['attr2'] = $val['attr2'];
                    $this->view->orders[$key]['pnums'] = $pnums[$key];
                    $this->view->archive['title'].=$val['title'];
                    $where = array();
                    $payfilename = $where['pay_code'] = $this->view->paytype;
                    $this->view->pay = pay::getInstance()->getrows($where);
                    $where = array();
                    $where['id'] = $logisticsid;
                    $this->view->logistics = logistics::getInstance()->getrows($where);
                    if ($this->view->logistics[0]['cashondelivery']) {
                        $this->view->logistics[0]['price'] = 0.00;
                    } else {
                        if ($this->view->logistics[0]['insure']) {
                            $this->view->logistics[0]['price'] = $this->view->logistics[0]['price'] + ($val['attr2'] * $this->view->orders[$key]['pnums']) * ($this->view->logistics[0]['insureproportion'] / 100);
                        }
                    }
                    if (!isset($this->view->logistics[0]['price']))
                        $this->view->logistics[0]['price'] = 0;
                    $this->view->pay[0]['pay_fee'] = $this->view->pay[0]['pay_fee'] / 100;
                    $this->view->archivearr1[$key]['total'] = $val['attr2'] * $this->view->orders['pnums'] + $this->view->logistics[0]['price'] + ($val['attr2'] * $this->view->orders[$key]['pnums'] * $this->view->pay[0]['pay_fee']);
                    $this->view->total += $val['attr2'] * $this->view->orders[$key]['pnums'] + $this->view->logistics[0]['price'] + ($val['attr2'] * $this->view->orders[$key]['pnums'] * $this->view->pay[0]['pay_fee']);
                }
                $order['ordersn'] = front::get('oid');
                $order['title'] = $this->view->archive['title'];
                $order['id'] = $this->view->orders['id'];
                $order['orderamount'] = $this->view->total;
                include_once ROOT . '/lib/plugins/pay/' . $payfilename . '.php';
                $payclassname = $payfilename;
                $payobj = new $payclassname();
                $this->view->pay[0]['pay_config'];
                $this->view->gotopaygateway = $payobj->get_code($order, unserialize_config($this->view->pay[0]['pay_config']));
            }else {
                $this->view->archive = archive::getInstance()->getrow($this->view->orders['aid']);
                $prices = getPrices($this->view->archive['attr2']);
				$this->view->archive['attr2'] = $prices['price'];
                $where = array();
                $payfilename = $where['pay_code'] = $this->view->paytype;
                $this->view->pay = pay::getInstance()->getrows($where);
                $where = array();
                $where['id'] = $logisticsid;
                $this->view->logistics = logistics::getInstance()->getrows($where);
                if ($this->view->logistics[0]['cashondelivery']) {
                    $this->view->logistics[0]['price'] = 0.00;
                } else {
                    if ($this->view->logistics[0]['insure']) {
                        $this->view->logistics[0]['price'] = $this->view->logistics[0]['price'] + ($this->view->archive['attr2'] * $this->view->orders['pnums']) * ($this->view->logistics[0]['insureproportion'] / 100);
                    }
                }
                if (!isset($this->view->logistics[0]['price']))
                    $this->view->logistics[0]['price'] = 0;
                $this->view->pay[0]['pay_fee'] = $this->view->pay[0]['pay_fee'] / 100;
                $this->view->total = $this->view->archive['attr2'] * $this->view->orders['pnums'] + $this->view->logistics[0]['price'] + ($this->view->archive['attr2'] * $this->view->orders['pnums'] * $this->view->pay[0]['pay_fee']);
                $order['ordersn'] = front::get('oid');
                $order['title'] = $this->view->archive['title'];
                $order['id'] = $this->view->orders['id'];
                $order['orderamount'] = $this->view->total;
                include_once ROOT . '/lib/plugins/pay/' . $payfilename . '.php';
                $payclassname = $payfilename;
                $payobj = new $payclassname();
                $this->view->gotopaygateway = $payobj->get_code($order, unserialize_config($this->view->pay[0]['pay_config']));
            }
        }
    }
Пример #16
0
	public function pay_recharge() {
		if(isset($_POST['dosubmit'])) {
			$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
			if ($_SESSION['code'] != strtolower($code)) {
					showmessage(L('code_error'), HTTP_REFERER);
			}
			$pay_id = $_POST['pay_type'];
			if(!$pay_id) showmessage(L('illegal_pay_method'));
			$payment = $this->handle->get_payment($pay_id);
			$cfg = unserialize_config($payment['config']);
			$pay_name = ucwords($payment['pay_code']);
			if(!param::get_cookie('trade_sn')) {showmessage(L('illegal_creat_sn'));}
			
			$trade_sn	= param::get_cookie('trade_sn');
			$usernote = $_POST['info']['usernote'] ? $_POST['info']['name'].'['.$trade_sn.']'.'-'.new_html_special_chars(trim($_POST['info']['usernote'])) : $_POST['info']['name'].'['.$trade_sn.']';
			
			$surplus = array(
					'userid'      => $this->_userid,
					'username'    => $this->_username,
					'money'       => trim(floatval($_POST['info']['price'])),
					'quantity'    => $_POST['quantity'] ? trim(intval($_POST['quantity'])) : 1,
					'telephone'   => trim($_POST['info']['telephone']),
					'contactname' => $_POST['info']['name'] ? trim($_POST['info']['name']).L('recharge') : $this->_username.L('recharge'),
					'email'       => trim($_POST['info']['email']),
					'addtime'	  => SYS_TIME,
					'ip'	  => ip(),
					'pay_type'	  => 'recharge',
					'pay_id'     => $payment['pay_id'],		
					'payment'     => trim($payment['pay_name']),
					'ispay'		  => '1',
					'usernote'    => $usernote,
					'trade_sn'	  => $trade_sn,
			);
			
			$recordid = $this->handle->set_record($surplus);
			
			$factory_info = $this->handle->get_record($recordid);
			if(!$factory_info) showmessage(L('order_closed_or_finish'));
			$pay_fee = pay_fee($factory_info['money'],$payment['pay_fee'],$payment['pay_method']);
			$logistics_fee = $factory_info['logistics_fee'];
			$discount = $factory_info['discount'];
			
			// calculate amount
			$factory_info['price'] = $factory_info['money'] + $pay_fee + $logistics_fee + $discount;
			
			// add order info
			$order_info['id']	= $factory_info['trade_sn'];
			$order_info['quantity']	= $factory_info['quantity'];
			$order_info['buyer_email']	= $factory_info['email'];
			$order_info['order_time']	= $factory_info['addtime'];
			
			//add product info
			$product_info['name'] = $factory_info['contactname'];
			$product_info['body'] = $factory_info['usernote'];
			$product_info['price'] = $factory_info['price'];
			
			//add set_customerinfo
			$customerinfo['telephone'] = $factory_info['telephone'];
			if($payment['is_online'] === '1') {
				pc_base::load_app_class('pay_factory','',0);
				$payment_handler = new pay_factory($pay_name, $cfg);
				$payment_handler->set_productinfo($product_info)->set_orderinfo($order_info)->set_customerinfo($customer_info);
				$code = $payment_handler->get_code('value="'.L('confirm_pay').'" class="button"');	
			} else {
				$this->account_db->update(array('status'=>'waitting','pay_type'=>'offline'),array('id'=>$recordid));
				$code = '<div class="point">'.L('pay_tip').'</div>';
			}
		}
		include template('pay', 'payment_cofirm');		
	}	
Пример #17
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);
	}
Пример #18
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');
Пример #19
0
                $order = getPrepayId($amount, $order_id, $attach);
                $pay_str = pay($order);
                if ($pay_str['success'] == 0) {
                    report(10052, $pay_str['return_msg']);
                } else {
                    report(0, $pay_str);
                    //$result = array("data"=>$order,"success"=>0,"errorcode"=>$errorcode);
                    //echo json_encode($result);
                }
                exit;
            } elseif ($payment == "alipay_wap") {
                $pay_id = 5;
                $payment = mysql_fetch_array(mysql_query("SELECT * FROM ecs_touch_payment WHERE pay_id = '{$pay_id}' AND enabled = 1"));
                include_once $payment['pay_code'] . '.php';
                $pay_obj = new $payment['pay_code']();
                $output = $pay_obj->get_code_url($order, unserialize_config($payment['pay_config']));
                report(0, $output);
                exit;
            } else {
                report(1005, "非法的支付方式");
                exit;
            }
        }
    } catch (Exception $e) {
        report(1000, "非法请求");
        exit;
    }
} else {
    report(1000, "非法请求");
    exit;
}
Пример #20
0
     change_order_goods_storage($order['order_id'], true, SDT_PLACE);
 }
 /* 清空购物车 */
 clear_cart($flow_type);
 /* 清除缓存,否则买了商品,但是前台页面读取缓存,商品数量不减少 */
 clear_all_files();
 if (!empty($order['shipping_name'])) {
     $order['shipping_name'] = trim(stripcslashes($order['shipping_name']));
 }
 /* 取得支付信息,生成支付代码 */
 if ($order['order_amount'] > 0) {
     $payment = payment_info($order['pay_id']);
     include_once 'includes/modules/payment/' . $payment['pay_code'] . '.php';
     $pay_obj = new $payment['pay_code']();
     $order['log_id'] = insert_pay_log($new_order_id, $order['order_amount'], PAY_ORDER);
     $pay_online = $pay_obj->get_code($order, unserialize_config($payment['pay_config']));
     $order['pay_desc'] = $payment['pay_desc'];
     $smarty->assign('pay_online', $pay_online);
 }
 /* 订单信息 */
 $smarty->assign('order', $order);
 $smarty->assign('total', $total);
 $smarty->assign('goods_list', $cart_goods);
 $smarty->assign('order_submit_back', sprintf('您可以 %s 或去 %s', '<a href="index.php">返回首页</a>', '<a href="user.php">用户中心</a>'));
 // 返回提示
 unset($_SESSION['flow_consignee']);
 // 清除session中保存的收货人信息
 unset($_SESSION['flow_order']);
 unset($_SESSION['direct_shopping']);
 if ($_SESSION['user_id'] > 0) {
     $smarty->assign('user_name', $_SESSION['user_name']);
Пример #21
0
 /**
  *  对会员余额申请的处理
  */
 public function act_account()
 {
     $amount = isset($_POST['amount']) ? floatval($_POST['amount']) : 0;
     if ($amount <= 0) {
         show_message($_LANG['amount_gt_zero']);
     }
     /* 变量初始化 */
     $surplus = array('user_id' => $this->user_id, 'rec_id' => !empty($_POST['rec_id']) ? intval($_POST['rec_id']) : 0, 'process_type' => isset($_POST['surplus_type']) ? intval($_POST['surplus_type']) : 0, 'payment_id' => isset($_POST['payment_id']) ? intval($_POST['payment_id']) : 0, 'user_note' => isset($_POST['user_note']) ? trim($_POST['user_note']) : '', 'amount' => $amount);
     /* 退款申请的处理 */
     if ($surplus['process_type'] == 1) {
         /* 判断是否有足够的余额的进行退款的操作 */
         $sur_amount = model('ClipsBase')->get_user_surplus($this->user_id);
         if ($amount > $sur_amount) {
             $content = L('surplus_amount_error');
             show_message($content, L('back_page_up'), '', 'info');
         }
         //插入会员账目明细
         $amount = '-' . $amount;
         $surplus['payment'] = '';
         $surplus['rec_id'] = model('ClipsBase')->insert_user_account($surplus, $amount);
         /* 如果成功提交 */
         if ($surplus['rec_id'] > 0) {
             $content = L('surplus_appl_submit');
             show_message($content, L('back_account_log'), url('sale/account_log'), 'info');
         } else {
             $content = $L('process_false');
             show_message($content, L('back_page_up'), '', 'info');
         }
     } else {
         if ($surplus['payment_id'] <= 0) {
             show_message(L('select_payment_pls'));
         }
         //获取支付方式名称
         $payment_info = array();
         $payment_info = model('Order')->payment_info($surplus['payment_id']);
         $surplus['payment'] = $payment_info['pay_name'];
         if ($surplus['rec_id'] > 0) {
             //更新会员账目明细
             $surplus['rec_id'] = model('ClipsBase')->update_user_account($surplus);
         } else {
             //插入会员账目明细
             $surplus['rec_id'] = model('ClipsBase')->insert_user_account($surplus, $amount);
         }
         //取得支付信息,生成支付代码
         $payment = unserialize_config($payment_info['pay_config']);
         //生成伪订单号, 不足的时候补0
         $order = array();
         $order['order_sn'] = $surplus['rec_id'];
         $order['user_name'] = $_SESSION['user_name'];
         $order['surplus_amount'] = $amount;
         //计算支付手续费用
         $payment_info['pay_fee'] = pay_fee($surplus['payment_id'], $order['surplus_amount'], 0);
         //计算此次预付款需要支付的总金额
         $order['order_amount'] = $amount + $payment_info['pay_fee'];
         //记录支付log
         $order['log_id'] = model('ClipsBase')->insert_pay_log($surplus['rec_id'], $order['order_amount'], $type = PAY_SURPLUS, 0);
         /* 调用相应的支付方式文件 */
         include_once ROOT_PATH . 'plugins/payment/' . $payment_info['pay_code'] . '.php';
         /* 取得在线支付方式的支付按钮 */
         $pay_obj = new $payment_info['pay_code']();
         $payment_info['pay_button'] = $pay_obj->get_code($order, $payment);
         /* 模板赋值 */
         $this->assign('payment', $payment_info);
         $this->assign('pay_fee', price_format($payment_info['pay_fee'], false));
         $this->assign('amount', price_format($amount, false));
         $this->assign('order', $order);
         $this->display('sale_act_account.dwt');
     }
 }
Пример #22
0
 /**
  * 响应操作
  */
 function respond()
 {
     if (!empty($_POST)) {
         foreach ($_POST as $key => $data) {
             $_GET[$key] = $data;
         }
     }
     $payment = get_payment("alipay");
     $payment = unserialize_config($payment['pay_config']);
     $alipay_config = array();
     $alipay_config['partner'] = $payment['alipay_partner'];
     //安全检验码,以数字和字母组成的32位字符
     //如果签名方式设置为“MD5”时,请设置该参数
     $alipay_config['key'] = $payment['alipay_key'];
     //商户的私钥(后缀是.pen)文件相对路径
     //如果签名方式设置为“0001”时,请设置该参数
     $alipay_config['private_key_path'] = '';
     //$alipay_config['private_key_path']	= 'key/rsa_private_key.pem';
     //支付宝公钥(后缀是.pen)文件相对路径
     //如果签名方式设置为“0001”时,请设置该参数
     $alipay_config['ali_public_key_path'] = '';
     //$alipay_config['ali_public_key_path']= 'key/alipay_public_key.pem';
     //签名方式 不需修改
     $alipay_config['sign_type'] = 'MD5';
     //字符编码格式 目前支持 gbk 或 utf-8
     $alipay_config['input_charset'] = 'utf-8';
     //$alipay_config['cacert']    = ROOT_PATH .'mobile/includes/modules/cacert.pem';
     $alipay_config['cacert'] = '';
     //ca证书路径地址,用于curl中ssl校验
     //请保证cacert.pem文件在当前文件夹目录中
     //$alipay_config['cacert']    = getcwd().'\\cacert.pem';
     //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
     $alipay_config['transport'] = 'http';
     require_once ROOT_PATH . "includes/modules/lib/alipay_notify.class.php";
     $alipayNotify = new AlipayNotify($alipay_config);
     $verify_result = $alipayNotify->verifyReturn();
     if ($verify_result) {
         $out_trade_no = trim($_GET['out_trade_no']);
         $order_sn = trim(substr($out_trade_no, 0, 13));
         $log_id = get_order_id_by_sn($order_sn);
         order_paid($log_id);
         //$sql = "SELECT l.`log_id` FROM " . $GLOBALS['hhs']->table('order_info')." as info LEFT JOIN ". $GLOBALS['hhs']->table('pay_log') ." as l  ON l.order_id=info.order_id        WHERE info.order_sn = '$order_sn'";
         //$order_log_id = $GLOBALS['db']->getOne($sql);
         return true;
     } else {
         return false;
     }
 }
Пример #23
0
 if ($split_order['sub_order_count'] > 1) {
     //如果一次下单有多个订单要支付,生成一个父订单的日志
     $order['order_sn'] = $parent_order_id;
     /* 插入支付日志 */
     $order['log_id'] = insert_pay_log($order['order_sn'], $order['order_amount'], PAY_ORDER);
 } else {
     /* 插入支付日志 */
     //$order['log_id'] = insert_pay_log($order['order_id'], $order['order_amount'], PAY_ORDER);
 }
 if ($order['order_amount'] > 0) {
     $payment = payment_info($order['pay_id']);
     include_once 'includes/modules/payment/' . $payment['pay_code'] . '.php';
     $pay_obj = new $payment['pay_code']();
     $pay_online = $pay_obj->get_code($order, unserialize_config($payment['pay_config']));
     /* 代码修改_start  By www.ecshop68.com */
     $payment_www_com = unserialize_config($payment['pay_config']);
     if ($payment['pay_code'] == 'alipay_bank') {
         $payment_www_com['www_ecshop68_com_alipay_bank'] = $_POST['www_68ecshop_com_bank'] ? trim($_POST['www_68ecshop_com_bank']) : "www_ecshop68_com";
         $pay_online = $pay_obj->get_code($order, $payment_www_com);
     }
     /* 代码修改_end  By www.ecshop68.com */
     $order['pay_desc'] = $payment['pay_desc'];
     $smarty->assign('pay_online', $pay_online);
 }
 if (!empty($order['shipping_name'])) {
     $order['shipping_name'] = trim(stripcslashes($order['shipping_name']));
 }
 /* 订单信息 */
 $smarty->assign('order', $order);
 //$smarty->assign('total',      $total);
 //$smarty->assign('goods_list', $cart_goods);
Пример #24
0
function action_pay()
{
    $user = $GLOBALS['user'];
    $_CFG = $GLOBALS['_CFG'];
    $_LANG = $GLOBALS['_LANG'];
    $smarty = $GLOBALS['smarty'];
    $db = $GLOBALS['db'];
    $ecs = $GLOBALS['ecs'];
    $user_id = $_SESSION['user_id'];
    include_once ROOT_PATH . 'includes/lib_clips.php';
    include_once ROOT_PATH . 'includes/lib_payment.php';
    include_once ROOT_PATH . 'includes/lib_order.php';
    // 变量初始化
    $surplus_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
    $payment_id = isset($_GET['pid']) ? intval($_GET['pid']) : 0;
    if ($surplus_id == 0) {
        ecs_header("Location: user.php?act=account_log\n");
        exit;
    }
    // 如果原来的支付方式已禁用或者已删除, 重新选择支付方式
    if ($payment_id == 0) {
        ecs_header("Location: user.php?act=account_deposit&id=" . $surplus_id . "\n");
        exit;
    }
    // 获取单条会员帐目信息
    $order = array();
    $order = get_surplus_info($surplus_id);
    // 支付方式的信息
    $payment_info = array();
    $payment_info = payment_info($payment_id);
    /* 如果当前支付方式没有被禁用,进行支付的操作 */
    if (!empty($payment_info)) {
        // 取得支付信息,生成支付代码
        $payment = unserialize_config($payment_info['pay_config']);
        // 生成伪订单号
        $order['order_sn'] = $surplus_id;
        // 获取需要支付的log_id
        $order['log_id'] = get_paylog_id($surplus_id, $pay_type = PAY_SURPLUS);
        $order['user_name'] = $_SESSION['user_name'];
        $order['surplus_amount'] = $order['amount'];
        // 计算支付手续费用
        $payment_info['pay_fee'] = pay_fee($payment_id, $order['surplus_amount'], 0);
        // 计算此次预付款需要支付的总金额
        $order['order_amount'] = $order['surplus_amount'] + $payment_info['pay_fee'];
        // 如果支付费用改变了,也要相应的更改pay_log表的order_amount
        $order_amount = $db->getOne("SELECT order_amount FROM " . $ecs->table('pay_log') . " WHERE log_id = '{$order['log_id']}'");
        if ($order_amount != $order['order_amount']) {
            $db->query("UPDATE " . $ecs->table('pay_log') . " SET order_amount = '{$order['order_amount']}' WHERE log_id = '{$order['log_id']}'");
        }
        /* 调用相应的支付方式文件 */
        include_once ROOT_PATH . 'includes/modules/payment/' . $payment_info['pay_code'] . '.php';
        /* 取得在线支付方式的支付按钮 */
        $pay_obj = new $payment_info['pay_code']();
        $payment_info['pay_button'] = $pay_obj->get_code($order, $payment);
        /* 模板赋值 */
        $smarty->assign('payment', $payment_info);
        $smarty->assign('order', $order);
        $smarty->assign('pay_fee', price_format($payment_info['pay_fee'], false));
        $smarty->assign('amount', price_format($order['surplus_amount'], false));
        $smarty->assign('action', 'act_account');
        $smarty->display('user_transaction.dwt');
    } else {
        include_once ROOT_PATH . 'includes/lib_clips.php';
        $smarty->assign('payment', get_online_payment_list());
        $smarty->assign('order', $order);
        $smarty->assign('action', 'account_deposit');
        $smarty->display('user_transaction.dwt');
    }
}
Пример #25
0
 * 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 *************************注意*************************
 * 如果您在接口集成过程中遇到问题,可以按照下面的途径来解决
 * 1、商户服务中心(https://b.alipay.com/support/helperApply.htm?action=consultationApply),提交申请集成协助,我们会有专业的技术工程师主动联系您协助解决
 * 2、商户帮助中心(http://help.alipay.com/support/232511-16307/0-16307.htm?sh=Y&info_type=9)
 * 3、支付宝论坛(http://club.alipay.com/read-htm-tid-8681712.html)
 * 如果不想使用扩展功能请把扩展功能参数赋空值。
 */
require_once "alipay.config.php";
require_once "lib/alipay_submit.class.php";
define('IN_ECS', true);
require_once '../includes/init.php';
require_once '../includes/lib_order.php';
$order = $GLOBALS['db']->getRow("SELECT * from " . $GLOBALS['ecs']->table('order_info') . " where order_sn = '" . $_GET['out_trade_no'] . "'");
$payment = payment_info($order['pay_id']);
$p_config = unserialize_config($payment['pay_config']);
$alipay_config = get_alipay_config($p_config);
/**************************调用授权接口alipay.wap.trade.create.direct获取授权码token**************************/
//返回格式
$format = "xml";
//必填,不需要修改
//返回格式
$v = "2.0";
//必填,不需要修改
//请求号
$req_id = date('Ymdhis');
//必填,须保证每次请求都是唯一
//**req_data详细信息**
//服务器异步通知页面路径
$notify_url = "http://ecsmart.68ecshop.com/mobile/pay/ajax_url.php";
//$notify_url = "http://www.duudoo.com/test.asp";
Пример #26
0
/**
 *  获取指订单的详情
 *
 * @access  public
 * @param   int         $order_id       订单ID
 * @param   int         $user_id        用户ID
 *
 * @return   arr        $order          订单所有信息的数组
 */
function get_order_detail($order_id, $user_id = 0)
{
    include_once ROOT_PATH . 'includes/lib_order.php';
    $order_id = intval($order_id);
    if ($order_id <= 0) {
        $GLOBALS['err']->add(L('invalid_order_id'));
        return false;
    }
    $order = order_info($order_id);
    //检查订单是否属于该用户
    if ($user_id > 0 && $user_id != $order['user_id']) {
        $GLOBALS['err']->add(L('no_priv'));
        return false;
    }
    /* 对发货号处理 */
    if (!empty($order['invoice_no'])) {
        $shipping_code = $GLOBALS['db']->GetOne("SELECT shipping_code FROM " . $GLOBALS['ecs']->table('shipping') . " WHERE shipping_id = '{$order['shipping_id']}'");
        $plugin = ROOT_PATH . 'includes/modules/shipping/' . $shipping_code . '.php';
        if (file_exists($plugin)) {
            include_once $plugin;
            $shipping = new $shipping_code();
            $order['invoice_no'] = $shipping->query($order['invoice_no']);
        }
    }
    /* 只有未确认才允许用户修改订单地址 */
    if ($order['order_status'] == OS_UNCONFIRMED) {
        $order['allow_update_address'] = 1;
        //允许修改收货地址
    } else {
        $order['allow_update_address'] = 0;
    }
    /* 获取订单中实体商品数量 */
    $order['exist_real_goods'] = exist_real_goods($order_id);
    /* 如果是未付款状态,生成支付按钮 */
    if ($order['pay_status'] == PS_UNPAYED && ($order['order_status'] == OS_UNCONFIRMED || $order['order_status'] == OS_CONFIRMED)) {
        /*
         * 在线支付按钮
         */
        //支付方式信息
        $payment_info = array();
        $payment_info = payment_info($order['pay_id']);
        //无效支付方式
        if ($payment_info === false) {
            $order['pay_online'] = '';
        } else {
            //取得支付信息,生成支付代码
            $payment = unserialize_config($payment_info['pay_config']);
            //获取需要支付的log_id
            $order['log_id'] = get_paylog_id($order['order_id'], $pay_type = PAY_ORDER);
            $order['user_name'] = $_SESSION['user_name'];
            $order['pay_desc'] = $payment_info['pay_desc'];
            /* 调用相应的支付方式文件 */
            include_once ROOT_PATH . 'includes/modules/payment/' . $payment_info['pay_code'] . '.php';
            /* 取得在线支付方式的支付按钮 */
            $pay_obj = new $payment_info['pay_code']();
            $order['pay_online'] = $pay_obj->get_code($order, $payment);
        }
    } else {
        $order['pay_online'] = '';
    }
    /* 无配送时的处理 */
    $order['shipping_id'] == -1 and $order['shipping_name'] = L('shipping_not_need');
    /* 其他信息初始化 */
    $order['how_oos_name'] = $order['how_oos'];
    $order['how_surplus_name'] = $order['how_surplus'];
    /* 虚拟商品付款后处理 */
    if ($order['pay_status'] != PS_UNPAYED) {
        /* 取得已发货的虚拟商品信息 */
        $virtual_goods = get_virtual_goods($order_id, true);
        $virtual_card = array();
        foreach ($virtual_goods as $code => $goods_list) {
            /* 只处理虚拟卡 */
            if ($code == 'virtual_card') {
                foreach ($goods_list as $goods) {
                    if ($info = virtual_card_result($order['order_sn'], $goods)) {
                        $virtual_card[] = array('goods_id' => $goods['goods_id'], 'goods_name' => $goods['goods_name'], 'info' => $info);
                    }
                }
            }
            /* 处理超值礼包里面的虚拟卡 */
            if ($code == 'package_buy') {
                foreach ($goods_list as $goods) {
                    $sql = 'SELECT g.goods_id FROM ' . $GLOBALS['ecs']->table('package_goods') . ' AS pg, ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . "WHERE pg.goods_id = g.goods_id AND pg.package_id = '" . $goods['goods_id'] . "' AND extension_code = 'virtual_card'";
                    $vcard_arr = $GLOBALS['db']->getAll($sql);
                    foreach ($vcard_arr as $val) {
                        if ($info = virtual_card_result($order['order_sn'], $val)) {
                            $virtual_card[] = array('goods_id' => $goods['goods_id'], 'goods_name' => $goods['goods_name'], 'info' => $info);
                        }
                    }
                }
            }
        }
        $var_card = deleteRepeat($virtual_card);
        $GLOBALS['smarty']->assign('virtual_card', $var_card);
    }
    /* 确认时间 支付时间 发货时间 */
    if ($order['confirm_time'] > 0 && ($order['order_status'] == OS_CONFIRMED || $order['order_status'] == OS_SPLITED || $order['order_status'] == OS_SPLITING_PART)) {
        $order['confirm_time'] = sprintf(L('confirm_time'), local_date(C('time_format'), $order['confirm_time']));
    } else {
        $order['confirm_time'] = '';
    }
    if ($order['pay_time'] > 0 && $order['pay_status'] != PS_UNPAYED) {
        $order['pay_time'] = sprintf(L('pay_time'), local_date(C('time_format'), $order['pay_time']));
    } else {
        $order['pay_time'] = '';
    }
    if ($order['shipping_time'] > 0 && in_array($order['shipping_status'], array(SS_SHIPPED, SS_RECEIVED))) {
        $order['shipping_time'] = sprintf(L('shipping_time'), local_date(C('time_format'), $order['shipping_time']));
    } else {
        $order['shipping_time'] = '';
    }
    return $order;
}
Пример #27
0
         $smarty->assign('order', $order);
     } else {
         show_message('订单号为空');
     }
 } elseif ($_REQUEST['step'] == 'ajax_check_pay') {
     include_once 'includes/lib_payment.php';
     if (isset($_REQUEST['payment']) && isset($_REQUEST['order_id'])) {
         $order_id = $_REQUEST['order_id'];
         $pay_id = $_REQUEST['payment'];
         $payment = payment_info($pay_id);
         include_once 'includes/modules/payment/' . $payment['pay_code'] . '.php';
         $pay_obj = new $payment['pay_code']();
         if ($pay_id == 6) {
             $pay_online = $pay_obj->get_code(order_info($order_id), unserialize_config($payment['pay_config']), $_REQUEST['payType'], $_REQUEST['bankID']);
         } else {
             $pay_online = $pay_obj->get_code(order_info($order_id), unserialize_config($payment['pay_config']));
         }
         echo $pay_online;
     } else {
         echo "付款方式没选择或没有传入订单号";
     }
     exit;
 } elseif ($_REQUEST['step'] == 'ajax_update_cart') {
     require_once ROOT_PATH . 'includes/cls_json.php';
     $json = new JSON();
     $result = array('error' => 0, 'message' => '');
     if (isset($_POST['rec_id']) && isset($_POST['goods_number'])) {
         $key = $_POST['rec_id'];
         $val = $_POST['goods_number'];
         $result['rec_id'] = $key;
         $val = intval(make_semiangle($val));