function index() { $mobileshop_url = $this->app->getConf('mobileshop.url'); $mobileshop_token = $this->app->getConf('mobileshop.token'); if (!empty($mobileshop_url)) { $wlshop = app::get('b2c')->model('shop'); $node_ids = $wlshop->getList('node_id', array('node_type' => 'shopex_wmall', 'status' => 'bind')); foreach ($node_ids as $value) { if (!empty($value['node_id'])) { $node_id = $value['node_id']; } } $callinfo['node_id'] = $node_id; $callinfo['shop_url'] = kernel::base_url(1) . kernel::url_prefix() . "/"; $callinfo['shop_license'] = base_certificate::get('certificate_id'); $callinfo['shop_node'] = base_shopnode::node_id('b2c'); $callinfo['shop_name'] = app::get('site')->getConf('site.name'); $callinfo['type'] = '1'; $callinfo['sign'] = $this->get_sign($callinfo, $mobileshop_token); $this->pagedata['ifseturl'] = 1; $this->pagedata['node_id'] = $callinfo['node_id']; $this->pagedata['type'] = $callinfo['type']; $this->pagedata['shop_license'] = $callinfo['shop_license']; $this->pagedata['shop_node'] = $callinfo['shop_node']; $this->pagedata['shop_url'] = $callinfo['shop_url']; $this->pagedata['shop_name'] = $callinfo['shop_name']; $this->pagedata['sign'] = $callinfo['sign']; $this->pagedata['mobileshop_url'] = $mobileshop_url; } else { $this->pagedata['ifseturl'] = 0; } $this->page('admin/index.html'); }
public function column_editbutton($row) { $callback_url = urlencode(kernel::openapi_url('openapi.b2c.callback.shoprelation', 'callback', array('shop_id' => $row['shop_id']))); $api_url = kernel::base_url(1) . kernel::url_prefix() . '/api'; $obj_user = kernel::single('desktop_user'); $user_id = $obj_user->user_data['user_id']; $user_name = $obj_user->user_data['name']; $api_v = $this->app->getConf("api.local.version"); $str_operation = ""; if ($row['status'] == 'unbind') { $str_operation = '<a href="index.php?app=b2c&ctl=admin_shoprelation&act=showEdit&p[0]=' . $row['shop_id'] . '" target="_blank">' . app::get('b2c')->_('编辑') . '</a>'; if ($str_operation) { $str_operation .= ' <a href="javascript:void(0);" onclick="new Request({evalScripts:true,url:\'index.php?ctl=shoprelation&act=index&p[0]=apply&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '&p[3]=' . $api_url . '&p[4]=' . $user_id . '&p[5]=' . $user_name . '&p[6]=' . $api_v . '\'}).get();">' . app::get('b2c')->_('申请绑定') . '</a>'; } else { $str_operation .= '<a href="javascript:void(0);" onclick="new Request({evalScripts:true,url:\'index.php?ctl=shoprelation&act=index&p[0]=apply&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '&p[3]=' . $api_url . '&p[4]=' . $user_id . '&p[5]=' . $user_name . '&p[6]=' . $api_v . '\'}).get();">' . app::get('b2c')->_('申请绑定') . '</a>'; } } else { $str_operation = ''; if ($str_operation) { $str_operation .= ' <a href="javascript:void(0);" onclick="new Request({evalScripts:true,url:\'index.php?ctl=shoprelation&act=index&p[0]=accept&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '&p[3]=' . $api_url . '&p[4]=' . $user_id . '&p[5]=' . $user_name . '&p[6]=' . $api_v . '\'}).get();">' . app::get('b2c')->_('解除绑定') . '</a>'; } else { $str_operation .= '<a href="javascript:void(0);" onclick="new Request({evalScripts:true,url:\'index.php?ctl=shoprelation&act=index&p[0]=accept&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '&p[3]=' . $api_url . '&p[4]=' . $user_id . '&p[5]=' . $user_name . '&p[6]=' . $api_v . '\'}).get();">' . app::get('b2c')->_('解除绑定') . '</a>'; } } return $str_operation; }
static function send_to_center($app_id, $data = null, $method = 'node.reg') { $app_info = app::get($app_id)->define(); $obj_app = app::get($app_id); // 生成参数... $api_data = array('certi_app' => $method, 'certificate_id' => base_certificate::certi_id(), 'node_type' => 'ecos.' . $app_id, 'url' => kernel::base_url(true), 'version' => $app_info['version'], 'channel_ver' => $app_info['api_ver'], 'api_ver' => '1.2', 'format' => 'json', 'api_url' => kernel::base_url(1) . kernel::url_prefix() . '/api'); //更新时,多带个参数 if ($method == 'node.update') { $api_data['node_id'] = base_shopnode::node_id($app_id); } ksort($api_data); foreach ($api_data as $key => $value) { $str .= $value; } $api_data['certi_ac'] = strtoupper(md5($str . base_certificate::token())); $http = kernel::single('base_httpclient'); $http->set_timeout(6); $result = $http->post(LICENSE_CENTER_V, $api_data); $result = json_decode($result, true); if ($result['res'] == 'succ') { return self::set_node_id($result['info'], $app_id); } else { return false; } }
function index() { $callback_url = ''; $api_url = kernel::base_url(1) . kernel::url_prefix() . '/api'; $ceti_id = base_certificate::get('certificate_id'); $node_id = base_shopnode::node_id($this->app->app_id); $obj_user = kernel::single('desktop_user'); $user_id = $obj_user->user_data['user_id']; $user_name = $obj_user->user_data['name']; $api_v = $this->app->getConf("api.local.version"); $this->finder('b2c_mdl_shop', array('title' => app::get('b2c')->_('数据互联') . app::get('b2c')->_('证书:') . $ceti_id . ', ' . app::get('b2c')->_('节点:') . $node_id, 'actions' => array(array('label' => app::get('b2c')->_('新建绑定关系'), 'icon' => 'add.gif', 'href' => 'index.php?app=b2c&ctl=admin_shoprelation&act=addnew', 'target' => '_blank'), array('label' => app::get('b2c')->_('查看绑定情况'), 'icon' => 'add.gif', 'onclick' => 'new Request({evalScripts:true,url:\'index.php?ctl=shoprelation&act=index&p[0]=accept&p[1]=' . $this->app->app_id . '&p[2]=' . $callback . '&p[3]=' . $api_url . '&p[4]=' . $user_id . '&p[5]=' . $user_name . '&p[6]=' . $api_v . '\'}).get()')))); }
public function column_editbutton($row) { $callback_url = urlencode(kernel::api_url('api.b2c.callback.shoprelation', 'callback', array('shop_id' => $row['shop_id']))); $api_url = kernel::base_url(1) . kernel::url_prefix() . '/api'; $str_operation = ""; if ($row['status'] == 'unbind') { $str_operation = '<a href="index.php?app=b2c&ctl=admin_shoprelation&act=showEdit&p[0]=' . $row['shop_id'] . '" target="_blank">编辑</a>'; if ($str_operation) { $str_operation .= ' <a href="index.php?ctl=shoprelation&act=index&p[0]=apply&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '&p[3]=' . $api_url . '">申请绑定</a>'; } else { $str_operation .= '<a href="index.php?ctl=shoprelation&act=index&p[0]=apply&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '&p[3]=' . $api_url . '">申请绑定</a>'; } } else { $str_operation = ''; if ($str_operation) { $str_operation .= ' <a href="index.php?ctl=shoprelation&act=index&p[0]=accept&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '">解除绑定</a>'; } else { $str_operation .= '<a href="index.php?ctl=shoprelation&act=index&p[0]=accept&p[1]=' . $this->app->app_id . '&p[2]=' . $callback_url . '">解除绑定</a>'; } } return $str_operation; }
function save_matrix() { $this->begin(); $get_matrixtype = app::get('system')->getConf('system.matrix.set'); $matrix = app::get('system')->model('matrixset'); $shop = app::get('b2c')->model('shop'); $post = $_POST; $matrixtype = $post['matrixtype']; unset($post['matrixtype']); //查看是否存在绑定关系,如果存在提示解除 $shoplist = $shop->getList('*', array('status' => 'bind')); if ($get_matrixtype != $matrixtype && count($shoplist) > 0) { //$this->begin('index.php?app=b2c&ctl=admin_shoprelation&act=index'); $this->end(false, app::get('system')->_("如果需要切换通道,请先解除现有的绑定关系")); } //基础数据 $post['node_id'] = base_shopnode::node_id('b2c'); $post['node_type'] = "ecos.b2c"; $post['matrixset_id'] = intval($post['matrixset_id']); $api_url = kernel::base_url(1) . kernel::url_prefix() . '/api'; //查看私有矩阵是否已经开通过 $list_matrix = $matrix->getList('*', array('node_id' => $post['node_id'], 'status' => 'active')); if ($matrixtype == "private") { $params = array('node_type' => $post['node_type'], 'node_name' => $post['shopname'], 'api_url' => $api_url, 'token' => $post['token']); $request = kernel::single('system_request'); $request_result = $request->register($post['api_url'], $params); } if ($matrixtype == "private" && $request_result) { app::get('system')->setConf('system.matrix.set', 'private'); $post['status'] = 'active'; $result = $matrix->save($post); } else { app::get('system')->setConf('system.matrix.set', 'public'); $data['status'] = 'dead'; $result = $matrix->update($data, array('status' => 'active', 'node_id' => $post['node_id'])); } $this->end($result); }
function index() { $furl = kernel::base_url(1) . kernel::url_prefix() . '/shopadmin'; $content = '[InternetShortcut] URL=' . $furl . ' IDList=[{000214A0-0000-0000-C000-000000000046}] Prop3=19,2 '; header("Content-type: charset=utf-8"); header("Content-type: application/octet-stream"); /** ¼æÈݸ÷¸öä¯ÀÀÆ÷ **/ $filename = app::get('desktop')->getConf('background.title') . ".url"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); } elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) { header('Content-Disposition: attachment; filename*="utf8' . $filename . '"'); } else { header('Content-Disposition: attachment; filename="' . $filename . '"'); } /** end **/ echo $content; }
public function edit($params) { $secret_key = $params['secret_key']; if (!$this->check_secret_key($secret_key)) { exit('server reject'); } else { $new_secret_key = $secret_key . '.edited'; $this->change_secret_key($secret_key, $new_secret_key); } if (!($orderid = $params['tid'])) { exit('server reject'); } if (!($notify_url = base64_decode(str_replace('%252F', '/', $params['notify_url'])))) { exit('server reject'); } $objOrder = $this->app->model('orders'); $aOrder = $objOrder->dump($orderid, '*'); $objCurrency = app::get('ectools')->model("currency"); $aCur = $objCurrency->getSysCur(); // 所有的goods type 处理的服务的初始化. $arr_service_goods_type_obj = array(); $arr_service_goods_type = kernel::servicelist('order_goodstype_operation'); foreach ($arr_service_goods_type as $obj_service_goods_type) { $goods_types = $obj_service_goods_type->get_goods_type(); $arr_service_goods_type_obj[$goods_types] = $obj_service_goods_type; } $subsdf = array('order_objects' => array('*', array('order_items' => array('*', array(':products' => '*'))))); $aORet = $objOrder->dump($orderid, '*', $subsdf); $order_items = array(); foreach ($aORet['order_objects'] as $k => $v) { $index = 0; $index_adj = 0; $index_gift = 0; if ($v['obj_type'] == 'goods') { foreach ($v['order_items'] as $key => $item) { if (!$item['products']) { $o = $this->app->model('order_items'); $tmp = $o->getList('*', array('item_id' => $item['item_id'])); $item['products']['product_id'] = $tmp[0]['product_id']; } if ($item['item_type'] != 'gift') { $gItems[$k]['addon'] = unserialize($item['addon']); if ($item['minfo'] && unserialize($item['minfo'])) { $gItems[$k]['minfo'] = unserialize($item['minfo']); } else { $gItems[$k]['minfo'] = array(); } if ($item['item_type'] == 'product') { if ($arr_service_goods_type_obj['goods']) { $str_service_goods_type_obj = $arr_service_goods_type_obj['goods']; $str_service_goods_type_obj->get_order_object(array('goods_id' => $item['goods_id'], 'product_id' => $item['products']['product_id']), $arrGoods, 'admin_order_edit'); } $order_items[$k] = $item; $order_items[$k]['small_pic'] = $arrGoods['image_default_id']; $order_items[$k]['is_type'] = $v['obj_type']; $order_items[$k]['item_type'] = $arrGoods['category']['cat_name']; $order_items[$k]['link_url'] = $arrGoods['link_url']; $order_items[$k]['name'] = $item['name']; if ($item['addon']) { $item['addon'] = unserialize($item['addon']); if ($item['addon']['product_attr']) { $order_items[$k]['name'] .= '('; foreach ($item['addon']['product_attr'] as $arr_special_info) { $order_items[$k]['name'] .= $arr_special_info['label'] . app::get('b2c')->_(':') . $arr_special_info['value'] . app::get('b2c')->_('、'); } $order_items[$k]['name'] = substr($order_items[$k]['name'], 0, strpos($order_items[$k]['name'], app::get('b2c')->_('、'))); $order_items[$k]['name'] .= ')'; } } } else { if ($arr_service_goods_type_obj['adjunct']) { $str_service_goods_type_obj = $arr_service_goods_type_obj['adjunct']; $str_service_goods_type_obj->get_order_object(array('goods_id' => $item['goods_id'], 'product_id' => $item['products']['product_id']), $arrGoods, 'admin_order_edit'); } $order_items[$k]['adjunct'][$index_adj] = $item; $order_items[$k]['adjunct'][$index_adj]['small_pic'] = $arrGoods['image_default_id']; $order_items[$k]['adjunct'][$index_adj]['is_type'] = $v['obj_type']; $order_items[$k]['adjunct'][$index_adj]['item_type'] = $arrGoods['category']['cat_name']; $order_items[$k]['adjunct'][$index_adj]['link_url'] = $arrGoods['link_url']; $order_items[$k]['adjunct'][$index_adj]['name'] = $item['name']; if ($item['addon']) { $item['addon'] = unserialize($item['addon']); if ($item['addon']['product_attr']) { $order_items[$k]['adjunct'][$index_adj]['name'] .= '('; foreach ($item['addon']['product_attr'] as $arr_special_info) { $order_items[$k]['adjunct'][$index_adj]['name'] .= $arr_special_info['label'] . app::get('b2c')->_(':') . $arr_special_info['value'] . app::get('b2c')->_('、'); } $order_items[$k]['adjunct'][$index_adj]['name'] = substr($order_items[$k]['adjunct'][$index_adj]['name'], 0, strpos($order_items[$k]['adjunct'][$index_adj]['name'], app::get('b2c')->_('、'))); $order_items[$k]['adjunct'][$index_adj]['name'] .= ')'; } } $index_adj++; } } else { if ($arr_service_goods_type_obj['gift']) { $str_service_goods_type_obj = $arr_service_goods_type_obj['gift']; $str_service_goods_type_obj->get_order_object(array('goods_id' => $item['goods_id'], 'product_id' => $item['products']['product_id']), $arrGoods, 'admin_order_edit'); $order_items[$k]['gifts'][$index_gift] = $item; $order_items[$k]['gifts'][$index_gift]['small_pic'] = $arrGoods['image_default_id']; $order_items[$k]['gifts'][$index_gift]['is_type'] = $v['obj_type']; $order_items[$k]['gifts'][$index_gift]['item_type'] = $arrGoods['category']['cat_name']; $order_items[$k]['gifts'][$index_gift]['link_url'] = $arrGoods['link_url']; $order_items[$k]['gifts'][$index_gift]['name'] = $item['name']; if ($item['addon']) { $item['addon'] = unserialize($item['addon']); if ($item['addon']['product_attr']) { $order_items[$k]['gifts'][$index_gift]['name'] .= '('; foreach ($item['addon']['product_attr'] as $arr_special_info) { $order_items[$k]['gifts'][$index_gift]['name'] .= $arr_special_info['label'] . app::get('b2c')->_(':') . $arr_special_info['value'] . app::get('b2c')->_('、'); } $order_items[$k]['gifts'][$index_gift]['name'] = substr($order_items[$k]['gifts'][$index_gift]['name'], 0, strpos($order_items[$k]['gifts'][$index_gift]['name'], app::get('b2c')->_('、'))); $order_items[$k]['gifts'][$index_gift]['name'] .= ')'; } } $index_gift++; } } //获取商品类型的库存是否设置为小数库存---anjiaxin--start if ($item['type_id']) { $type = app::get('b2c')->model('goods_type')->dump($item['type_id']); $order_items[$k]['numtype'] = $type['floatstore']; } //----------end } } else { if ($v['obj_type'] == 'gift') { $str_service_goods_type_obj = $arr_service_goods_type_obj['gift']; foreach ($v['order_items'] as $gift_key => $gift_item) { if (!$gift_item['products']) { $o = $this->app->model('order_items'); $tmp = $o->getList('*', array('item_id' => $gift_item['item_id'])); $gift_item['products']['product_id'] = $tmp[0]['product_id']; } if (isset($gift_items[$gift_item['goods_id']]) && $gift_items[$gift_item['goods_id']]) { $gift_items[$gift_item['goods_id']]['nums'] = $this->objMath->number_plus(array($gift_items[$gift_item['goods_id']]['nums'], $item['quantity'])); } else { $str_service_goods_type_obj->get_order_object(array('goods_id' => $gift_item['goods_id'], 'product_id' => $gift_item['products']['product_id']), $arrGoods, 'admin_order_edit'); $gift_name = $gift_item['name']; if ($gift_item['addon']) { $arr_addon = unserialize($gift_item['addon']); if ($arr_addon['product_attr']) { $gift_name .= '('; foreach ($arr_addon['product_attr'] as $arr_product_attr) { $gift_name .= $arr_product_attr['label'] . $this->app->_(":") . $arr_product_attr['value'] . $this->app->_(" "); } if (strpos($gift_name, $this->app->_(" ")) !== false) { $gift_name = substr($gift_name, 0, strrpos($gift_name, $this->app->_(" "))); } $gift_name .= ')'; } } $gift_items[$gift_item['products']['product_id']] = array('goods_id' => $gift_item['goods_id'], 'product_id' => $gift_item['products']['product_id'], 'bn' => $gift_item['bn'], 'nums' => $gift_item['quantity'], 'name' => $gift_name, 'item_type' => $arrGoods['category']['cat_name'], 'price' => $gift_item['price'], 'quantity' => $gift_item['quantity'], 'sendnum' => $gift_item['sendnum'], 'small_pic' => $arrGoods['image_default_id'], 'is_type' => $v['obj_type'], 'link_url' => $arrGoods['link_url'], 'item_id' => $gift_item['item_id']); } } } else { // 赠品以外的其他区块的解析. if ($arr_service_goods_type_obj[$v['obj_type']]) { $str_service_goods_type_obj = $arr_service_goods_type_obj[$v['obj_type']]; $extends_items[] = $str_service_goods_type_obj->get_order_object($v, $arrGoods, 'admin_order_edit'); } } } } $aOrder['items'] = $order_items; $aOrder['gifts'] = $gift_items; $aOrder['extends_items'] = $extends_items; if ($aOrder['member_id'] > 0) { $objMember = $this->app->model('members'); $aOrder['member'] = $objMember->dump($aOrder['member_id'], '*', array('pam_account' => array('*'))); foreach ($aOrder['member']['pam_account'] as $row) { $aOrder['member'][$row['login_type']] = $row['login_account']; } $aOrder['ship_email'] = $aOrder['pam_account']['email']['login_account']; } else { $aOrder['member'] = array(); } $objDelivery = $this->app->model('dlytype'); $aArea = app::get('ectools')->model('regions')->getList('*', null, 0, -1); foreach ($aArea as $v) { $aTmp[$v['name']] = $v['name']; } $aOrder['deliveryArea'] = $aTmp; $aRet = $objDelivery->getList('*', null, 0, -1); foreach ($aRet as $v) { $aShipping[$v['dt_id']] = $v['dt_name']; } $aOrder['selectDelivery'] = $aShipping; $objPayment = app::get('ectools')->model('payment_cfgs'); $aRet = $objPayment->getList('*', array('status' => 'true', 'platform' => array('iscommon', 'ispc'), 'is_frontend' => true)); if (!$aORet['member_id']) { if ($aRet) { foreach ($aRet as $key => $arr_payments) { if (trim($arr_payments['app_id']) == 'deposit') { unset($aRet[$key]); } } } } $aPayment[-1] = app::get('b2c')->_('货到付款'); foreach ($aRet as $v) { $aPayment[$v['app_id']] = $v['app_name']; } $aOrder['selectPayment'] = $aPayment; $objCurrency = app::get('ectools')->model("currency"); $aRet = $objCurrency->curAll(); foreach ($aRet as $v) { $aCurrency[$v['cur_code']] = $v['cur_name']; } $site_trigger_tax = $this->app->getConf('site.trigger_tax'); $this->pagedata['site_trigger_tax'] = $site_trigger_tax; $aOrder['curList'] = $aCurrency; $aOrder['cur_name'] = $aCurrency[$aOrder['currency']]; $this->pagedata['order'] = $aOrder; $this->pagedata['finder_id'] = $_GET['finder_id']; $this->pagedata['base_url'] = kernel::base_url(1) . kernel::url_prefix() . '/openapi/b2c.iframe.order.edit'; $this->pagedata['res_url'] = app::get('desktop')->res_url; $this->pagedata['secret_key'] = $new_secret_key; $this->pagedata['notify_url'] = $notify_url; $this->page('admin/order/order_edit_iframe.html'); }
public function create() { $this->verify_member(); /** * 取到扩展参数,用来判断是否是团购立即购买,团购则不判断登录(无注册购买情况下) */ $_POST['&response_json'] = true; $arr_args = func_get_args(); $arr_args = array('get' => $arr_args, 'post' => $_POST); // print_r($arr_args);exit; $groupbuy = (array) json_decode($arr_args['post']['extends_args']); // 判断顾客登录方式. #$login_type = $this->app->getConf('site.login_type'); $arrMember = kernel::single('b2c_user_object')->get_current_member(); //member_id,uname // checkout url // $this->begin(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout')); $db = kernel::database(); $transaction_status = $db->beginTransaction(); $this->mCart = $this->app->model('cart'); if (isset($_POST['isfastbuy']) && $_POST['isfastbuy'] != 'false') { $is_fastbuy = 'true'; $fastbuy_filter['is_fastbuy'] = $is_fastbuy; } else { $is_fastbuy = false; $fastbuy_filter = true; } $aCart = $this->mCart->get_objects($fastbuy_filter); //当有活动时,在生成订单前做一个当前购买数量与实际库存的判断 if (isset($aCart['cart_status'])) { //$this->end(false,app::get('b2c')->_($aCart['cart_error_html']),$this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'index')),true,true); kernel::single('base_rpc_service')->send_user_error('cart_error', $aCart['cart_error_html']); } // 校验购物车是否为空 if ($this->mCart->is_empty($aCart)) { //$this->end(false,app::get('b2c')->_('操作失败,购物车为空!'),$this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'index')),true,true); kernel::single('base_rpc_service')->send_user_error('cart_error', '操作失败,购物车为空!'); } // 校验购物车有没有发生变化 $md5_cart_info = $_POST['md5_cart_info']; if (!defined("STRESS_TESTING") && $md5_cart_info != kernel::single("b2c_cart_objects")->md5_cart_objects($is_fastbuy)) { // $this->end(false,app::get('b2c')->_('购物车内容发生变化,请重新结算!'),$this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout')),true,true); kernel::single('base_rpc_service')->send_user_error('cart_change_error', '购物车内容发生变化,请重新结算!'); } $msg = ""; if (!$_POST['address']) { $msg .= app::get('b2c')->_("请先确认收货地址") . "<br />"; // $this->end(false, $msg,null,true,true); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } else { $address = json_decode($_POST['address'], true); unset($_POST['address']); unset($_POST['purchase']); $addr = $this->app->model('member_addrs')->getList('*', array('addr_id' => $address['addr_id'], 'member_id' => $arrMember['member_id'])); if ($this->app->getConf('site.checkout.zipcode.required.open') == 'true' && empty($addr[0]['zip'])) { // $this->end(false,app::get('b2c')->_('收货地址不完整,请填写邮编'),null,true,true); kernel::single('base_rpc_service')->send_user_error('order_error', '收货地址不完整,请填写邮编'); } $ship_area_name = app::get('ectools')->model('regions')->change_regions_data($addr[0]['area']); $_POST['delivery']['addr_id'] = $addr[0]['addr_id']; $_POST['delivery']['ship_area'] = $addr[0]['area']; $_POST['delivery']['ship_addr'] = $ship_area_name . $addr[0]['addr']; $_POST['delivery']['ship_zip'] = $addr[0]['zip']; $_POST['delivery']['ship_name'] = $addr[0]['name']; $_POST['delivery']['ship_mobile'] = $addr[0]['mobile']; $_POST['delivery']['ship_tel'] = $addr[0]['tel']; if ($this->app->getConf('site.checkout.receivermore.open') == 'true') { $_POST['delivery']['day'] = $addr[0]['day']; $_POST['delivery']['time'] = $addr[0]['time']; } else { $_POST['delivery']['day'] = app::get('b2c')->_('任意时间'); $_POST['delivery']['time'] = app::get('b2c')->_('任意时间段'); } } if (!$_POST['shipping']) { $msg .= app::get('b2c')->_("请先确认配送方式") . "<br />"; // $this->end(false, $msg, '',true,true); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } else { $shipping = json_decode($_POST['shipping'], true); unset($_POST['shipping']); $_POST['delivery']['shipping_id'] = $shipping['id']; $_POST['delivery']['is_protect'][$shipping['id']] = $_POST['is_protect']; } if (!$_POST['payment']) { $msg .= app::get('b2c')->_("请先确认支付方式") . "<br />"; //$this->end(false, $msg, '',true,true); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } else { $payment_id = json_decode($_POST['payment']['pay_app_id'], true); $_POST['payment']['pay_app_id'] = $payment_id['pay_app_id']; } if ($_POST['point']['score']) { $_POST['payment']['dis_point'] = $_POST['point']['score']; } if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr'] || !$_POST['delivery']['ship_name'] || !$_POST['delivery']['ship_mobile'] && !$_POST['delivery']['ship_tel'] || !$_POST['delivery']['shipping_id'] || !$_POST['payment']['pay_app_id']) { if (!$_POST['delivery']['ship_area']) { $msg .= app::get('b2c')->_("收货地区不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_addr']) { $msg .= app::get('b2c')->_("收货地址不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_name']) { $msg .= app::get('b2c')->_("收货人姓名不能为空!") . "<br />"; } /* if (!$_POST['delivery']['ship_email'] && !$arrMember['member_id']) { $msg .= app::get('b2c')->_("Email不能为空!")."<br />"; } */ if (!$_POST['delivery']['ship_mobile'] && !$_POST['delivery']['ship_tel']) { $msg .= app::get('b2c')->_("手机或电话必填其一!") . "<br />"; } if (!$_POST['delivery']['shipping_id']) { $msg .= app::get('b2c')->_("配送方式不能为空!") . "<br />"; } if (!$_POST['payment']['pay_app_id']) { $msg .= app::get('b2c')->_("支付方式不能为空!") . "<br />"; } if (strpos($msg, '<br />') !== false) { $msg = substr($msg, 0, strlen($msg) - 6); } eval("\$msg = \"{$msg}\";"); // $this->end(false, $msg, '',true,true); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } $obj_dlytype = $this->app->model('dlytype'); if ($_POST['payment']['pay_app_id'] == '-1') { $arr_dlytype = $obj_dlytype->dump($_POST['delivery']['shipping_id'], '*'); if ($arr_dlytype['has_cod'] == 'false') { // $this->end(false, $this->app->_("ship_method_consistent_error"),'',true,true); kernel::single('base_rpc_service')->send_user_error('order_error', 'ship_method_consistent_error'); } } $obj_filter = kernel::single('b2c_site_filter'); $_POST = $obj_filter->check_input($_POST); $order = $this->app->model('orders'); $_POST['order_id'] = $order_id = $order->gen_id(); $_POST['member_id'] = $arrMember['member_id'] ? $arrMember['member_id'] : 0; $order_data = array(); $obj_order_create = kernel::single("b2c_order_create"); // 加入订单能否生成的判断 $obj_checkorder = kernel::service('b2c_order_apps', array('content_path' => 'b2c_order_checkorder')); if ($obj_checkorder) { if (!$obj_checkorder->check_create($aCart, $_POST['delivery']['ship_area'], $message)) { // $this->end(false, $message); kernel::single('base_rpc_service')->send_user_error('order_error', $message); } } $order_data = $obj_order_create->generate($_POST, '', $msg, $aCart); $obj_checkproducts = kernel::servicelist('b2c_order_check_products'); if ($obj_checkproducts) { foreach ($obj_checkproducts as $obj_check) { if (!$obj_check->check_products($order_data, $messages)) { // $this->end(false, $messages); kernel::single('base_rpc_service')->send_user_error('order_error', $message); } } } if (!$order_data || !$order_data['order_objects']) { $db->rollback(); // $this->end(false, $msg, $this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout')),true,true); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } if (isset($_POST['r_time']) && trim($_POST['r_time']) != '') { $order_data['consignee']['r_time'] = trim($_POST['r_time']); } //送货\自提时间 //所属仓库门店 if (isset($_POST['branch_id']) && intval($_POST['branch_id']) > 0) { $order_data['branch_id'] = intval($_POST['branch_id']); $branch_mdl = kernel::single("ome_mdl_branch"); if ($branch_mdl) { $branch_obj = $branch_mdl->dump(array('branch_id' => $order_data['branch_id'])); $order_data['branch_name_user'] = $branch_obj['name']; } } $result = $obj_order_create->save($order_data, $msg); if ($result) { // 发票高级配置埋点 foreach (kernel::servicelist('invoice_setting') as $services) { if (is_object($services)) { if (method_exists($services, 'saveInvoiceData')) { $services->saveInvoiceData($_POST['order_id'], $_POST['payment']); } } } // 与中心交互 $is_need_rpc = false; $obj_rpc_obj_rpc_request_service = kernel::servicelist('b2c.rpc_notify_request'); foreach ($obj_rpc_obj_rpc_request_service as $obj) { if ($obj && method_exists($obj, 'rpc_judge_send')) { if ($obj instanceof b2c_api_rpc_notify_interface) { $is_need_rpc = $obj->rpc_judge_send($order_data); } } if ($is_need_rpc) { break; } } if ($is_need_rpc) { /* $obj_rpc_request_service = kernel::service('b2c.rpc.send.request'); if ($obj_rpc_request_service && method_exists($obj_rpc_request_service, 'rpc_caller_request')) { if ($obj_rpc_request_service instanceof b2c_api_rpc_request_interface) $obj_rpc_request_service->rpc_caller_request($order_data,'create'); } else { $obj_order_create->rpc_caller_request($order_data); }*/ //新的版本控制api $obj_apiv = kernel::single('b2c_apiv_exchanges_request'); $obj_apiv->rpc_caller_request($order_data, 'ordercreate'); } } // 取到日志模块 if ($arrMember['member_id']) { $obj_members = $this->app->model('members'); $arrPams['pam_account']['login_name'] = $arrMember['uname']; } // remark create $obj_order_create = kernel::single("b2c_order_remark"); $arr_remark = array('order_bn' => $order_id, 'mark_text' => $_POST['memo'], 'op_name' => !$arrMember['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'mark_type' => 'b0'); $log_text = ""; if ($result) { $log_text[] = array('txt_key' => '订单创建成功!', 'data' => array()); $log_text = serialize($log_text); } else { $log_text[] = array('txt_key' => '订单创建失败!', 'data' => array()); $log_text = serialize($log_text); } $orderLog = $this->app->model("order_log"); $sdf_order_log = array('rel_id' => $order_id, 'op_id' => $arrMember['member_id'], 'op_name' => !$arrMember['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'creates', 'result' => 'SUCCESS', 'log_text' => $log_text); $log_id = $orderLog->save($sdf_order_log); if ($result) { foreach (kernel::servicelist('b2c_save_post_om') as $object) { $object->set_arr($order_id, 'order'); } // 设定优惠券不可以使用 if (isset($aCart['object']['coupon']) && $aCart['object']['coupon']) { $obj_coupon = kernel::single("b2c_coupon_mem"); foreach ($aCart['object']['coupon'] as $coupons) { if ($coupons['used']) { $obj_coupon->use_c($coupons['coupon'], $arrMember['member_id']); } } } // 订单成功后清除购物车的的信息 $this->cart_model = $this->app->model('cart_objects'); $this->cart_model->remove_object('', null, $mag, $is_fastbuy); // 生成cookie有效性的验证信息 setcookie('ST_ShopEx-Order-Buy', md5($this->app->getConf('certificate.token') . $order_id)); setcookie("purchase[addr][usable]", "", time() - 3600, kernel::base_url() . '/'); setcookie("purchase[shipping]", "", time() - 3600, kernel::base_url() . '/'); setcookie("purchase[payment]", "", time() - 3600, kernel::base_url() . '/'); setcookie("checkout_b2c_goods_buy_info", "", time() - 3600, kernel::base_url() . '/'); // 得到物流公司名称 if ($order_data['order_objects']) { $itemNum = 0; $good_id = ""; $goods_name = ""; foreach ($order_data['order_objects'] as $arr_objects) { if ($arr_objects['order_items']) { if ($arr_objects['obj_type'] == 'goods') { $obj_goods = $this->app->model('goods'); $good_id = $arr_objects['order_items'][0]['goods_id']; $obj_goods->updateRank($good_id, 'buy_count', $arr_objects['order_items'][0]['quantity']); $arr_goods = $obj_goods->parent_getList('image_default_id', array('goods_id' => $good_id)); $arr_goods = $arr_goods[0]; } foreach ($arr_objects['order_items'] as $arr_items) { $itemNum = $this->objMath->number_plus(array($itemNum, $arr_items['quantity'])); if ($arr_objects['obj_type'] == 'goods') { if ($arr_items['item_type'] == 'product') { $goods_name .= $arr_items['name'] . ($arr_items['products']['spec_info'] ? '(' . $arr_items['products']['spec_info'] . ')' : '') . '(' . $arr_items['quantity'] . ')'; } } } } } $arr_dlytype = $obj_dlytype->dump($order_data['shipping']['shipping_id'], 'dt_name'); $arr_updates = array('order_id' => $order_id, 'total_amount' => $order_data['total_amount'], 'shipping_id' => $arr_dlytype['dt_name'], 'ship_mobile' => $order_data['consignee']['mobile'], 'ship_tel' => $order_data['consignee']['telephone'], 'ship_addr' => $order_data['consignee']['addr'], 'ship_email' => $order_data['consignee']['email'] ? $order_data['consignee']['email'] : '', 'ship_zip' => $order_data['consignee']['zip'], 'ship_name' => $order_data['consignee']['name'], 'member_id' => $order_data['member_id'] ? $order_data['member_id'] : 0, 'uname' => !$order_data['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'itemnum' => count($order_data['order_objects']), 'goods_id' => $good_id, 'goods_url' => kernel::base_url(1) . kernel::url_prefix(), 'thumbnail_pic' => base_storager::image_path($arr_goods['image_default_id']), 'goods_name' => $goods_name, 'ship_status' => '', 'pay_status' => 'Nopay', 'is_frontend' => true); $order->fireEvent('create', $arr_updates, $order_data['member_id']); } $db->commit($transaction_status); /** 订单创建结束后执行的方法 **/ $odr_create_service = kernel::servicelist('b2c_order.create'); $arr_order_create_after = array(); if ($odr_create_service) { foreach ($odr_create_service as $odr_ser) { if (!is_object($odr_ser)) { continue; } if (method_exists($odr_ser, 'get_order')) { $index = $odr_ser->get_order(); } else { $index = 10; } while (true) { if (!isset($arr_order_create_after[$index])) { break; } $index++; } $arr_order_create_after[$index] = $odr_ser; } } ksort($arr_order_create_after); if ($arr_order_create_after) { foreach ($arr_order_create_after as $obj) { $obj->generate($order_data); } } /** end **/ } else { $db->rollback(); } if ($result) { $order_num = $order->count(array('member_id' => $order_data['member_id'])); $obj_mem = $this->app->model('members'); $obj_mem->update(array('order_num' => $order_num), array('member_id' => $order_data['member_id'])); /** 订单金额为0 **/ if ($order_data['cur_amount'] == '0') { // 模拟支付流程 $objPay = kernel::single("ectools_pay"); $sdf = array('payment_id' => $objPay->get_payment_id($order_data['order_id']), 'order_id' => $order_data['order_id'], 'rel_id' => $order_data['order_id'], 'op_id' => $order_data['member_id'], 'pay_app_id' => $order_data['payinfo']['pay_app_id'], 'currency' => $order_data['currency'], 'payinfo' => array('cost_payment' => $order_data['payinfo']['cost_payment']), 'pay_object' => 'order', 'member_id' => $order_data['member_id'], 'op_name' => $this->user->user_data['account']['login_name'], 'status' => 'ready', 'cur_money' => $order_data['cur_amount'], 'money' => $order_data['total_amount']); $is_payed = $objPay->gopay($sdf, $msg); if (!$is_payed) { $msg = app::get('b2c')->_('订单自动支付失败!'); // $this->end(false, $msg, $this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout'))); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } $obj_pay_lists = kernel::servicelist("order.pay_finish"); $is_payed = false; foreach ($obj_pay_lists as $order_pay_service_object) { $is_payed = $order_pay_service_object->order_pay_finish($sdf, 'succ', 'font', $msg); } } return $order_data; // $this->end(true, $this->app->_("订单生成成功!"), $this->gen_url(array('app'=>'b2c','ctl'=>'site_paycenter','act'=>'index','arg0'=>$order_id,'arg1'=>'true')),'',true); } else { // $this->end(false, $msg, $this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout')),true,true); kernel::single('base_rpc_service')->send_user_error('order_error', $msg); } }
static function openapi_url($openapi_service_name, $method = 'access', $params = null) { if (substr($openapi_service_name, 0, 8) != 'openapi.') { trigger_error('$openapi_service_name must start with: openapi.'); return false; } $arg = array(); foreach ((array) $params as $k => $v) { $arg[] = urlencode($k); $arg[] = urlencode(str_replace('/', '%2F', $v)); } return kernel::base_url(1) . kernel::url_prefix() . '/openapi/' . substr($openapi_service_name, 8) . '/' . $method . '/' . implode('/', $arg); }
public function create() { /** * 取到扩展参数,用来判断是否是团购立即购买,团购则不判断登录(无注册购买情况下) */ $this->app->setConf('system.goods.freez.time', '2'); $arr_args = func_get_args(); $arr_args = array('get' => $arr_args, 'post' => $_POST); $groupbuy = (array) json_decode($arr_args['post']['extends_args']); // 判断顾客登录方式. #$login_type = $this->app->getConf('site.login_type'); $arrMember = $this->get_current_member(); // checkout url $this->begin(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout')); $db = kernel::database(); $transaction_status = $db->beginTransaction(); $this->mCart = $this->app->model('cart'); if (isset($_POST['isfastbuy']) && $_POST['isfastbuy']) { $is_fastbuy = 'true'; $fastbuy_filter['is_fastbuy'] = $is_fastbuy; } else { $is_fastbuy = false; $fastbuy_filter = true; } $aCart = $this->mCart->get_objects($fastbuy_filter); // hack by jason 判断如果是门店来的订单,则将库存设置为最大 if (isset($_COOKIE['loginType']) && $_COOKIE['loginType'] == 'store') { $obj_goods = kernel::single('b2c_cart_object_goods'); foreach ($aCart['object']['goods'] as $key => $goods) { foreach ($goods['obj_items']['products'] as $k => $products) { $erp_store = $obj_goods->get_erp_store($aCart['object']['goods'][$key]['obj_items']['products'][$k]['bn'], $_SESSION['local_store']['branch_id'], $aCart['object']['goods'][$key]['obj_items']['products'][$k]['goods_id']); $aCart['object']['goods'][$key]['obj_items']['products'][$k]['store'] = $erp_store; if ($erp_store == 999999) { unset($aCart['cart_status']); unset($aCart['cart_error_html']); $goods['store']['real'] = 999999; $goods['store']['store'] = 999999; } } } } //hack by Jason end //当有活动时,在生成订单前做一个当前购买数量与实际库存的判断 if (isset($aCart['cart_status'])) { $this->end(false, app::get('b2c')->_($aCart['cart_error_html']), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'index')), true, true); } // 校验购物车是否为空 if ($this->mCart->is_empty($aCart)) { $this->end(false, app::get('b2c')->_('操作失败,购物车为空!'), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'index')), true, true); } // 校验购物车有没有发生变化 $md5_cart_info = $_POST['md5_cart_info']; if (!defined("STRESS_TESTING") && $md5_cart_info != kernel::single("b2c_cart_objects")->md5_cart_objects($is_fastbuy)) { //$this->end(false,app::get('b2c')->_('购物车内容发生变化,请重新结算!'),$this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout')),true,true); $msg = ""; } if (!$_POST['address']) { $msg .= app::get('b2c')->_("请先确认收货地址") . "<br />"; $this->end(false, $msg, null, true, true); } else { $address = json_decode($_POST['address'], true); unset($_POST['address']); unset($_POST['purchase']); $addr = $this->app->model('member_addrs')->getList('*', array('addr_id' => $address['addr_id'], 'member_id' => $arrMember['member_id'])); if ($this->app->getConf('site.checkout.zipcode.required.open') == 'true' && empty($addr[0]['zip'])) { $this->end(false, app::get('b2c')->_('收货地址不完整,请填写邮编'), null, true, true); } $ship_area_name = app::get('ectools')->model('regions')->change_regions_data($addr[0]['area']); $_POST['delivery']['addr_id'] = $addr[0]['addr_id']; $_POST['delivery']['ship_area'] = $addr[0]['area']; $_POST['delivery']['ship_addr'] = $ship_area_name . $addr[0]['addr']; $_POST['delivery']['ship_zip'] = $addr[0]['zip']; $_POST['delivery']['ship_name'] = $addr[0]['name']; $_POST['delivery']['ship_mobile'] = $addr[0]['mobile']; $_POST['delivery']['ship_tel'] = $addr[0]['tel']; $_POST['delivery']['day'] = $addr[0]['day']; $_POST['delivery']['time'] = $addr[0]['time']; } if (!$_POST['shipping']) { $msg .= app::get('b2c')->_("请先确认配送方式") . "<br />"; $this->end(false, $msg, '', true, true); } else { $shipping = json_decode($_POST['shipping'], true); unset($_POST['shipping']); $_POST['delivery']['shipping_id'] = $shipping['id']; $_POST['delivery']['is_protect'][$shipping['id']] = $_POST['is_protect']; } if (!$_POST['payment']) { $msg .= app::get('b2c')->_("请先确认支付方式") . "<br />"; $this->end(false, $msg, '', true, true); } else { $payment_id = json_decode($_POST['payment']['pay_app_id'], true); $_POST['payment']['pay_app_id'] = $payment_id['pay_app_id']; } if ($_POST['point']['score']) { $_POST['payment']['dis_point'] = $_POST['point']['score']; } if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr'] || !$_POST['delivery']['ship_name'] || !$_POST['delivery']['ship_mobile'] && !$_POST['delivery']['ship_tel'] || !$_POST['delivery']['shipping_id'] || !$_POST['payment']['pay_app_id']) { if (!$_POST['delivery']['ship_area']) { $msg .= app::get('b2c')->_("收货地区不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_addr']) { $msg .= app::get('b2c')->_("收货地址不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_name']) { $msg .= app::get('b2c')->_("收货人姓名不能为空!") . "<br />"; } /* if (!$_POST['delivery']['ship_email'] && !$arrMember['member_id']) { $msg .= app::get('b2c')->_("Email不能为空!")."<br />"; } */ if (!$_POST['delivery']['ship_mobile'] && !$_POST['delivery']['ship_tel']) { $msg .= app::get('b2c')->_("手机或电话必填其一!") . "<br />"; } if (!$_POST['delivery']['shipping_id']) { $msg .= app::get('b2c')->_("配送方式不能为空!") . "<br />"; } if (!$_POST['payment']['pay_app_id']) { $msg .= app::get('b2c')->_("支付方式不能为空!") . "<br />"; } if (strpos($msg, '<br />') !== false) { $msg = substr($msg, 0, strlen($msg) - 6); } eval("\$msg = \"{$msg}\";"); $this->end(false, $msg, '', true, true); } $obj_dlytype = $this->app->model('dlytype'); if ($_POST['payment']['pay_app_id'] == '-1') { $arr_dlytype = $obj_dlytype->dump($_POST['delivery']['shipping_id'], '*'); if ($arr_dlytype['has_cod'] == 'false') { $this->end(false, $this->app->_("ship_method_consistent_error"), '', true, true); } } $obj_filter = kernel::single('b2c_site_filter'); $_POST = $obj_filter->check_input($_POST); $order =& $this->app->model('orders'); $_POST['order_id'] = $order_id = $order->gen_id(); $_POST['member_id'] = $arrMember['member_id'] ? $arrMember['member_id'] : 0; $order_data = array(); $obj_order_create = kernel::single("b2c_order_create"); // 加入订单能否生成的判断 $obj_checkorder = kernel::service('b2c_order_apps', array('content_path' => 'b2c_order_checkorder')); if ($obj_checkorder) { if (!$obj_checkorder->check_create($aCart, $_POST['delivery']['ship_area'], $message)) { $this->end(false, $message); } } $order_data = $obj_order_create->generate($_POST, '', $msg, $aCart); /* if($_POST['yucont'] == 1 ){ if($order_data['total_amount'] <= $arrMember['advance']){ $member_id = $order_data['member_id']; $psm = -$order_data['total_amount']; $msg = '预存款门店订单付款'; $objAdvance = $this->app->model("member_advance"); $status = $objAdvance->add($member_id, $psm, app::get('b2c')->_('预存款门店订单付款'), $msg); }else{ return FALSE; } } */ $obj_checkproducts = kernel::servicelist('b2c_order_check_products'); if ($obj_checkproducts) { foreach ($obj_checkproducts as $obj_check) { if (!$obj_check->check_products($order_data, $messages) && $_COOKIE['loginType'] != 'store') { $this->end(false, $messages); } } } if (!$order_data || !$order_data['order_objects']) { $db->rollback(); $this->end(false, $msg, $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout')), true, true); } if ($_POST['czkgoods'] == 1) { $order_data['czkcz_is'] = $_POST['czkgoods']; } // 订单自动完成与仓库数据 $order_data['is_auto_complete'] = $_POST['is_auto_complete']; $order_data['staff_id'] = intval($_POST['staff']); $order_data['staff_name'] = $_POST['staff_name']; //所属仓库门店 //if(isset($_POST['branch_id']) && intval($_POST['branch_id']) > 0 && $order_data['shipping']['shipping_name'] == '门店自提'){ if (isset($_POST['branch_id']) && intval($_POST['branch_id']) > 0) { $order_data['branch_id'] = intval($_POST['branch_id']); $branch_mdl = kernel::single("ome_mdl_branch"); if ($branch_mdl) { $branch_obj = $branch_mdl->dump(array('branch_id' => $order_data['branch_id'])); $order_data['branch_name_user'] = $branch_obj['name']; $order_data['branch_name_user_b'] = $branch_obj['name_b']; //将仓库别称存入order表 bySam20153017 } } else { $order_data['branch_id'] = 0; $order_data['branch_name_user'] = ''; } $result = $obj_order_create->save($order_data, $msg); // 取到日志模块 if ($arrMember['member_id']) { $obj_members = $this->app->model('members'); #$arrPams = $obj_members->dump($arrMember['member_id'], '*', array(':account@pam' => array('*'))); $arrPams['pam_account']['login_name'] = $arrMember['uname']; } // remark create $obj_order_create = kernel::single("b2c_order_remark"); $arr_remark = array('order_bn' => $order_id, 'mark_text' => $_POST['memo'], 'op_name' => !$arrMember['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'mark_type' => 'b0'); $log_text = ""; if ($result) { $log_text[] = array('txt_key' => '订单创建成功!', 'data' => array()); $log_text = serialize($log_text); } else { $log_text[] = array('txt_key' => '订单创建失败!', 'data' => array()); $log_text = serialize($log_text); } $orderLog = $this->app->model("order_log"); $sdf_order_log = array('rel_id' => $order_id, 'op_id' => $arrMember['member_id'], 'op_name' => !$arrMember['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'creates', 'result' => 'SUCCESS', 'log_text' => $log_text); $log_id = $orderLog->save($sdf_order_log); if ($result) { foreach (kernel::servicelist('b2c_save_post_om') as $object) { $object->set_arr($order_id, 'order'); } // 设定优惠券不可以使用 if (isset($aCart['object']['coupon']) && $aCart['object']['coupon']) { $obj_coupon = kernel::single("b2c_coupon_mem"); foreach ($aCart['object']['coupon'] as $coupons) { if ($coupons['used']) { $obj_coupon->use_c($coupons['coupon'], $arrMember['member_id']); } } } // 订单成功后清除购物车的的信息 $this->cart_model =& $this->app->model('cart_objects'); $this->cart_model->remove_object('', null, $mag, $is_fastbuy); $this->app->model('cart')->unset_data(); // 生成cookie有效性的验证信息 setcookie('ST_ShopEx-Order-Buy', md5($this->app->getConf('certificate.token') . $order_id)); setcookie("purchase[addr][usable]", "", time() - 3600, kernel::base_url() . '/'); setcookie("purchase[shipping]", "", time() - 3600, kernel::base_url() . '/'); setcookie("purchase[payment]", "", time() - 3600, kernel::base_url() . '/'); setcookie("checkout_b2c_goods_buy_info", "", time() - 3600, kernel::base_url() . '/'); // 得到物流公司名称 if ($order_data['order_objects']) { $itemNum = 0; $good_id = ""; $goods_name = ""; foreach ($order_data['order_objects'] as $arr_objects) { if ($arr_objects['order_items']) { if ($arr_objects['obj_type'] == 'goods') { $obj_goods = $this->app->model('goods'); $good_id = $arr_objects['order_items'][0]['goods_id']; $obj_goods->updateRank($good_id, 'buy_count', $arr_objects['order_items'][0]['quantity']); $arr_goods = $obj_goods->parent_getList('image_default_id', array('goods_id' => $good_id)); $arr_goods = $arr_goods[0]; } foreach ($arr_objects['order_items'] as $arr_items) { $itemNum = $this->objMath->number_plus(array($itemNum, $arr_items['quantity'])); if ($arr_objects['obj_type'] == 'goods') { if ($arr_items['item_type'] == 'product') { $goods_name .= $arr_items['name'] . ($arr_items['products']['spec_info'] ? '(' . $arr_items['products']['spec_info'] . ')' : '') . '(' . $arr_items['quantity'] . ')'; } } } } } $arr_dlytype = $obj_dlytype->dump($order_data['shipping']['shipping_id'], 'dt_name'); $arr_updates = array('order_id' => $order_id, 'total_amount' => $order_data['total_amount'], 'shipping_id' => $arr_dlytype['dt_name'], 'ship_mobile' => $order_data['consignee']['mobile'], 'ship_tel' => $order_data['consignee']['telephone'], 'ship_addr' => $order_data['consignee']['addr'], 'ship_email' => $order_data['consignee']['email'] ? $order_data['consignee']['email'] : '', 'ship_zip' => $order_data['consignee']['zip'], 'ship_name' => $order_data['consignee']['name'], 'member_id' => $order_data['member_id'] ? $order_data['member_id'] : 0, 'uname' => !$order_data['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'itemnum' => count($order_data['order_objects']), 'goods_id' => $good_id, 'goods_url' => kernel::base_url(1) . kernel::url_prefix() . $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'act' => 'index', 'arg0' => $good_id)), 'thumbnail_pic' => base_storager::image_path($arr_goods['image_default_id']), 'goods_name' => $goods_name, 'ship_status' => '', 'pay_status' => 'Nopay', 'is_frontend' => true); $order->fireEvent('create', $arr_updates, $order_data['member_id']); } $c_result = $db->commit($transaction_status); //门店充值卡充值 if ($_POST['is_store_cz'] == 2) { $orders_czkcz = $this->app->model('orders'); $save_data['czkcz_is'] = 2; $orders_czkcz->update($save_data, array('order_id' => $order_id)); $member_id = $order_data['member_id']; $msg = '门店充值卡充值'; $objAdvances = $this->app->model("member_advance"); $objAdvances->add($member_id, $order_data['total_amount'], app::get('b2c')->_('门店充值卡充值'), $msg); } /** 订单创建结束后执行的方法 **/ $odr_create_service = kernel::servicelist('b2c_order.create'); $arr_order_create_after = array(); if ($odr_create_service) { foreach ($odr_create_service as $odr_ser) { if (!is_object($odr_ser)) { continue; } if (method_exists($odr_ser, 'get_order')) { $index = $odr_ser->get_order(); } else { $index = 10; } while (true) { if (!isset($arr_order_create_after[$index])) { break; } $index++; } $arr_order_create_after[$index] = $odr_ser; } } ksort($arr_order_create_after); if ($arr_order_create_after) { foreach ($arr_order_create_after as $obj) { $obj->generate($order_data); } } /** end **/ } else { $db->rollback(); } $order_info = $db->select("select * from sdb_b2c_orders where order_id={$order_id}"); if ($result && $order_info && $c_result) { // 发票高级配置埋点 begin 矩阵通信 foreach (kernel::servicelist('invoice_setting') as $services) { if (is_object($services)) { if (method_exists($services, 'saveInvoiceData')) { $services->saveInvoiceData($_POST['order_id'], $_POST['payment']); } } } // 与中心交互 $is_need_rpc = false; /*$obj_rpc_obj_rpc_request_service = kernel::servicelist('b2c.rpc_notify_request'); foreach ($obj_rpc_obj_rpc_request_service as $obj) { if ($obj && method_exists($obj, 'rpc_judge_send')) { if ($obj instanceof b2c_api_rpc_notify_interface) $is_need_rpc = $obj->rpc_judge_send($order_data); } if ($is_need_rpc) break; }*/ if ($is_need_rpc) { /* $obj_rpc_request_service = kernel::service('b2c.rpc.send.request'); if ($obj_rpc_request_service && method_exists($obj_rpc_request_service, 'rpc_caller_request')) { if ($obj_rpc_request_service instanceof b2c_api_rpc_request_interface) $obj_rpc_request_service->rpc_caller_request($order_data,'create'); } else { $obj_order_create->rpc_caller_request($order_data); }*/ //新的版本控制api $obj_apiv = kernel::single('b2c_apiv_exchanges_request'); $obj_apiv->rpc_caller_request($order_data, 'ordercreate'); } //end 矩阵通信 $order_num = $order->count(array('member_id' => $order_data['member_id'])); $obj_mem = $this->app->model('members'); $obj_mem->update(array('order_num' => $order_num), array('member_id' => $order_data['member_id'])); /** 订单金额为0 / 门店自动支付 **/ if ($order_data['cur_amount'] == '0' || $_POST['is_store'] == 1) { // 模拟支付流程 $objPay = kernel::single("ectools_pay"); $sdf = array('payment_id' => $objPay->get_payment_id($order_data['order_id']), 'order_id' => $order_data['order_id'], 'rel_id' => $order_data['order_id'], 'op_id' => $order_data['member_id'], 'pay_app_id' => $order_data['payinfo']['pay_app_id'], 'currency' => $order_data['currency'], 'payinfo' => array('cost_payment' => $order_data['payinfo']['cost_payment']), 'pay_object' => 'order', 'member_id' => $order_data['member_id'], 'op_name' => $this->user->user_data['account']['login_name'], 'status' => 'ready', 'cur_money' => $order_data['cur_amount'], 'money' => $order_data['total_amount']); $c_pay = 0; if ($_POST['is_store'] == 1) { if ($_POST['yucont'] == 1) { if ($order_data['total_amount'] > $arrMember['advance']) { $sdf['cur_money'] = $arrMember['advance']; $sdf['money'] = $arrMember['advance']; $c_pay = 1; } } } // 暂停1s,防止erp同步时间未更新 sleep(1); $is_payed = $objPay->gopay($sdf, $msg); if (!$is_payed) { $msg = app::get('b2c')->_('订单自动支付失败!'); $this->end(false, $msg, $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout'))); } $obj_pay_lists = kernel::servicelist("order.pay_finish"); $is_payed = false; foreach ($obj_pay_lists as $order_pay_service_object) { $is_payed = $order_pay_service_object->order_pay_finish($sdf, 'succ', 'font', $msg); } // 预存款不够的情况下,线下继续支付 if ($c_pay == 1) { $_money = $order_data['cur_amount'] - $arrMember['advance']; $sdf = array('payment_id' => $objPay->get_payment_id($order_data['order_id']), 'order_id' => $order_data['order_id'], 'rel_id' => $order_data['order_id'], 'op_id' => $order_data['member_id'], 'pay_app_id' => 'offline', 'currency' => $order_data['currency'], 'payinfo' => array('cost_payment' => $order_data['payinfo']['cost_payment']), 'pay_object' => 'order', 'member_id' => $order_data['member_id'], 'op_name' => $this->user->user_data['account']['login_name'], 'status' => 'ready', 'cur_money' => $_money, 'money' => $_money); $is_payed = $objPay->gopay($sdf, $msg); if (!$is_payed) { $msg = app::get('b2c')->_('订单自动支付失败!'); $this->end(false, $msg, $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout'))); } $obj_pay_lists = kernel::servicelist("order.pay_finish"); $is_payed = false; foreach ($obj_pay_lists as $order_pay_service_object) { $is_payed = $order_pay_service_object->order_pay_finish($sdf, 'succ', 'font', $msg); } } } $cart_type = $this->_request->get_post('type'); if ($_POST['is_store'] == 1) { //记录操作日志 $webposLog = $this->app->model("webpos_log"); $sdf_webpos_log = array('order_id' => $order_id, 'op_id' => $order_data['staff_id'], 'op_name' => $order_data['staff_name'], 'op_branch_id' => intval($_POST['branch_id']), 'member_id' => $arrMember['member_id'], 'op_time' => time(), 'op_type' => 'order_creat', 'money' => $order_data['total_amount'], 'pay_way' => $payment_id['payment_name'], 'result' => 'SUCCESS', 'log_text' => 'webpos生成订单', 'addon' => serialize($arr_args)); $log_id = $webposLog->save($sdf_webpos_log); /* $objOrders = $this->app->model('orders'); // 更新订单支付信息 $arr_updates = array( 'order_id' => $order_id, 'ship_status' => '1', 'pay_status' => '1', ); $objOrders->save($arr_updates); */ } $cart_type = $this->_request->get_post('type'); if ($cart_type == 'x') { $this->end(true, $this->app->_("订单生成成功!"), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_paycenter', 'act' => 'index', 'arg0' => $order_id, 'arg1' => 'true')) . '?type=x', '', true); } else { $this->end(true, $this->app->_("订单生成成功!"), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_paycenter', 'act' => 'index', 'arg0' => $order_id, 'arg1' => 'true')), '', true); } } else { $cart_type = $this->_request->get_post('type'); if ($cart_type == 'x') { $this->end(false, $this->app->_("订单生成失败!请重试!"), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart')) . '?type=x', '', true); } else { $this->end(false, $msg, $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout')), true, true); } } }
/** * 添加订单的接口 * @param null * @return null */ public function docreate() { $this->begin("index.php?app=b2c&ctl=admin_order&act=addnew"); $msg = ""; if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr_area'] || !$_POST['delivery']['ship_addr'] || !$_POST['delivery']['ship_name'] || !$_POST['delivery']['ship_email'] && !$_POST['member_id'] || !$_POST['delivery']['ship_mobile'] && !$_POST['delivery']['ship_tel'] || !$_POST['delivery']['shipping_id'] || !$_POST['payment']['pay_app_id']) { if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr_area']) { $msg .= app::get('b2c')->_("收货地区不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_addr']) { $msg .= app::get('b2c')->_("收货地址不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_name']) { $msg .= app::get('b2c')->_("收货人姓名不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_email'] && !$this->user->user_id) { $msg .= app::get('b2c')->_("Email不能为空!") . "<br />"; } if (!$_POST['delivery']['ship_mobile'] && !$_POST['delivery']['ship_tel']) { $msg .= app::get('b2c')->_("手机或电话必填其一!") . "<br />"; } if (!$_POST['delivery']['shipping_id']) { $msg .= app::get('b2c')->_("配送方式不能为空!") . "<br />"; } if (!$_POST['payment']['pay_app_id']) { $msg .= app::get('b2c')->_("支付方式不能为空!") . "<br />"; } if (strpos($msg, '<br />') !== false) { $msg = substr($msg, 0, strlen($msg) - 6); } eval("\$msg = \"{$msg}\";"); $this->end(false, $msg); } $obj_mCart = $this->app->model('cart'); if (!$_POST['member_id']) { $member_indent = md5(kernel::single('base_session')->sess_id()); $data = $obj_mCart->get_cookie_cart_arr($member_indent); } else { $member_indent = md5($_POST['member_id'] . kernel::single('base_session')->sess_id()); $data = $obj_mCart->get_cookie_cart_arr($member_indent, $_POST['member_id']); } $objCarts = $obj_mCart->get_cart_object($data); $is_empty = $obj_mCart->is_empty($objCarts); if ($is_empty) { $this->end(false, app::get('b2c')->_('购物车为空,操作失败!')); } $order =& $this->app->model('orders'); $_POST['order_id'] = $order_id = $order->gen_id(); $order_data = array(); $obj_order_create = kernel::single("b2c_order_create"); $order_data = $obj_order_create->generate($_POST, $member_indent, $msg, $objCarts); if (!$order_data) { $this->end(false, $msg, "index.php?app=b2c&ctl=admin_order&act=index"); } $result = $obj_order_create->save($order_data, $msg); // 与中心交互 /*$obj_rpc_request_service = kernel::service('b2c.rpc.send.request'); if ($obj_rpc_request_service && method_exists($obj_rpc_request_service, 'rpc_caller_request')) { if ($obj_rpc_request_service instanceof b2c_api_rpc_request_interface) $obj_rpc_request_service->rpc_caller_request($order_data,'create'); } else { $obj_order_create->rpc_caller_request($order_data); }*/ //新的版本控制api $obj_apiv = kernel::single('b2c_apiv_exchanges_request'); $obj_apiv->rpc_caller_request($order_data, 'ordercreate'); // 取到日志模块 $log_text = ""; if ($result) { $log_text = app::get('b2c')->_("订单创建成功!"); #↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓记录管理员操作日志@lujy↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ if ($obj_operatorlogs = kernel::service('operatorlog')) { if (method_exists($obj_operatorlogs, 'inlogs')) { $memo = '新订单被添加,订单号为 "' . $order_data['order_id'] . '"'; $obj_operatorlogs->inlogs($memo, $order_data['order_id'], 'orders'); } } #↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑记录管理员操作日志@lujy↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ } else { $log_text = app::get('b2c')->_("订单创建失败!"); } $orderLog = $this->app->model("order_log"); $sdf_order_log = array('rel_id' => $order_id, 'op_id' => $this->user->user_id, 'op_name' => $this->user->user_data['account']['login_name'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'creates', 'result' => $result ? 'SUCCESS' : 'FAILURE', 'log_text' => $log_text); $log_id = $orderLog->save($sdf_order_log); if ($result) { // 订单成功后清除购物车的的信息 $cart_model = $this->app->model('cart'); $cart_model->del_cookie_cart_arr($member_indent); // 得到物流公司名称 if ($order_data['order_objects']) { $itemNum = 0; $good_id = ""; $goods_name = ""; foreach ($order_data['order_objects'] as $arr_objects) { if ($arr_objects['order_items']) { if ($arr_objects['obj_type'] == 'goods') { $obj_goods = $this->app->model('goods'); $good_id = $arr_objects['order_items'][0]['goods_id']; $arr_goods = $obj_goods->dump($good_id); } foreach ($arr_objects['order_items'] as $arr_items) { $itemNum = $this->objMath->number_plus(array($itemNum, $arr_items['quantity'])); if ($arr_objects['obj_type'] == 'goods') { if ($arr_items['item_type'] == 'product') { $goods_name .= $arr_items['name'] . ($arr_items['products']['spec_info'] ? '(' . $arr_items['products']['spec_info'] . ')' : '') . '(' . $arr_items['quantity'] . ')'; } } } } } $obj_dlytype = $this->app->model('dlytype'); $arr_dlytype = $obj_dlytype->dump($order_data['shipping']['shipping_id'], 'dt_name'); if ($order_data['member_id']) { $obj_members = $this->app->model('members'); $arrPams = $obj_members->dump($order_data['member_id'], '*', array(':account@pam' => array('*'))); } $arr_updates = array('order_id' => $order_id, 'total_amount' => $order_data['total_amount'], 'shipping_id' => $arr_dlytype['dt_name'], 'ship_mobile' => $order_data['consignee']['mobile'], 'ship_tel' => $order_data['consignee']['telephone'], 'ship_addr' => $order_data['consignee']['addr'], 'ship_email' => $order_data['consignee']['email'] ? $order_data['consignee']['email'] : '', 'ship_zip' => $order_data['consignee']['zip'], 'ship_name' => $order_data['consignee']['name'], 'member_id' => $order_data['member_id'] ? $order_data['member_id'] : 0, 'uname' => !$order_data['member_id'] ? app::get('b2c')->_('顾客') : $arrPams['pam_account']['login_name'], 'itemnum' => count($order_data['order_objects']), 'goods_id' => $good_id, 'goods_url' => kernel::base_url(1) . kernel::url_prefix() . app::get('site')->router()->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'act' => 'index', 'arg0' => $good_id)), 'thumbnail_pic' => base_storager::image_path($arr_goods['image_default_id']), 'goods_name' => $goods_name, 'ship_status' => '', 'pay_status' => 'Nopay', 'is_frontend' => false); $order->fireEvent('create', $arr_updates, $order_data['member_id']); } } if ($result) { $order_num = $order->count(array('member_id' => $order_data['member_id'])); $obj_mem = $this->app->model('members'); $obj_mem->update(array('order_num' => $order_num), array('member_id' => $order_data['member_id'])); $this->end(true, app::get('b2c')->_('订单创建成功'), "index.php?app=b2c&ctl=admin_order&act=index"); } else { $this->end(false, $msg, "index.php?app=b2c&ctl=admin_order&act=index"); } }
public function base_url($full = false) { $c = $full ? 'full' : 'part'; if (!$this->base_url[$c]) { $app_url_map = array_flip(kernel::$url_app_map); $this->base_url[$c] = kernel::base_url($full) . kernel::url_prefix() . $app_url_map[$this->app_id] . ($app_url_map[$this->app_id] == '/' ? '' : '/'); } return $this->base_url[$c]; }
public function base_url($full = false) { $c = $full ? 'full' : 'part'; if (!$this->base_url[$c]) { $part = kernel::$app_url_map[$this->app_id]; $this->base_url[$c] = kernel::base_url($full) . kernel::url_prefix() . $part . ($part == '/' ? '' : '/'); } return $this->base_url[$c]; }
public function create() { // 判断顾客登录方式. $login_type = $this->app->getConf('site.login_type'); $arrMember = $this->get_current_member(); if ($login_type == 'href' && !$arrMember['member_id'] && $_COOKIE['S']['ST_ShopEx-Anonymity-Buy'] != 'true') { $this->redirect(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'loginbuy', 'arg0' => '1')); } // checkout url //$url_checkout = $this->gen_url(array('app'=>'b2c','ctl'=>'site_cart','act'=>'checkout')); $this->begin(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout')); $this->mCart = $this->app->model('cart'); $aCart = $this->mCart->get_objects(true); if ($this->mCart->is_empty($aCart)) { $this->end(false, __('操作失败,购物车为空!'), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'index'))); } $msg = ""; if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr_area'] || !$_POST['delivery']['ship_addr'] || !$_POST['delivery']['ship_name'] || !$_POST['delivery']['ship_email'] && !$arrMember['member_id'] || !$_POST['delivery']['ship_mobile'] || !$_POST['delivery']['shipping_id'] || !$_POST['payment']['pay_app_id']) { if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr_area']) { $msg .= "收货地区不能为空!<br />"; } if (!$_POST['delivery']['ship_addr']) { $msg .= "收货地址不能为空!<br />"; } if (!$_POST['delivery']['ship_name']) { $msg .= "收货人姓名不能为空!<br />"; } if (!$_POST['delivery']['ship_email'] && !$arrMember['member_id']) { $msg .= "Email不能为空!<br />"; } if (!$_POST['delivery']['ship_mobile']) { $msg .= "手机号码不能为空!<br />"; } if (!$_POST['delivery']['shipping_id']) { $msg .= "配送方式不能为空!<br />"; } if (!$_POST['payment']['pay_app_id']) { $msg .= "支付方式不能为空!<br />"; } if (strpos($msg, '<br />') !== false) { $msg = substr($msg, 0, strlen($msg) - 6); } eval("\$msg = __(\"{$msg}\");"); $this->end(false, $msg); } // 添加收货地址 if ($arrMember['member_id'] && isset($_POST['delivery']['is_save']) && $_POST['delivery']['is_save'] && !$_POST['delivery']['addr_id']) { if ($_POST['delivery']['ship_name'] && $_POST['delivery']['ship_mobile'] && $_POST['delivery']['ship_area'] && $_POST['delivery']['ship_addr']) { $obj_member_addr = $this->app->model('member_addrs'); $count = $obj_member_addr->count(array('member_id' => $arrMember['member_id'])); if ($count < 5) { $obj_members = $this->app->model('members'); $arrMemberAddr = array('name' => $_POST['delivery']['ship_name'], 'phone' => array('mobile' => $_POST['delivery']['ship_mobile'], 'telephone' => $_POST['delivery']['ship_tel'] ? $_POST['delivery']['ship_tel'] : ''), 'area' => $_POST['delivery']['ship_area'], 'addr' => $_POST['delivery']['ship_addr'], 'zipcode' => $_POST['delivery']['ship_zip'] ? $_POST['delivery']['ship_zip'] : ''); $obj_members->insertRec($arrMemberAddr, $arrMember['member_id'], $message); } } } $obj_dlytype = $this->app->model('dlytype'); if ($_POST['payment']['pay_app_id'] == '-1') { $arr_dlytype = $obj_dlytype->dump($_POST['delivery']['shipping_id'], '*'); if ($arr_dlytype['has_cod'] == 'false') { $this->end(false, $this->app->_("ship_method_consistent_error")); } } $obj_filter = kernel::single('b2c_site_filter'); $_POST = $obj_filter->check_input($_POST); //$obj_api_order = kernel::service("api.b2c.order"); $order =& $this->app->model('orders'); $_POST['order_id'] = $order_id = $order->gen_id(); $_POST['member_id'] = $arrMember['member_id'] ? $arrMember['member_id'] : 0; $order_data = array(); $obj_order_create = kernel::single("b2c_order_create"); $order_data = $obj_order_create->generate($_POST); $result = $obj_order_create->save($order_data, $msg); //$result = true; // 取到日志模块 if ($arrMember['member_id']) { $obj_members = $this->app->model('members'); $arrPams = $obj_members->dump($arrMember['member_id'], '*', array(':account@pam' => array('*'))); } // remark create $obj_order_create = kernel::single("b2c_order_remark"); $arr_remark = array('order_bn' => $order_id, 'mark_text' => $_POST['memo'], 'op_name' => !$arrMember['member_id'] ? '顾客' : $arrPams['pam_account']['login_name'], 'mark_type' => 'b0'); $log_text = ""; if ($result) { $log_text = "订单创建成功!"; } else { $log_text = "订单创建失败!"; } $orderLog = $this->app->model("order_log"); $sdf_order_log = array('rel_id' => $order_id, 'op_id' => $arrMember['member_id'], 'op_name' => !$arrMember['member_id'] ? '顾客' : $arrPams['pam_account']['login_name'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'creates', 'result' => 'SUCCESS', 'log_text' => $log_text); $log_id = $orderLog->save($sdf_order_log); if ($result) { foreach (kernel::servicelist('b2c_save_post_om') as $object) { $object->set_arr($order_id, 'order'); } // 设定优惠券不可以使用 $objCarts = $this->app->model('cart')->get_objects(true); if (isset($objCarts['object']['coupon']) && $objCarts['object']['coupon']) { $obj_coupon = kernel::single("b2c_coupon_mem"); foreach ($objCarts['object']['coupon'] as $coupons) { if ($coupons['used']) { $obj_coupon->use_c($coupons['coupon'], $arrMember['member_id']); } } } // 订单成功后清除购物车的的信息 $this->cart_model =& $this->app->model('cart_objects'); $this->cart_model->remove_object(); // 生成cookie有效性的验证信息 setcookie('ST_ShopEx-Order-Buy', md5($this->app->getConf('certificate.token') . $order_id)); setcookie("S[ST_ShopEx-Anonymity-Buy]", "false", time() - 3600); // 得到物流公司名称 if ($order_data['order_objects']) { $itemNum = 0; $good_id = ""; $goods_name = ""; foreach ($order_data['order_objects'] as $arr_objects) { if ($arr_objects['order_items']) { if ($arr_objects['obj_type'] == 'goods') { $obj_goods = $this->app->model('goods'); $good_id = $arr_objects['order_items'][0]['goods_id']; $arr_goods = $obj_goods->dump($good_id); } foreach ($arr_objects['order_items'] as $arr_items) { $itemNum = $this->objMath->number_plus(array($itemNum, $arr_items['quantity'])); if ($arr_objects['obj_type'] == 'goods') { if ($arr_items['item_type'] == 'product') { $goods_name .= $arr_items['name'] . ($arr_items['products']['spec_info'] ? '(' . $arr_items['products']['spec_info'] . ')' : '') . '(' . $arr_items['quantity'] . ')'; } } } } } $arr_dlytype = $obj_dlytype->dump($order_data['shipping']['shipping_id'], 'dt_name'); $arr_updates = array('order_id' => $order_id, 'total_amount' => $order_data['total_amount'], 'shipping_id' => $arr_dlytype['dt_name'], 'ship_mobile' => $order_data['consignee']['mobile'], 'ship_tel' => $order_data['consignee']['telephone'], 'ship_addr' => $order_data['consignee']['addr'], 'ship_email' => $order_data['consignee']['email'] ? $order_data['consignee']['email'] : '', 'ship_zip' => $order_data['consignee']['zip'], 'ship_name' => $order_data['consignee']['name'], 'member_id' => $order_data['member_id'] ? $order_data['member_id'] : 0, 'uname' => !$order_data['member_id'] ? '顾客' : $arrPams['pam_account']['login_name'], 'itemnum' => count($order_data['order_objects']), 'goods_id' => $good_id, 'goods_url' => kernel::base_url(1) . kernel::url_prefix() . $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'act' => 'index', 'arg0' => $good_id)), 'thumbnail_pic' => base_storager::image_path($arr_goods['image_default_id']), 'goods_name' => $goods_name, 'ship_status' => '', 'pay_status' => 'Nopay', 'is_frontend' => true); $order->fireEvent('create', $arr_updates, $order_data['member_id']); } } if ($result) { $this->end(true, $this->app->_("订单生成成功!"), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_order', 'act' => 'index', 'arg0' => $order_id))); } else { $this->end(false, $msg, $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart', 'act' => 'checkout'))); } }
/** * 添加订单的接口 * @param null * @return null */ public function docreate() { $this->begin("index.php?app=b2c&ctl=admin_order&act=addnew"); $msg = ""; if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr_area'] || !$_POST['delivery']['ship_addr'] || !$_POST['delivery']['ship_name'] || !$_POST['delivery']['ship_email'] && !$_POST['member_id'] || !$_POST['delivery']['ship_mobile'] || !$_POST['delivery']['shipping_id'] || !$_POST['payment']['pay_app_id']) { if (!$_POST['delivery']['ship_area'] || !$_POST['delivery']['ship_addr_area']) { $msg .= "收货地区不能为空!<br />"; } if (!$_POST['delivery']['ship_addr']) { $msg .= "收货地址不能为空!<br />"; } if (!$_POST['delivery']['ship_name']) { $msg .= "收货人姓名不能为空!<br />"; } if (!$_POST['delivery']['ship_email'] && !$this->user->user_id) { $msg .= "Email不能为空!<br />"; } if (!$_POST['delivery']['ship_mobile']) { $msg .= "手机号码不能为空!<br />"; } if (!$_POST['delivery']['shipping_id']) { $msg .= "配送方式不能为空!<br />"; } if (!$_POST['payment']['pay_app_id']) { $msg .= "支付方式不能为空!<br />"; } if (strpos($msg, '<br />') !== false) { $msg = substr($msg, 0, strlen($msg) - 6); } eval("\$msg = __(\"{$msg}\");"); $this->end(false, $msg); } // 添加收货地址 if ($_POST['member_id'] && isset($_POST['delivery']['is_save']) && $_POST['delivery']['is_save'] && !$_POST['delivery']['addr_id']) { if ($_POST['delivery']['ship_name'] && $_POST['delivery']['ship_mobile'] && $_POST['delivery']['ship_area'] && $_POST['delivery']['ship_addr']) { $obj_member_addr = $this->app->model('member_addrs'); $count = $obj_member_addr->count(array('member_id' => $_POST['member_id'])); if ($count < 5) { $obj_members = $this->app->model('members'); $arrMemberAddr = array('name' => $_POST['delivery']['ship_name'], 'phone' => array('mobile' => $_POST['delivery']['ship_mobile'], 'telephone' => $_POST['delivery']['ship_tel'] ? $_POST['delivery']['ship_tel'] : ''), 'area' => $_POST['delivery']['ship_area'], 'addr' => $_POST['delivery']['ship_addr'], 'zipcode' => $_POST['delivery']['ship_zip'] ? $_POST['delivery']['ship_zip'] : ''); $is_save = $obj_members->insertRec($arrMemberAddr, $_POST['member_id'], $message); } } } if (!$_POST['member_id']) { $member_indent = md5(kernel::single('base_session')->sess_id()); } else { $member_indent = md5($_POST['member_id'] . kernel::single('base_session')->sess_id()); } $obj_mCart = $this->app->model('cart'); $data = $obj_mCart->get_cookie_cart_arr($member_indent); $objCarts = $obj_mCart->get_cart_object($data); $is_empty = $obj_mCart->is_empty($objCarts); if ($is_empty) { $this->end(false, __('购物车为空,操作失败!')); } $order =& $this->app->model('orders'); $_POST['order_id'] = $order_id = $order->gen_id(); $order_data = array(); $obj_order_create = kernel::single("b2c_order_create"); $order_data = $obj_order_create->generate($_POST, $member_indent); $result = $obj_order_create->save($order_data, $msg); // 取到日志模块 $log_text = ""; if ($result) { $log_text = "订单创建成功!"; } else { $log_text = "订单创建失败!"; } $orderLog = $this->app->model("order_log"); $sdf_order_log = array('rel_id' => $order_id, 'op_id' => $this->user->user_id, 'op_name' => $this->user->user_data['account']['login_name'], 'alttime' => time(), 'bill_type' => 'order', 'behavior' => 'creates', 'result' => $result ? 'SUCCESS' : 'FAILURE', 'log_text' => $log_text); $log_id = $orderLog->save($sdf_order_log); if ($result) { // 订单成功后清除购物车的的信息 $cart_model = $this->app->model('cart'); $cart_model->del_cookie_cart_arr($member_indent); // 得到物流公司名称 if ($order_data['order_objects']) { $itemNum = 0; $good_id = ""; $goods_name = ""; foreach ($order_data['order_objects'] as $arr_objects) { if ($arr_objects['order_items']) { if ($arr_objects['obj_type'] == 'goods') { $obj_goods = $this->app->model('goods'); $good_id = $arr_objects['order_items'][0]['goods_id']; $arr_goods = $obj_goods->dump($good_id); } foreach ($arr_objects['order_items'] as $arr_items) { $itemNum = $this->objMath->number_plus(array($itemNum, $arr_items['quantity'])); if ($arr_objects['obj_type'] == 'goods') { if ($arr_items['item_type'] == 'product') { $goods_name .= $arr_items['name'] . ($arr_items['products']['spec_info'] ? '(' . $arr_items['products']['spec_info'] . ')' : '') . '(' . $arr_items['quantity'] . ')'; } } } } } $obj_dlytype = $this->app->model('dlytype'); $arr_dlytype = $obj_dlytype->dump($order_data['shipping']['shipping_id'], 'dt_name'); if ($order_data['member_id']) { $obj_members = $this->app->model('members'); $arrPams = $obj_members->dump($order_data['member_id'], '*', array(':account@pam' => array('*'))); } $arr_updates = array('order_id' => $order_id, 'total_amount' => $order_data['total_amount'], 'shipping_id' => $arr_dlytype['dt_name'], 'ship_mobile' => $order_data['consignee']['mobile'], 'ship_tel' => $order_data['consignee']['telephone'], 'ship_addr' => $order_data['consignee']['addr'], 'ship_email' => $order_data['consignee']['email'] ? $order_data['consignee']['email'] : '', 'ship_zip' => $order_data['consignee']['zip'], 'ship_name' => $order_data['consignee']['name'], 'member_id' => $order_data['member_id'] ? $order_data['member_id'] : 0, 'uname' => !$order_data['member_id'] ? '顾客' : $arrPams['pam_account']['login_name'], 'itemnum' => count($order_data['order_objects']), 'goods_id' => $good_id, 'goods_url' => kernel::base_url(1) . kernel::url_prefix() . app::get('site')->router()->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'act' => 'index', 'arg0' => $good_id)), 'thumbnail_pic' => base_storager::image_path($arr_goods['image_default_id']), 'goods_name' => $goods_name, 'ship_status' => '', 'pay_status' => 'Nopay', 'is_frontend' => false); $order->fireEvent('create', $arr_updates, $order_data['member_id']); } } if ($result) { $this->end(true, '订单创建成功', "index.php?app=b2c&ctl=admin_order&act=index"); } else { $this->end(false, $msg, "index.php?app=b2c&ctl=admin_order&act=index"); } }