예제 #1
0
 /**
  * 父类的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;
 }
예제 #2
0
    /**
     * 接收表单 生成订单,并显示支付二维码
     * @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&amp;a=DealPayNotice&amp;sign=';
        $callbackUrl = 'http://reward.suhy.test.zol.com.cn/?c=FormHtml&amp;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 '';
    }
예제 #3
0
 /**
  * 获得数据列表
  */
 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;
 }
예제 #4
0
 protected function showMessage(ZOL_Request $input, ZOL_Response $output)
 {
     echo $output->fetchCol("M/Message");
     exit;
 }