public function indexOp() { if (ob_get_level()) { ob_end_clean(); } $logic_queue = Logic('queue'); $worker = new QueueServer(); $queues = $worker->scan(); while (true) { $content = $worker->pop($queues, 1800); if (is_array($content)) { $method = key($content); $arg = current($content); $result = $logic_queue->{$method}($arg); if (!$result['state']) { $this->log($result['msg'], false); } // echo date('Y-m-d H:i:s',time()).' '.$method."\n"; // flush(); // ob_flush(); } else { $model = Model(); $model->checkActive(); unset($model); // echo date('Y-m-d H:i:s',time())." ---\n"; // flush(); // ob_flush(); } } }
public function image_uploadOp() { $logic_goods = Logic('goods'); $result = $logic_goods->uploadGoodsImage($_POST['name'], $this->seller_info['store_id'], $this->store_grade['sg_album_limit']); if (!$result['state']) { output_error($result['msg']); } output_data(array('image_name' => $result['data']['name'])); }
/** * 入列 * @param string $key * @param array $value */ public static function push($key, $value) { if (!C('queue.open')) { Logic('queue')->$key($value);return; } if (!is_object(self::$queuedb)) { self::$queuedb = new QueueDB(); } return self::$queuedb->push(serialize(array($key=>$value))); }
/** * 虚拟商品购买第三步 */ public function buy_step3Op() { $logic_buy_virtual = Logic('buy_virtual'); $_POST['order_from'] = 1; $result = $logic_buy_virtual->buyStep3($_POST,$_SESSION['member_id']); if (!$result['state']) { showMessage($result['msg'], 'index.php', 'html', 'error'); } //转向到商城支付页面 redirect('index.php?act=buy_virtual&op=pay&order_id='.$result['data']['order_id']); }
/** * 取消订单 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $msg 操作备注 * @param boolean $if_queue 是否使用队列 * @return array */ public function changeOrderStateCancel($order_info, $role, $msg, $if_queue = true) { try { $model_vr_order = Model('vr_order'); $model_vr_order->beginTransaction(); //库存、销量变更 if ($if_queue) { QueueClient::push('cancelOrderUpdateStorage', array($order_info['goods_id'] => $order_info['goods_num'])); } else { Logic('queue')->cancelOrderUpdateStorage(array($order_info['goods_id'] => $order_info['goods_num'])); } $model_pd = Model('predeposit'); //解冻充值卡 $pd_amount = floatval($order_info['rcb_amount']); if ($pd_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $pd_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changeRcb('order_cancel', $data_pd); } //解冻预存款 $pd_amount = floatval($order_info['pd_amount']); if ($pd_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $pd_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changePd('order_cancel', $data_pd); } //更新订单信息 $update_order = array('order_state' => ORDER_STATE_CANCEL, 'pd_amount' => 0, 'close_time' => TIMESTAMP, 'close_reason' => $msg); $update = $model_vr_order->editOrder($update_order, array('order_id' => $order_info['order_id'])); if (!$update) { throw new Exception('保存失败'); } $model_vr_order->commit(); return callback(true, '更新成功'); } catch (Exception $e) { $model_vr_order->rollback(); return callback(false, $e->getMessage()); } }
/** * 取消订单 */ public function order_cancelOp() { $model_vr_order = Model('vr_order'); $condition = array(); $condition['order_id'] = intval($_POST['order_id']); $condition['buyer_id'] = $this->member_info['member_id']; $order_info = $model_vr_order->getOrderInfo($condition); $if_allow = $model_vr_order->getOrderOperateState('buyer_cancel', $order_info); if (!$if_allow) { output_data('无权操作'); } $logic_vr_order = Logic('vr_order'); $result = $logic_vr_order->changeOrderStateCancel($order_info, 'buyer', '其它原因'); if (!$result['state']) { output_data($result['msg']); } else { output_data('1'); } }
/** * 虚拟订单支付 */ public function vr_payOp() { $order_sn = $_GET['pay_sn']; $model_mb_payment = Model('mb_payment'); $logic_payment = Logic('payment'); $condition = array(); $condition['payment_code'] = $this->payment_code; $mb_payment_info = $model_mb_payment->getMbPaymentOpenInfo($condition); if (!$mb_payment_info) { output_error('系统不支持选定的支付方式'); } //重新计算所需支付金额 $result = $logic_payment->getVrOrderInfo($order_sn, $this->member_info['member_id']); if (!$result['state']) { output_error($result['msg']); } //第三方API支付 $this->_api_pay($result['data'], $mb_payment_info); }
/** * 虚拟订单第三步,产生订单 * POST * 传入:goods_id:商品ID,quantity:购买数量,buyer_phone:接收手机,buyer_msg:下单留言,pd_pay:是否使用预存款支付0否1是,password:支付密码 */ public function buy_step3Op() { $logic_buy_virtual = Logic('buy_virtual'); $input = array(); $input['goods_id'] = $_POST['goods_id']; $input['quantity'] = $_POST['quantity']; $input['buyer_phone'] = $_POST['buyer_phone']; $input['buyer_msg'] = $_POST['buyer_msg']; //支付密码 $input['password'] = $_POST['password']; //是否使用充值卡支付0是/1否 $input['rcb_pay'] = intval($_POST['rcb_pay']); //是否使用预存款支付0是/1否 $input['pd_pay'] = intval($_POST['pd_pay']); $input['order_from'] = 2; $result = $logic_buy_virtual->buyStep3($input, $this->member_info['member_id']); if (!$result['state']) { output_error($result['msg']); } else { output_data($result['data']); } }
private function dowxpay($openid, $order_sn) { $order_type = substr($order_sn, 0, 1); $pay_sn = substr($order_sn, 1); $model_mb_payment = Model('mb_payment'); $logic_payment = Logic('payment'); $condition = array(); $condition['payment_code'] = $this->payment_code; $mb_payment_info = $model_mb_payment->getMbPaymentOpenInfo($condition); if ($order_type == 'r') { $result = $logic_payment->getRealOrderInfo($pay_sn); } else { $result = $logic_payment->getVrOrderInfo($pay_sn); } $total_fee = $result['data']['api_pay_amount']; $this->parameters['appid'] = $this->appid; $this->parameters['mch_id'] = $this->mch_id; $this->parameters['nonce_str'] = $this->createNoncestr(32); //$this->parameters['sign']=''; $this->parameters['body'] = $order_sn; $this->parameters['attach'] = $order_type . '|' . $pay_sn; $this->parameters['out_trade_no'] = $pay_sn; $this->parameters['fee_type'] = 'CNY'; $this->parameters['total_fee'] = $total_fee * 100; $this->parameters['spbill_create_ip'] = $_SERVER["REMOTE_ADDR"]; $this->parameters['notify_url'] = $this->notify_url; $this->parameters['trade_type'] = 'JSAPI'; $this->parameters['openid'] = $openid; $prepay_id = $this->getPrepayId(); $this->setPrepayId($prepay_id); $jsApiParameters = $this->getParameters(); //return $jsApiParameters; $html = $this->showpay($jsApiParameters); //file_put_contents('html',$html); echo $html; }
/** * 发货 */ public function sendOp() { $order_id = intval($_GET['order_id']); if ($order_id <= 0) { showMessage(Language::get('wrong_argument'), '', 'html', 'error'); } $model_order = Model('order'); $condition = array(); $condition['order_id'] = $order_id; $condition['store_id'] = $_SESSION['store_id']; $order_info = $model_order->getOrderInfo($condition, array('order_common', 'order_goods')); $if_allow_send = intval($order_info['lock_state']) || !in_array($order_info['order_state'], array(ORDER_STATE_PAY, ORDER_STATE_SEND)); if ($if_allow_send) { showMessage(Language::get('wrong_argument'), '', 'html', 'error'); } if (chksubmit()) { $logic_order = Logic('order'); $_POST['reciver_info'] = $this->_get_reciver_info(); $result = $logic_order->changeOrderSend($order_info, 'seller', $_SESSION['member_name'], $_POST); if (!$result['state']) { showMessage($result['msg'], '', 'html', 'error'); } else { showDialog($result['msg'], $_POST['ref_url'], 'succ'); } } Tpl::output('order_info', $order_info); //取发货地址 $model_daddress = Model('daddress'); if ($order_info['extend_order_common']['daddress_id'] > 0) { $daddress_info = $model_daddress->getAddressInfo(array('address_id' => $order_info['extend_order_common']['daddress_id'])); } else { //取默认地址 $daddress_info = $model_daddress->getAddressList(array('store_id' => $_SESSION['store_id']), '*', 'is_default desc', 1); $daddress_info = $daddress_info[0]; //写入发货地址编号 $this->_edit_order_daddress($daddress_info['address_id'], $order_id); } Tpl::output('daddress_info', $daddress_info); $express_list = rkcache('express', true); //如果是自提订单,只保留自提快递公司 if (isset($order_info['extend_order_common']['reciver_info']['dlyp'])) { foreach ($express_list as $k => $v) { if ($v['e_zt_state'] == '0') { unset($express_list[$k]); } } $my_express_list = array_keys($express_list); } else { //快递公司 $my_express_list = Model()->table('store_extend')->getfby_store_id($_SESSION['store_id'], 'express'); if (!empty($my_express_list)) { $my_express_list = explode(',', $my_express_list); } } Tpl::output('my_express_list', $my_express_list); Tpl::output('express_list', $express_list); Tpl::showpage('store_deliver.send'); }
/** * 推荐组合加入购物车 */ public function add_combOp() { if (!preg_match('/^[\\d|]+$/', $_GET['goods_ids'])) { exit(json_encode(array('state' => 'false'))); } $model_goods = Model('goods'); $logic_buy_1 = Logic('buy_1'); if (!$_SESSION['member_id']) { exit(json_encode(array('msg' => '请先登录', 'UTF-8'))); } $goods_id_array = explode('|', $_GET['goods_ids']); $model_goods = Model('goods'); $goods_list = $model_goods->getGoodsOnlineListAndPromotionByIdArray($goods_id_array); foreach ($goods_list as $goods) { $this->_check_goods($goods, 1); } //抢购 $logic_buy_1->getGroupbuyCartList($goods_list); //限时折扣 $logic_buy_1->getXianshiCartList($goods_list); $model_cart = Model('cart'); foreach ($goods_list as $goods_info) { $cart_info = array(); $cart_info['store_id'] = $goods_info['store_id']; $cart_info['goods_id'] = $goods_info['goods_id']; $cart_info['goods_name'] = $goods_info['goods_name']; $cart_info['goods_price'] = $goods_info['goods_price']; $cart_info['goods_num'] = 1; $cart_info['goods_image'] = $goods_info['goods_image']; $cart_info['store_name'] = $goods_info['store_name']; $quantity = 1; //已登录状态,存入数据库,未登录时,存入COOKIE if ($_SESSION['member_id']) { $save_type = 'db'; $cart_info['buyer_id'] = $_SESSION['member_id']; } else { $save_type = 'cookie'; } $insert = $model_cart->addCart($cart_info, $save_type, $quantity); if ($insert) { //购物车商品种数记入cookie setNcCookie('cart_goods_num', $model_cart->cart_goods_num, 2 * 3600); $data = array('state' => 'true', 'num' => $model_cart->cart_goods_num, 'amount' => ncPriceFormat($model_cart->cart_all_price)); } else { $data = array('state' => 'false'); exit(json_encode($data)); } } exit(json_encode($data)); }
/** * 系统收到货款 * @param unknown $order_info * @throws Exception */ private function _order_receive_pay($order_info, $post) { $model_vr_order = Model('vr_order'); $logic_vr_order = Logic('vr_order'); $if_allow = $model_vr_order->getOrderOperateState('system_receive_pay', $order_info); if (!$if_allow) { return callback(false, '无权操作'); } if (!chksubmit()) { Tpl::output('order_info', $order_info); //显示支付接口 $payment_list = Model('payment')->getPaymentOpenList(); //去掉预存款和货到付款 foreach ($payment_list as $key => $value) { if ($value['payment_code'] == 'predeposit' || $value['payment_code'] == 'offline') { unset($payment_list[$key]); } } Tpl::output('payment_list', $payment_list); Tpl::showpage('order.receive_pay'); exit; } else { $this->log('将虚拟订单改为已收款状态,' . L('order_number') . ':' . $order_info['order_sn'], 1); return $logic_vr_order->changeOrderStatePay($order_info, 'system', $post); } }
/** * 取消订单 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $user 操作人 * @param string $msg 操作备注 * @param boolean $if_update_account 是否变更账户金额 * @param boolean $if_queue 是否使用队列 * @return array */ public function changeOrderStateCancel($order_info, $role, $user = '', $msg = '', $if_update_account = true, $if_quque = true) { try { $model_order = Model('order'); $model_order->beginTransaction(); $order_id = $order_info['order_id']; //库存销量变更 $goods_list = $model_order->getOrderGoodsList(array('order_id' => $order_id)); $data = array(); foreach ($goods_list as $goods) { $data[$goods['goods_id']] = $goods['goods_num']; } if ($if_quque) { QueueClient::push('cancelOrderUpdateStorage', $data); } else { Logic('queue')->cancelOrderUpdateStorage($data); } if ($if_update_account) { $model_pd = Model('predeposit'); //解冻充值卡 $rcb_amount = floatval($order_info['rcb_amount']); if ($rcb_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $rcb_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changeRcb('order_cancel', $data_pd); } //解冻预存款 $pd_amount = floatval($order_info['pd_amount']); if ($pd_amount > 0) { $data_pd = array(); $data_pd['member_id'] = $order_info['buyer_id']; $data_pd['member_name'] = $order_info['buyer_name']; $data_pd['amount'] = $pd_amount; $data_pd['order_sn'] = $order_info['order_sn']; $model_pd->changePd('order_cancel', $data_pd); } } //更新订单信息 $update_order = array('order_state' => ORDER_STATE_CANCEL, 'pd_amount' => 0); $update = $model_order->editOrder($update_order, array('order_id' => $order_id)); if (!$update) { throw new Exception('保存失败'); } //添加订单日志 $data = array(); $data['order_id'] = $order_id; $data['log_role'] = $role; $data['log_msg'] = '取消了订单'; $data['log_user'] = $user; if ($msg) { $data['log_msg'] .= ' ( ' . $msg . ' )'; } $data['log_orderstate'] = ORDER_STATE_CANCEL; $model_order->addOrderLog($data); $model_order->commit(); return callback(true, '操作成功'); } catch (Exception $e) { $this->rollback(); return callback(false, '操作失败'); } }
/** * 获取售后原因 * @return [type] [description] */ public function getReasonInfoOp() { $order_id = intval($_GET['order_id']); $goods_id = intval($_GET['goods_id']); $model_order = Model("order"); $model_refund = Model('refund_return'); $reason_list = $model_refund->getReasonList(); // 查询条件 $condition = array(); $condition['order_id'] = $order_id; $condition['buyer_id'] = $this->member_info['member_id']; $order = $model_refund->getRightOrderList($condition, $goods_id); $is_return = $model_refund->getRefundState($order); if ($is_return == 0) { output_error("当前订单无法申请售后"); } if ($order['order_amount'] < $order['goods_list'][0]['goods_pay_price'] + $order['refund_amount']) { $order['goods_list'][0]['goods_pay_price'] = $order['order_amount'] - $order['refund_amount']; } if ($goods_id == 0) { //禁止退款金额 $lock_amount = Logic('order_book')->getDepositAmount($order); $order['allow_refund_amount'] = $order['order_amount'] - $lock_amount; unset($order['goods_list']); $order['goods_list']['rec_id'] = 0; } else { $temp = $order['goods_list'][0]; unset($order['goods_list']); $order['goods_list'] = $temp; } output_data(array('data' => array('reason' => $reason_list, 'order_info' => $order))); }
/** * 兑换码消费 */ private function _exchange() { if (chksubmit()) { if (!preg_match('/^[a-zA-Z0-9]{15,18}$/', $_GET['vr_code'])) { return array('error' => '兑换码格式错误,请重新输入'); } $model_vr_order = Model('vr_order'); $vr_code_info = $model_vr_order->getOrderCodeInfo(array('vr_code' => $_GET['vr_code'])); if (empty($vr_code_info) || $vr_code_info['store_id'] != $_SESSION['store_id']) { return array('error' => '该兑换码不存在'); } if ($vr_code_info['vr_state'] == '1') { return array('error' => '该兑换码已被使用'); } if ($vr_code_info['vr_indate'] < TIMESTAMP) { return array('error' => '该兑换码已过期,使用截止日期为: ' . date('Y-m-d H:i:s', $vr_code_info['vr_indate'])); } if ($vr_code_info['refund_lock'] > 0) { //退款锁定状态:0为正常,1为锁定(待审核),2为同意 return array('error' => '该兑换码已申请退款,不能使用'); } //更新兑换码状态 $update = array(); $update['vr_state'] = 1; $update['vr_usetime'] = TIMESTAMP; $update = $model_vr_order->editOrderCode($update, array('vr_code' => $_GET['vr_code'])); //如果全部兑换完成,更新订单状态 Logic('vr_order')->changeOrderStateSuccess($vr_code_info['order_id']); if ($update) { //取得返回信息 $order_info = $model_vr_order->getOrderInfo(array('order_id' => $vr_code_info['order_id'])); if ($order_info['use_state'] == '0') { $model_vr_order->editOrder(array('use_state' => 1), array('order_id' => $vr_code_info['order_id'])); } $order_info['img_60'] = thumb($order_info, 60); $order_info['img_240'] = thumb($order_info, 240); $order_info['goods_url'] = urlShop('goods', 'index', array('goods_id' => $order_info['goods_id'])); $order_info['order_url'] = urlShop('store_vr_order', 'show_order', array('order_id' => $order_info['order_id'])); return array('error' => '', 'data' => $order_info); } } else { self::profile_menu('exchange', 'exchange'); Tpl::showpage('store_vr_order.exchange'); } }
/** * 更新订单状态 */ private function _update_order($out_trade_no, $trade_no) { $model_order = Model('order'); $logic_payment = Logic('payment'); $tmp = explode('|', $out_trade_no); $out_trade_no = $tmp[0]; if (!empty($tmp[1])) { $order_type = $tmp[1]; } else { $order_pay_info = Model('order')->getOrderPayInfo(array('pay_sn' => $out_trade_no)); if (empty($order_pay_info)) { $order_type = 'v'; } else { $order_type = 'r'; } } if ($order_type == 'r') { $result = $logic_payment->getRealOrderInfo($out_trade_no); if (intval($result['data']['api_pay_state'])) { return array('state' => true); } $order_list = $result['data']['order_list']; $result = $logic_payment->updateRealOrder($out_trade_no, $this->payment_code, $order_list, $trade_no); } elseif ($order_type == 'v') { $result = $logic_payment->getVrOrderInfo($out_trade_no); if ($result['data']['order_state'] != ORDER_STATE_NEW) { return array('state' => true); } $result = $logic_payment->updateVrOrder($out_trade_no, $this->payment_code, $result['data'], $trade_no); } return $result; }
/** * 提货验证 */ public function pickup_parcelOp() { if (chksubmit()) { $order_id = intval($_POST['order_id']); $pickup_code = intval($_POST['pickup_code']); if ($order_id <= 0 || $pickup_code <= 0) { showDialog(L('wrong_argument'), '', 'error', 'DialogManager.close("pickup_parcel")'); } $model_do = Model('delivery_order'); $dorder_info = $model_do->getDeliveryOrderInfo(array('order_id' => $order_id, 'dlyp_id' => $_SESSION['dlyp_id'], 'dlyo_pickup_code' => $pickup_code)); if (empty($dorder_info)) { showDialog('提货码错误', '', 'error', 'DialogManager.close("pickup_parcel")'); } $result = $model_do->editDeliveryOrderPickup(array(), array('order_id' => $order_id, 'dlyp_id' => $_SESSION['dlyp_id'], 'dlyo_pickup_code' => $pickup_code)); if ($result) { // 更新订单状态 $order_info = Model('order')->getOrderInfo(array('order_id' => $order_id)); Logic('order')->changeOrderStateReceive($order_info, 'buyer', '物流自提服务站', '物流自提服务站确认收货'); showDialog('操作成功,订单完成', 'reload', 'succ', 'DialogManager.close("pickup_parcel")'); } else { showDialog('操作失败', '', 'error', 'DialogManager.close("pickup_parcel")'); } } Tpl::showpage('d_center.pickup_parcel', 'null_layout'); }
/** * 更换收货地址 */ public function change_addressOp() { $logic_buy = Logic('buy'); $data = $logic_buy->changeAddr($_POST['freight_hash'], $_POST['city_id'], $_POST['area_id'], $this->member_info['member_id']); if (!empty($data) && $data['state'] == 'success') { output_data($data); } else { output_error('地址修改失败'); } }
/** * 支付接口返回 * */ public function returnOp() { $order_type = $_GET['extra_common_param']; if ($order_type == 'real_order') { $act = 'member_order'; } elseif ($order_type == 'vr_order') { $act = 'member_vr_order'; } elseif ($order_type == 'pd_order') { $act = 'predeposit'; } else { exit; } $out_trade_no = $_GET['out_trade_no']; $trade_no = $_GET['trade_no']; $url = SHOP_SITE_URL . '/index.php?act=' . $act; //对外部交易编号进行非空判断 if (!preg_match('/^\\d{18}$/', $out_trade_no)) { showMessage('参数错误', $url, '', 'html', 'error'); } $logic_payment = Logic('payment'); if ($order_type == 'real_order') { $result = $logic_payment->getRealOrderInfo($out_trade_no); if (!$result['state']) { showMessage($result['msg'], $url, 'html', 'error'); } if ($result['data']['api_pay_state']) { $payment_state = 'success'; } $order_list = $result['data']['order_list']; } elseif ($order_type == 'vr_order') { $result = $logic_payment->getVrOrderInfo($out_trade_no); if (!$result['state']) { showMessage($result['msg'], $url, 'html', 'error'); } if ($result['data']['order_state'] != ORDER_STATE_NEW) { $payment_state = 'success'; } } elseif ($order_type == 'pd_order') { $result = $logic_payment->getPdOrderInfo($out_trade_no); if (!$result['state']) { showMessage($result['msg'], $url, 'html', 'error'); } if ($result['data']['pdr_payment_state'] == 1) { $payment_state = 'success'; } } $order_pay_info = $result['data']; $api_pay_amount = $result['data']['api_pay_amount']; if ($payment_state != 'success') { //取得支付方式 $result = $logic_payment->getPaymentInfo($_GET['payment_code']); if (!$result['state']) { showMessage($result['msg'], $url, 'html', 'error'); } $payment_info = $result['data']; //创建支付接口对象 $payment_api = new $payment_info['payment_code']($payment_info, $order_pay_info); //返回参数判断 $verify = $payment_api->return_verify(); if (!$verify) { showMessage('支付数据验证失败', $url, 'html', 'error'); } //取得支付结果 $pay_result = $payment_api->getPayResult($_GET); if (!$pay_result) { showMessage('非常抱歉,您的订单支付没有成功,请您后尝试', $url, 'html', 'error'); } //更改订单支付状态 if ($order_type == 'real_order') { $result = $logic_payment->updateRealOrder($out_trade_no, $payment_info['payment_code'], $order_list, $trade_no); } else { if ($order_type == 'vr_order') { $result = $logic_payment->updateVrOrder($out_trade_no, $payment_info['payment_code'], $order_pay_info, $trade_no); } else { if ($order_type == 'pd_order') { $result = $logic_payment->updatePdOrder($out_trade_no, $trade_no, $payment_info, $order_pay_info); } } } if (!$result['state']) { showMessage('支付状态更新失败', $url, 'html', 'error'); } } //支付成功后跳转 if ($order_type == 'real_order') { $pay_ok_url = SHOP_SITE_URL . '/index.php?act=buy&op=pay_ok&pay_sn=' . $out_trade_no . '&pay_amount=' . ncPriceFormat($api_pay_amount); } elseif ($order_type == 'vr_order') { $pay_ok_url = SHOP_SITE_URL . '/index.php?act=buy_virtual&op=pay_ok&order_sn=' . $out_trade_no . '&order_id=' . $order_pay_info['order_id'] . '&order_amount=' . ncPriceFormat($api_pay_amount); } elseif ($order_type == 'pd_order') { $pay_ok_url = SHOP_SITE_URL . '/index.php?act=predeposit'; } if ($payment_info['payment_code'] == 'tenpay') { showMessage('', $pay_ok_url, 'tenpay'); } else { redirect($pay_ok_url); } }
/** * 回收站 */ private function _order_recycle($order_info, $get) { $model_order = Model('order'); $logic_order = Logic('order'); $state_type = str_replace(array('order_delete', 'order_drop', 'order_restore'), array('delete', 'drop', 'restore'), $_GET['state_type']); $if_allow = $model_order->getOrderOperateState($state_type, $order_info); if (!$if_allow) { return callback(false, '无权操作'); } return $logic_order->changeOrderStateRecycle($order_info, 'buyer', $state_type); }
public function __construct() { $this->_logic_buy_1 = Logic('buy_1'); }
/** * 支付成功,更新订单状态 */ public function wxpay_notifyOp() { $result = Logic('payment')->getPaymentInfo('wxpay'); if (!$result['state']) { Log::record('wxpay not found', 'RUN'); } new wxpay($result['data'], array()); require_once BASE_PATH . '/api/payment/wxpay/notify.php'; }
/** * 加载买家发票列表,最多显示10条 * */ public function load_invOp() { $logic_buy = Logic('buy'); $condition = array(); if ($logic_buy->buyDecrypt($_GET['vat_hash'], $_SESSION['member_id']) == 'allow_vat') { } else { Tpl::output('vat_deny', true); $condition['inv_state'] = 1; } $condition['member_id'] = $_SESSION['member_id']; $model_inv = Model('invoice'); //如果传入ID,先删除再查询 if (intval($_GET['del_id']) > 0) { $model_inv->delInv(array('inv_id' => intval($_GET['del_id']), 'member_id' => $_SESSION['member_id'])); } $list = $model_inv->getInvList($condition, 10); if (!empty($list)) { foreach ($list as $key => $value) { if ($value['inv_state'] == 1) { $list[$key]['content'] = '普通发票' . ' ' . $value['inv_title'] . ' ' . $value['inv_content']; } else { $list[$key]['content'] = '增值税发票' . ' ' . $value['inv_company'] . ' ' . $value['inv_code'] . ' ' . $value['inv_reg_addr']; } } } Tpl::output('inv_list', $list); Tpl::showpage('buy_invoice.load', 'null_layout'); }
/** * 订单自动完成 */ private function _order_auto_complete() { //虚拟订单过使用期自动完成 $_break = false; $model_order = Model('vr_order'); $logic_order = Logic('vr_order'); $condition = array(); $condition['order_state'] = ORDER_STATE_PAY; $condition['vr_indate'] = array('lt', TIMESTAMP); //分批,每批处理100个订单,最多处理5W个订单 for ($i = 0; $i < 500; $i++) { if ($_break) { break; } $order_list = $model_order->getOrderList($condition, '', 'order_id,order_sn', 'vr_indate asc', 100); if (empty($order_list)) { break; } foreach ($order_list as $order_info) { $result = $logic_order->changeOrderStateSuccess($order_info['order_id']); if (!$result['state']) { $this->log('虚拟订单过使用期自动完成失败SN:' . $order_info['order_sn']); $_break = true; break; } } } //实物订单发货后,超期自动收货完成 $_break = false; $model_order = Model('order'); $logic_order = Logic('order'); $condition = array(); $condition['order_state'] = ORDER_STATE_SEND; $condition['lock_state'] = 0; $condition['delay_time'] = array('lt', TIMESTAMP - ORDER_AUTO_RECEIVE_DAY * 86400); //分批,每批处理100个订单,最多处理5W个订单 for ($i = 0; $i < 500; $i++) { if ($_break) { break; } $order_list = $model_order->getOrderList($condition, '', '*', 'delay_time asc', 100); if (empty($order_list)) { break; } foreach ($order_list as $order_info) { $result = $logic_order->changeOrderStateReceive($order_info, 'system', '系统', '超期未收货系统自动完成订单'); if (!$result['state']) { $this->log('实物订单超期未收货自动完成订单失败SN:' . $order_info['order_sn']); $_break = true; break; } } } }
/** * 支付成功后修改虚拟订单状态 */ public function updateVrOrder($out_trade_no, $payment_code, $order_info, $trade_no) { $post['payment_code'] = $payment_code; $post['trade_no'] = $trade_no; return Logic('vr_order')->changeOrderStatePay($order_info, 'system', $post); }
/** * 订单确认收货 */ public function order_receiveOp() { $model_order = Model('order'); $logic_order = Logic('order'); $order_id = intval($_POST['order_id']); $condition = array(); $condition['order_id'] = $order_id; $condition['buyer_id'] = $this->member_info['member_id']; $order_info = $model_order->getOrderInfo($condition); $if_allow = $model_order->getOrderOperateState('receive', $order_info); if (!$if_allow) { output_error('无权操作'); } $result = $logic_order->changeOrderStateReceive($order_info, 'buyer', $this->member_info['member_name']); if (!$result['state']) { output_error($result['msg']); } else { output_data('1'); } }
/** * 系统收到货款 * @throws Exception */ private function _order_receive_pay($order_info, $post) { $order_id = $order_info['order_id']; $model_order = Model('order'); $logic_order = Logic('order'); $if_allow = $model_order->getOrderOperateState('system_receive_pay', $order_info); if (!$if_allow) { return callback(false, '无权操作'); } if (!chksubmit()) { Tpl::output('order_info', $order_info); //显示支付接口列表 $payment_list = Model('payment')->getPaymentOpenList(); //去掉预存款和货到付款 foreach ($payment_list as $key => $value) { if ($value['payment_code'] == 'predeposit' || $value['payment_code'] == 'offline') { unset($payment_list[$key]); } } Tpl::output('payment_list', $payment_list); Tpl::showpage('order.receive_pay'); exit; } $order_list = $model_order->getOrderList(array('pay_sn' => $order_info['pay_sn'], 'order_state' => ORDER_STATE_NEW)); $result = $logic_order->changeOrderReceivePay($order_list, 'system', $this->admin_info['name'], $post); if ($result['state']) { $this->log('将订单改为已收款状态,' . L('order_number') . ':' . $order_info['order_sn'], 1); } return $result; }
/** * 平台退款处理 * * @param * @return bool */ public function editOrderRefund($refund) { $refund_id = $refund['refund_id']; $refund_lock = '0'; //退款锁定状态:0为正常,1为锁定,2为同意 $model_vr_order = Model('vr_order'); try { $this->beginTransaction(); $state = $this->editRefund(array('refund_id' => $refund_id), $refund); ////更新退款 if ($state && $refund['admin_state'] == '2') { //审核状态:1为待审核,2为同意,3为不同意 $refund_lock = '2'; $order_id = $refund['order_id']; //订单编号 $order = $model_vr_order->getOrderInfo(array('order_id' => $order_id)); $order_amount = $order['order_amount']; //订单金额 $rcb_amount = $order['rcb_amount']; //充值卡支付金额 $predeposit_amount = $order_amount - $order['refund_amount'] - $rcb_amount; //可退预存款金额 $model_predeposit = Model('predeposit'); if ($rcb_amount > 0 && $refund['refund_amount'] > $predeposit_amount) { //退充值卡 $log_array = array(); $log_array['member_id'] = $order['buyer_id']; $log_array['member_name'] = $order['buyer_name']; $log_array['order_sn'] = $order['order_sn']; $log_array['amount'] = $refund['refund_amount']; if ($predeposit_amount > 0) { $log_array['amount'] = $refund['refund_amount'] - $predeposit_amount; } $state = $model_predeposit->changeRcb('refund', $log_array); //增加买家可用充值卡金额 } if ($predeposit_amount > 0) { //退预存款 $log_array = array(); $log_array['member_id'] = $order['buyer_id']; $log_array['member_name'] = $order['buyer_name']; $log_array['order_sn'] = $order['order_sn']; $log_array['amount'] = $refund['refund_amount']; //退预存款金额 if ($refund['refund_amount'] > $predeposit_amount) { $log_array['amount'] = $predeposit_amount; } $state = $model_predeposit->changePd('refund', $log_array); //增加买家可用预存款金额 } if ($state) { $order_array = array(); $order_amount = $order['order_amount']; //订单金额 $refund_amount = $order['refund_amount'] + $refund['refund_amount']; //退款金额 $order_array['refund_state'] = $order_amount - $refund_amount > 0 ? 1 : 2; $order_array['refund_amount'] = ncPriceFormat($refund_amount); $state = $model_vr_order->editOrder($order_array, array('order_id' => $order_id)); //更新订单退款 } } if ($state) { $code_array = explode(',', $refund['code_sn']); $state = $model_vr_order->editOrderCode(array('refund_lock' => $refund_lock), array('vr_code' => array('in', $code_array))); //更新退款的兑换码 if ($state && $refund['admin_state'] == '2') { Logic('vr_order')->changeOrderStateSuccess($order_id); //更新订单状态 } } $this->commit(); return $state; } catch (Exception $e) { $this->rollback(); return false; } }
/** * 检查库存是否充足 */ private function _check_goods_storage($cart_info, $quantity, $member_id) { $model_goods = Model('goods'); $model_bl = Model('p_bundling'); $logic_buy_1 = Logic('buy_1'); if ($cart_info['bl_id'] == '0') { //普通商品 $goods_info = $model_goods->getGoodsOnlineInfoAndPromotionById($cart_info['goods_id']); //抢购 $logic_buy_1->getGroupbuyInfo($goods_info); //限时折扣 $logic_buy_1->getXianshiInfo($goods_info, $quantity); $quantity = $goods_info['goods_num']; if (intval($goods_info['goods_storage']) < $quantity) { return false; } } else { //优惠套装商品 $bl_goods_list = $model_bl->getBundlingGoodsList(array('bl_id' => $cart_info['bl_id'])); $goods_id_array = array(); foreach ($bl_goods_list as $goods) { $goods_id_array[] = $goods['goods_id']; } $bl_goods_list = $model_goods->getGoodsOnlineListAndPromotionByIdArray($goods_id_array); //如果有商品库存不足,更新购买数量到目前最大库存 foreach ($bl_goods_list as $goods_info) { if (intval($goods_info['goods_storage']) < $quantity) { return false; } } } return true; }
/** * 获取虚拟订单支付信息 */ private function _get_vr_order_info($pay_sn) { $logic_payment = Logic('payment'); //取得订单信息 $order_info = $logic_payment->getVrOrderInfo($pay_sn, $this->member_info['member_id']); if (!$order_info['state']) { output_error($order_info['msg']); } //计算本次需要在线支付的订单总金额 $pay_amount = $order_info['data']['order_amount'] - $order_info['data']['pd_amount'] - $order_info['data']['rcb_amount']; $order_info['data']['api_pay_amount'] = ncPriceFormat($pay_amount); return $order_info; }