获取微信用户基本信息

public function getuserinfo(){
        header("Content-type:text/html;charset=utf-8");
        ini_set('date.timezone', 'Asia/Shanghai');
  //引入封装的类
           // import('Common.Lib.WxPayPubHelper.WxPayPubHelper');
            //使用jsapi接口
            //$jsApi = new \JsApi_pub();
/*      经过code得到openid*/
            if (!isset($_GET['code'])) {
                //触发微信返回code码
                $url = $this->createOauthUrlForCode("http://" . $_SERVER['HTTP_HOST'] . "/Web/Index/index.html");
                header("Location: $url");
            } else {
                //获取code码,以获取openid
                $code = I('get.code');
                if (!empty($code)) {
                    $this->setCode($code);
                    $result_wechat = $this->getWxInfomation();
                    if ($result_wechat) {
                        if (!M('web_user')->where(array('openid' => $result_wechat['openid']))->find())
                            M('web_user')->add($result_wechat);
                        cookie('openid', $result_wechat['openid']);
                        cookie('nickname', $result_wechat['nickname']);
                        cookie('wechatinfo', $result_wechat);
                    }
                }
            }
}

***

> //其实须要一个包,可是我不知道怎么传文件,我只能复制一些能用的函数了

    /**
         *    做用:生成能够得到code的url
         */
    function createOauthUrlForCode($redirectUrl)
    {
        $urlObj["appid"] = WxPayConf_pub::APPID;
        $urlObj["redirect_uri"] = "$redirectUrl";
        $urlObj["response_type"] = "code";
        $urlObj["scope"] = "snsapi_userinfo";
        $urlObj["state"] = "STATE" . "#wechat_redirect";
        $bizString = $this->formatBizQueryParaMap($urlObj, false);
        return "https://open.weixin.qq.com/connect/oauth2/authorize?" . $bizString;
    }
    
      /**
     *    做用:格式化参数,签名过程须要使用
     */
    function formatBizQueryParaMap($paraMap, $urlencode)
    {
        $buff = "";
        ksort($paraMap);
        foreach ($paraMap as $k => $v) {
            if ($urlencode) {
                $v = urlencode($v);
            }
            //$buff .= strtolower($k) . "=" . $v . "&";
            $buff .= $k . "=" . $v . "&";
        }
        $reqPar;
        if (strlen($buff) > 0) {
            $reqPar = substr($buff, 0, strlen($buff) - 1);
        }
        return $reqPar;
    }
        /**
     *    做用:设置code
     */
    function setCode($code_)
    {
        $this->code = $code_;
    }
    
    
        /**
     * 获取微信用户数据
     * @return mixed
     */
    function getWxInfomation()
    {
        $url = $this->createOauthUrlForOpenid();
        //初始化curl
        $ch = curl_init();
        //设置超时
        curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        //运行curl,结果以jason形式返回
        $res = curl_exec($ch);
        curl_close($ch);
        //取出openid
        $data = json_decode($res, true);

        if ($data) {
            $url = $this->createOauthUrlForUserInfo($data['access_token'], $data['openid']);
            //初始化curl
            $ch = curl_init();
            //设置超时
            curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_HEADER, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            //运行curl,结果以jason形式返回
            $res = curl_exec($ch);
            curl_close($ch);
            //取出openid
            $data = json_decode($res, true);
            return $data;
        }
    }