/** * 父类的Validate */ public function baseValidate(ZOL_Request $input, ZOL_Response $output) { $output->execName = $input->execName = $input->getExecName(); $output->actName = $input->actName = $input->getActionName(); $output->ctlName = $input->ctlName = $input->getControllerName(); $output->admin = $input->cookie(Helper_Yun_Member::$strUid); $output->userId = $input->cookie(Helper_Yun_Member::$strUid); #用户名 $cipher = $input->cookie(Helper_Yun_Member::$strCipher); $output->sysCfg = Helper_Yun_Option::getAllOptions(); $output->sysName = empty($output->sysCfg['SysName']) ? "" : $output->sysCfg['SysName']["value"]; if (!$output->noLoginCheck) { #验证登录 $output->isLogin = Helper_Yun_Member::checkLogin(array('userid' => $output->userId, 'cipher' => $cipher)); if (!$output->isLogin) { #如果登录不OK $backUrl = isset($_SERVER['REQUEST_URI']) ? 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] : ''; if (strpos($backUrl, "Login")) { $backUrl = ""; } Helper_Front::JumpToLogin(array('backUrl' => $backUrl)); } } #获得管理员身份 $output->adminInfo = Helper_Yun_AdminUser::getAdminUserInfo(array('userId' => $output->userId)); $output->adminType = (int) $output->adminInfo["isAdmin"]; //管理员类型,用于权限判断 if ($output->permission && !in_array($output->adminType, $output->permission)) { echo "Permission denied"; exit; } //所有站点的名字 $output->siteNames = ZOL_Config::get("Yun_Sites", "NAMES"); #头尾html $output->header = $output->fetchCol("Part/Header"); //左侧 $output->navi = $output->fetchCol("Part/Navi"); $output->footer = $output->fetchCol("Part/Footer"); return true; return true; }
/** * 接收表单 生成订单,并显示支付二维码 * @param ZOL_Request $input * @param ZOL_Response $output */ public function doDefault(ZOL_Request $input, ZOL_Response $output) { #队列异步回调的url的域名部分 $baseUrl = 'http://reward.suhy.test.zol.com.cn'; #支付的baseurl $payBaseUrl = 'http://10.19.38.115:8990'; # 报错模板的html $errorHtml = $output->fetchCol('ShowPayError'); # token验证 if (!Helper_Reward_RewardFunc::verityRewardToken($input, $output)) { # 显示报错模板 $errorArr = array('flag' => 'error', 'msg' => '请不要重复提交!', 'errorCode' => 8001, 'toLog' => 1, 'showHtml' => $errorHtml); Helper_Reward_RewardFunc::ajaxExit($errorArr); } else { # 重置该用户的token //验证的时候就已经重置了 } if (!$output->url || !$output->money || !$output->articleId) { # 显示报错模板 Helper_Reward_RewardFunc::ajaxExit(array('flag' => 'error', 'msg' => '金额不合法或缺少文章id', 'showHtml' => $errorHtml)); } # 文章页的话的收款人是文章作者,其他业务的不同 if ($output->ext1 <= 0) { $output->payee = Helper_Reward_RewardFunc::getArticleAuthor(array('articleId' => $output->articleId)); } else { } $output->orderNo = Helper_Reward_RewardFunc::getOrderNumber(); $output->userIp = ZOL_Api::run("Service.Area.getClientIp", array()); /* # 订单入库 $id = Helper_Reward_RewardModel::insertData(array( 'order_name' => $output->orderName, 'order_number' => $output->orderNo, 'article_id' => $output->articleId, 'url' => $output->url, 'insert_date' => SYSTEM_DATE, 'pay_time' => NULL, 'custmer' => $output->userId, 'money' => $output->money, 'message' => $output->message, 'payment' => $output->payment, 'order_status' => 0, 'payee' => $output->payee,# 'service_type' => 1,# 1资讯文章打赏 2.论坛(暂不支持) #'debug' => 1, ));*/ # 消息体/数据体 $putQueueBody = array('order_name' => $output->orderName, 'order_number' => $output->orderNo, 'article_id' => $output->articleId, 'ext1' => $output->ext1, 'ext2' => $output->ext2, 'url' => $output->url, 'insert_date' => SYSTEM_DATE, 'pay_time' => NULL, 'custmer' => $output->userId, 'money' => $output->money, 'message' => $output->message, 'payment' => $output->payment, 'order_status' => 0, 'payee' => $output->payee, 'service_type' => $output->serviceType); $putQueueData = array('queue' => 'ArticleReward', 'producer' => iconv('GB2312', 'UTF-8//IGNORE', '媒体平台-打赏'), 'consumerUrls' => 'http://reward.suhy.test.zol.com.cn/?c=Queue_DealQueue&a=DealQueueOrder', 'msgType' => 'json', 'charset' => 'utf-8', 'priority' => 0, 'persistent' => true, 'version' => '1.0', 'content' => iconv('GBK', 'UTF-8//IGNORE', $output->message), 'flag' => 1, 'id' => 123, 'body' => api_json_encode($putQueueBody)); #var_dump($putQueueData);exit(); # 将订单数据推入队列,进行异步插入数据库 $result = Libs_Reward_CurlRequest::curlPostMethod(array('url' => 'http://10.19.38.115:8990/queue/putmessage?queuename=ArticleReward&token=8951f7339caee44b23383cdded9a3d2b66', 'pull_data' => json_encode($putQueueData), 'data_type' => 'json')); $result = json_decode($result, true); # 如果800,则入队成功 if ($result['resultCode'] != 800) { Helper_Reward_RewardFunc::ajaxExit(array('flag' => 'error', 'errorCode' => 8002, 'queueErrorCode' => $result['resultCode'], 'msg' => '[8002]生成订单失败!,加入队列失败!', 'toLog' => 1, 'showHtml' => $errorHtml)); } # 此时已经是“分”作为单位 $moneyCents = $output->money; # 默认支付宝 $payType = 'alipay'; switch ($output->payment) { case 1: $payType = 'alipay'; break; case 2: $payType = 'wxpay'; break; } $notifyUrl = 'http://reward.suhy.test.zol.com.cn/?c=Queue_DealQueue&a=DealPayNotice&sign='; $callbackUrl = 'http://reward.suhy.test.zol.com.cn/?c=FormHtml&a=ShowPaySuccess'; # 处理支付事宜,给支付网关发送xml $xmlStr = Libs_Reward_SimpleXML::getXmlStr(array('root_node' => 'xml', 'data_array' => array('partnerId' => 101, 'userId' => $output->userId, 'orderId' => $output->orderNo, 'goodsDesc' => $output->message, 'payType' => $payType, 'goodsName' => $output->orderName, 'goodsUrl' => $output->url, 'fee' => $moneyCents, 'clientType' => 'PC', 'clientIp' => $output->userIp, 'attach' => '', 'signType' => 'md5', 'notifyUrl' => $notifyUrl, 'callbackUrl' => $callbackUrl))); #var_dump($xmlStr);exit(); #$xmlStr = '<xml><partnerId>101</partnerId><orderId>2015122312123</orderId><goodsDesc>测试订单</goodsDesc><payType>WXPAY</payType><goodsName>龙芯一号</goodsName><goodsUrl>http://www.zol.com/detail/diy_host/ZXDN/25544595.html</goodsUrl><fee>6999</fee><clientType>PC</clientType><clientIp>10.16.38.115</clientIp><attach>附件</attach><signType>md5</signType></xml>'; #$xmlStr = '<xml><partnerId>101</partnerId><orderId>2015122312123</orderId><goodsDesc>打赏文章</goodsDesc><payType>WXPAY</payType><goodsName>龙芯一号</goodsName><goodsUrl>http://www.zol.com/detail/diy_host/ZXDN/25544595.html</goodsUrl><fee>69119</fee><clientType>PC</clientType><clientIp>10.16.38.115</clientIp><attach>附件</attach><signType>md5</signType></xml>'; #$xmlStrGBK = $xmlStr; $xmlStr = iconv('GBK', 'UTF-8//IGNORE', $xmlStr); $xmlStr = base64_encode($xmlStr); # Crypt3Des加密 $rep = new Libs_Reward_Crypt3Des('@!@!@'); $sign = md5($rep->encrypt($xmlStr)); #var_dump($xmlStr,$sign);exit(); /* # 请求ZOL支付网关 $data = Libs_Reward_CurlRequest::curlPostMethod(array( 'url' => 'http://10.19.37.162:8080/paygate/payment/scan/prepay?sign='.$sign, 'pull_data' => $xmlStr, 'data_type' =>'xml', )); if(!$data){ # 异常,记录日志 Helper_Reward_RewardFunc::ajaxExit(array( 'flag' => 'error', 'errorCode' => 8004, 'msg' => '[8004]xml捕获失败,请求支付网关的xml,返回异常!', 'toLog' => 1, 'showHtml' => $errorHtml, )); } # ZOL支付接口状态码 $payStatusCode = array( '800'=>'正常', '801'=>'XML报文为NULL', '802'=>'签名验证错误', '803'=>'XML解析失败', '805'=>'支付类型错误', '806'=>'没有找到接入方ID', ); # 解析xml $xml = new SimpleXMLElement($data); $xmlArr = array(); foreach($xml as $k=>$v){ $xmlArr[$k] = $v; } #var_dump($xmlArr);exit(); $statusCode = (array)$xml->resultCode; if($statusCode[0] != 800){ $errorMsg = isset($payStatusCode[$statusCode[0]]) ? $payStatusCode[$statusCode[0]] : ''; Helper_Reward_RewardFunc::ajaxExit(array( 'flag' => 'error', 'errorCode' => 8003, 'payErrorCode'=>$statusCode[0], 'msg' => '[8003]支付发生异常!请求支付网关后,返回的xml状态码异常!'.$errorMsg."$statusCode[0]", 'toLog' => 1, 'showHtml' => $errorHtml, )); } $src = $output->src = isset($xmlArr['payUrl']) ? $xmlArr['payUrl'] : ''; */ # 如果是支付宝,则进行跳转新页面 1表示支付宝 if ($output->payment == 1) { #$src = $output->src = 'http://10.19.38.115:8080'.$src; #header('Location:'.$src); } $targetStr = $output->payment == 1 ? '' : 'target="iframeQCode"'; # 方案2 Start 20160104 http://localhost/www/class_of_me/www/reward/test.php http://cashier.zol.com/paygate/pay?partnerId=101 $way2 = '<form id="form_zolpaygate" action="http://cashier.zol.com/paygate/pay?partnerId=101" method="post" ' . $targetStr . '> <input type="hidden" name="_data" value="' . $xmlStr . '"> <input type="hidden" name="sign" value="' . $sign . '"> <script type="text/javascript">document.forms["form_zolpaygate"].submit();</script> </form>'; $output->way2 = $way2; #echo $way2;return ''; # 方案2 End # 二维码的HTML $output->qCodeHtml = $qCodeHtml = Reward_Plugin_PayQCode::getPayHtml($input, $output); $output->setTemplate('RewardQCode'); return ''; }
/** * 获得数据列表 */ public function doSendTable(ZOL_Request $input, ZOL_Response $output) { header("Pragma: no-cache"); header('Content-type: application/x-msexcel;charset=utf-8'); header("Content-Disposition: attachment; filename=商品数据_" . date('Y-m-d H:i:s') . ".xls"); $wArr = array(); #搜索字段 $whereSql = ""; $output->sername = $wArr['name'] = $input->get('name'); $output->sercode = $wArr['code'] = $input->get('code'); $output->sercateId = $wArr['cateId'] = $input->get('cateId'); if (!empty($wArr)) { foreach ($wArr as $k => $v) { if ($k == 'cateId' && $v) { $whereSql .= ' AND cateId =' . $v; } elseif ($k == 'code' && $v) { $whereSql .= ' AND code =\'' . $v . "'"; } else { if (gettype($v) == 'string') { $whereSql .= !empty($v) ? ' AND ' . $k . ' like binary "%' . $v . '%" ' : ''; } else { $whereSql .= !empty($v) ? ' AND ' . $k . '=' . $v : ''; } } } } $pageSize = 100000; $orderSql = "order by id desc"; $data = Helper_Dao::getList(array('dbName' => "Db_AndyouYun", 'tblName' => "product", 'cols' => "*", 'pageSize' => $pageSize, 'page' => 1, 'pageUrl' => $pageUrl, 'whereSql' => $whereSql, 'orderSql' => $orderSql, 'iswrite' => true, 'pageTpl' => 9)); if ($data) { $output->pageBar = $data['pageBar']; $output->allCnt = $data['allCnt']; $output->data = $data['data']; $output->pageUrl = $pageUrl; } $output->cateInfo = Helper_Product::getProductCatePairs(); //获得所有的种类 $output->proCtype = ZOL_Config::get("GLOBAL", "PRO_CTYPE"); $html = $output->fetchCol('ProductToExcel'); echo mb_convert_encoding($html, "utf-8", "gbk"); exit; }
protected function showMessage(ZOL_Request $input, ZOL_Response $output) { echo $output->fetchCol("M/Message"); exit; }