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; } }
/** * 服务器端 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); } }
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); }
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; }
/** * 取得某配送方式对应于某收货地址的区域信息 * @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 { //支付成功 } }
/** * 提交订单 */ 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'); }
} //如果原来的支付方式已禁用或者已删除, 重新选择支付方式 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']}'"); }
/** * 会员通过帐目明细列表进行再付款的操作 */ 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'); } }
/** * 获取指订单的详情 * * @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; }
/** * 获取不同商家的运费方式 **/ 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; }
$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']); // 当前位置
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; }
/** * 取得某配送方式对应于某收货地址的区域信息 * @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; }
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'])); } } }
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'); }
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); }
// 页面标题 $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');
$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; }
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']);
/** * 对会员余额申请的处理 */ 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'); } }
/** * 响应操作 */ 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; } }
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);
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'); } }
* 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 *************************注意************************* * 如果您在接口集成过程中遇到问题,可以按照下面的途径来解决 * 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";
/** * 获取指订单的详情 * * @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; }
$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));