您的位置:首页 > 移动开发 > 微信开发

微信获取用户基本信息

2016-10-26 14:33 113 查看
<?php

/**

  * wechat php test

  */

    //print_R($ar);die;

//define your token

define("TOKEN", "yanyanweixin");

$wechatObj = new wechatCallbackapiTest();

$wechatObj->valid();

class wechatCallbackapiTest

{

    public function valid()

    {

        $echoStr = $_GET["echostr"];

        //echo $this->checkSignature();

        //valid signature , option

        if($this->checkSignature()){

            echo $echoStr;

            $this->responseMsg();

            exit;

        }

    }

    public function responseMsg()

    {

        //get post data, May be due to the different environments

        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

          //extract post data

        if (!empty($postStr)){

                /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,

                   the best way is to check the validity of xml by yourself */

                libxml_disable_entity_loader(true);

                  $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

                $fromUsername = $postObj->FromUserName;

                $toUsername = $postObj->ToUserName;

                $keyword = trim($postObj->Content);

                $time = time();

                $textTpl = "<xml>

                            <ToUserName><![CDATA[%s]]></ToUserName>

                            <FromUserName><![CDATA[%s]]></FromUserName>

                            <CreateTime>%s</CreateTime>

                            <MsgType><![CDATA[%s]]></MsgType>

                            <Content><![CDATA[%s]]></Content>

                            <FuncFlag>0</FuncFlag>

                            </xml>";             

                if(!empty( $keyword ))

                {

                    if($keyword=='你好吗'){

                        $contentStr = "我很好,你呢";

                    }else if($keyword=="个人信息"){

                              //session_start();

                            $APPID="wx87c986dca72c9d62";

                            $APPSECRET="32fcf1f48b26b0086fa93e61551df5bb";

                            $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$APPSECRET;

                            $json=file_get_contents($url);

                            $arr=json_decode($json,true);

                            $token= $arr['access_token'];

                                                     

                              //$_SESSION['token']=$token;

                            $urls="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$fromUsername."&lang=zh_CN";

                            $res=file_get_contents($urls);

                            

                            $info=json_decode($res,true);

                            $contentStr ="用户姓名:".$info['nickname'];

                      

                    }else{

                       $url="http://www.tuling123.com/openapi/api?key=954d150bd3a78983dc9eeef2311ff194&info=".$keyword;

                        $json=file_get_contents($url);

                        $arr=json_decode($json,true);

                        $contentStr =$arr['text'];

                    }

                     $msgType = "text";

                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

                    echo $resultStr;

                }else{

                    $msgType = "text";

                    $contentStr = "欢迎首次关注张艳艳";

                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

                    echo $resultStr;

                    echo "Input something...";

                }

        }else {

            echo "";

            exit;

        }

    }

        

    private function checkSignature()

    {

        // you must define TOKEN by yourself

        if (!defined("TOKEN")) {

            throw new Exception('TOKEN is not defined!');

        }

        

       $signature = $_GET["signature"];

        $timestamp = $_GET["timestamp"];

        $nonce = $_GET["nonce"];

        /* $signature = "fc7225498730d498467f3e8f55a775aaf4c0fc3c";

        $timestamp = '123';

        $nonce = '456';    

*/

        $token = TOKEN;

        $tmpArr = array($token, $timestamp, $nonce);

        // use SORT_STRING rule

        sort($tmpArr, SORT_STRING);

        $tmpStr = implode( $tmpArr );

        $tmpStr = sha1( $tmpStr );

        //return $tmpStr;

        if( $tmpStr == $signature ){

            return true;

        }else{

            return false;

        }

    }

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: