/** * 平台确认退款处理 * * @param * @return bool */ public function editOrderRefundExtension($refund) { $refund_id = intval($refund['refund_id']); if ($refund_id > 0) { Uk86Language::uk86_read('model_lang_index'); $order_id = $refund['order_id']; //订单编号 $field = 'trade_no,order_id,buyer_id,buyer_name,store_id,order_sn,order_amount,payment_code,order_state,refund_amount'; $model_order = Model('order'); $order = $model_order->getOrderInfo(array('order_id' => $order_id), array(), $field); try { $this->beginTransaction(); $order_amount = $order['order_amount']; //订单金额 //$predeposit_amount = $order_amount-$order['refund_amount'];//可退金额 //if ($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']; $refund['trade_no'] = $order['trade_no']; if ($predeposit_amount > 0) { $log_array['amount'] = $refund['refund_amount'] - $predeposit_amount; } $state = $this->changePa("refund", $log_array, $refund); //增加买家支付账户金额 //} $order_state = $order['order_state']; $model_trade = Model('trade'); $order_paid = $model_trade->getOrderState('order_paid'); //订单状态20:已付款 if ($state && $order_state == $order_paid) { uk86_Logic('order')->changeOrderStateCancel($order, 'system', '系统', '商品全部退款完成取消订单', false); } 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'] = uk86_ncPriceFormat($refund_amount); $order_array['delay_time'] = time(); $state = $model_order->editOrder($order_array, array('order_id' => $order_id)); //更新订单退款 } if ($state && $refund['order_lock'] == '2') { $state = $this->editOrderUnlock($order_id); //订单解锁 } $this->commit(); return $state; } catch (Exception $e) { $this->rollback(); return false; } } return false; }
public function indexOp() { if (ob_get_level()) { ob_end_clean(); } $logic_queue = uk86_Logic('queue'); $worker = new Uk86QueueServer(); $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(); } } }
/** * 入列 * @param string $key * @param array $value */ public static function push($key, $value) { if (!C('queue.open')) { uk86_Logic('queue')->{$key}($value); return; } if (!is_object(self::$queuedb)) { self::$queuedb = new Uk86QueueDB(); } return self::$queuedb->push(serialize(array($key => $value))); }
/** * 虚拟商品购买第二步 */ public function buy_step2Op() { $logic_buy_virtual = uk86_Logic('buy_virtual'); $_POST['order_from'] = 1; $result = $logic_buy_virtual->buyStep3($_POST, $_SESSION['member_id']); if (!$result['state']) { $this->wap_showDialog($result['msg'], 'error', uk86_getReferer()); } //转向到商城支付页面 uk86_redirect('index.php?act=wap_buy_virtual&op=pay&order_id=' . $result['data']['order_id']); }
/** * 虚拟商品购买第三步 */ public function buy_step3Op() { $logic_buy_virtual = uk86_Logic('buy_virtual'); $_POST['order_from'] = 1; $result = $logic_buy_virtual->buyStep3($_POST, $_SESSION['member_id']); if (!$result['state']) { uk86_showMessage($result['msg'], 'index.php', 'html', 'error'); } //转向到商城支付页面 uk86_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) { Uk86QueueClient::push('cancelOrderUpdateStorage', array($order_info['goods_id'] => $order_info['goods_num'])); } else { uk86_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 uk86_callback(true, '更新成功'); } catch (Exception $e) { $model_vr_order->rollback(); return uk86_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 = uk86_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 = uk86_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 = uk86_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']); } }
/** * 修改商品价格 * @param unknown $order_info */ private function _order_spay_price($order_info, $post) { $model_order = Model('order'); $logic_order = uk86_Logic('order'); if (!uk86_chksubmit()) { Tpl::output('order_info', $order_info); Tpl::output('order_id', $order_info['order_id']); Tpl::showpage('store_order.edit_spay_price', 'null_layout'); exit; } else { $if_allow = $model_order->getOrderOperateState('spay_price', $order_info); if (!$if_allow) { return uk86_callback(false, '无权操作'); } return $logic_order->changeOrderSpayPrice($order_info, 'seller', $_SESSION['member_name'], $post['goods_amount']); } }
/** * 发货 */ public function sendOp() { $order_id = intval($_GET['order_id']); if ($order_id <= 0) { uk86_showMessage(Uk86Language::uk86_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) { uk86_showMessage(Uk86Language::uk86_get('wrong_argument'), '', 'html', 'error'); } if (uk86_chksubmit()) { $logic_order = uk86_Logic('order'); $_POST['reciver_info'] = $this->_get_reciver_info(); $result = $logic_order->changeOrderSend($order_info, 'seller', $_SESSION['member_name'], $_POST); if (!$result['state']) { uk86_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 = uk86_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'); }
/** * 删除订单 */ private function _order_recycle($order_info, $get) { $model_order = Model('order'); $logic_order = uk86_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 uk86_callback(false, '无权操作'); } return $logic_order->changeOrderStateRecycle($order_info, 'buyer', $state_type); }
/** * 更新订单状态 */ private function _update_order($out_trade_no, $trade_no) { $model_order = Model('order'); $logic_payment = uk86_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; }
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 = uk86_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; }
/** * 系统收到货款 * @param unknown $order_info * @throws Exception */ private function _order_receive_pay($order_info, $post) { $model_pm_order = Model('pm_order'); $logic_pm_order = uk86_Logic('pm_order'); $if_allow = $model_pm_order->getOrderOperateState('system_receive_pay', $order_info); if (!$if_allow) { return uk86_callback(false, '无权操作'); } if (!uk86_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_pm_order->changeOrderStatePay($order_info, 'system', $post); } }
/** * 支付成功后修改促销订单状态 */ public function updatePmOrder($out_trade_no, $payment_code, $order_info, $trade_no) { $post['payment_code'] = $payment_code; $post['trade_no'] = $trade_no; return uk86_Logic('pm_order')->changeOrderStatePay($order_info, 'system', $post); }
/** * 系统收到货款 * @throws Exception */ private function _order_receive_pay($order_info, $post) { $order_id = $order_info['order_id']; $model_order = Model('order'); $logic_order = uk86_Logic('order'); $if_allow = $model_order->getOrderOperateState('system_receive_pay', $order_info); if (!$if_allow) { return uk86_callback(false, '无权操作'); } if (!uk86_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; }
/** * 订单自动完成 */ private function _order_auto_complete() { //虚拟订单过使用期自动完成 $_break = false; $model_order = Model('vr_order'); $logic_order = uk86_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 = uk86_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 change_addressOp() { $logic_buy = uk86_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('地址修改失败'); } }
/** * 取消订单 */ private function _order_cancel($order_info, $post) { if (!uk86_chksubmit()) { Tpl::output('order_info', $order_info); Tpl::showpage('member_vr_order.cancel', 'null_layout'); exit; } else { $model_vr_order = Model('vr_order'); $logic_vr_order = uk86_Logic('vr_order'); $if_allow = $model_vr_order->getOrderOperateState('buyer_cancel', $order_info); if (!$if_allow) { return uk86_callback(false, '无权操作'); } $msg = $post['state_info1'] != '' ? $post['state_info1'] : $post['state_info']; return $logic_vr_order->changeOrderStateCancel($order_info, 'buyer', $msg); } }
/** * 支付接口返回 * */ public function returnOp() { $extra_common_param = explode(',', $_GET['extra_common_param']); $order_type = $extra_common_param[0]; $out_act = $extra_common_param[1]; if ($order_type == 'real_order') { $act = 'member_order'; } elseif ($order_type == 'vr_order') { $act = 'member_vr_order'; } elseif ($order_type == 'pd_order') { $act = 'predeposit'; //add wangjiang 添加返回是促销活动权利购买行为的类型 } elseif ($order_type = 'promotion_vr_order') { $act = 'store_groupbuy'; //end add wangjiang } 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)) { uk86_showMessage('参数错误', $url, '', 'html', 'error'); } $logic_payment = uk86_Logic('payment'); if ($order_type == 'real_order') { $result = $logic_payment->getRealOrderInfo($out_trade_no); if (!$result['state']) { uk86_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']) { uk86_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']) { uk86_showMessage($result['msg'], $url, 'html', 'error'); } if ($result['data']['pdr_payment_state'] == 1) { $payment_state = 'success'; } } elseif ($order_type = 'promotion_vr_order') { $result = $logic_payment->getPromotionVrOrderInfo($out_trade_no); if (!$result['state']) { uk86_showMessage($result['msg'], $url, 'html', 'error'); } if ($result['data']['order_state'] != ORDER_STATE_NEW) { $payment_state = 'success'; } } //end wangjiang $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']) { uk86_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) { uk86_showMessage('支付数据验证失败', $url, 'html', 'error'); } //取得支付结果 $pay_result = $payment_api->getPayResult($_GET); if (!$pay_result) { uk86_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']) { uk86_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=' . uk86_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=' . uk86_ncPriceFormat($api_pay_amount); } elseif ($order_type == 'pd_order') { $pay_ok_url = SHOP_SITE_URL . '/index.php?act=predeposit'; } elseif ($order_type == 'promotion_vr_order') { $pay_ok_url = SHOP_SITE_URL . '/index.php?act=' . $out_act . '&op=quota_add_save&order_sn=' . $out_trade_no . '&order_id=' . $order_pay_info['order_id'] . '&order_amount=' . uk86_ncPriceFormat($api_pay_amount) . '&payment_code=' . $payment_info['payment_code']; } //end wangjiang if ($payment_info['payment_code'] == 'tenpay') { uk86_showMessage('', $pay_ok_url, 'tenpay'); } else { uk86_redirect($pay_ok_url); } }
/** * 平台退款处理 * * @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'] = uk86_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') { uk86_Logic('vr_order')->changeOrderStateSuccess($order_id); //更新订单状态 } } $this->commit(); return $state; } catch (Exception $e) { $this->rollback(); return false; } }
/** * 兑换码消费 */ private function _exchange() { if (uk86_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'])); //如果全部兑换完成,更新订单状态 uk86_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'] = uk86_thumb($order_info, 60); $order_info['img_240'] = uk86_thumb($order_info, 240); $order_info['goods_url'] = uk86_urlShop('goods', 'index', array('goods_id' => $order_info['goods_id'])); $order_info['order_url'] = uk86_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 _check_goods_storage($cart_info, $quantity, $member_id) { $model_goods = Model('goods'); $model_bl = Model('p_bundling'); $logic_buy_1 = uk86_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; }
/** * F码验证 */ public function check_fcodeOp() { $result = uk86_Logic('buy')->checkFcode($_GET['goods_commonid'], $_GET['fcode']); echo $result['state'] ? '1' : '0'; exit; }
/** * 取消订单 * @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) { Uk86QueueClient::push('cancelOrderUpdateStorage', $data); } else { uk86_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 uk86_callback(true, '操作成功'); } catch (Exception $e) { $this->rollback(); return uk86_callback(false, '操作失败'); } }
/** * 生成抢购的订单 * @author bzhang */ public function createGroupOrder($post, $member_id, $member_name, $member_email) { $this->_member_info['member_id'] = $member_id; $this->_member_info['member_name'] = $member_name; $this->_member_info['member_email'] = $member_email; $this->_post_data = $post; $store_id = 0; try { $model_order = Model('order'); $model_order->beginTransaction(); //第1步 生成pay订单 $logic_buy_1 = uk86_Logic('buy_1'); $pay_sn = $logic_buy_1->makePaySn($_SESSION['member_id']); $order_pay = array(); $order_pay['pay_sn'] = $pay_sn; $order_pay['buyer_id'] = $_SESSION['member_id']; $order_pay_id = $model_order->addOrderPay($order_pay); if (!$order_pay_id) { throw new Exception('订单保存失败[未生成支付单]'); } require_once BASE_RESOURCE_PATH . DS . 'phpqrcode' . DS . 'index.php'; $this->PhpQRCode = new PhpQRCode(); //创建订单 $order = array(); $order['order_sn'] = $logic_buy_1->makeOrderSn($order_pay_id); //根据订单号生成二维码 $order['order_code'] = $this->_get_code($order['order_sn'], $member_name); $order['pay_sn'] = $pay_sn; $order['store_id'] = $store_id; $order['store_name'] = '系统平台'; $order['buyer_id'] = $member_id; $order['buyer_name'] = $member_name; $order['buyer_email'] = $member_email; $order['add_time'] = TIMESTAMP; $order['payment_code'] = 'online'; $order['order_state'] = ORDER_STATE_NEW; $order['order_amount'] = $post['price']; $order['shipping_fee'] = 0; $order['goods_amount'] = $order['order_amount'] - $order['shipping_fee']; $order['order_from'] = ''; $order['store_mentioning'] = ''; //如果支持方式为空时,默认为货到付款 ukshop if ($order['payment_code'] == "") { $order['payment_code'] = "offline"; } $order_id = $model_order->addOrder($order); $order['id'] = $order_id; if (!$order_id) { throw new Exception('订单保存失败[未生成订单数据]'); } $model_order->commit(); return uk86_callback(true, '', $order); } catch (Exception $e) { $model_order->rollback(); return uk86_callback(false, $e->getMessage()); } }
/** * 订单确认收货 */ public function order_receiveOp() { $model_order = Model('order'); $logic_order = uk86_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'); } }
/** * 提货验证 */ public function pickup_parcelOp() { if (uk86_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)); uk86_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 add_combOp() { if (!preg_match('/^[\\d|]+$/', $_GET['goods_ids'])) { exit(json_encode(array('state' => 'false'))); } $model_goods = Model('goods'); $logic_buy_1 = uk86_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 uk86_setNcCookie('cart_goods_num', $model_cart->cart_goods_num, 2 * 3600); $data = array('state' => 'true', 'num' => $model_cart->cart_goods_num, 'amount' => uk86_ncPriceFormat($model_cart->cart_all_price)); } else { $data = array('state' => 'false'); exit(json_encode($data)); } } exit(json_encode($data)); }