微信公众平台PHP源代码

来源:互联网 发布:王者荣耀红莲斗篷数据 编辑:程序博客网 时间:2024/06/08 09:47
以下为微信公众平台订阅号PHP源代码
<?php//定义您的标识define("TOKEN", "weixin");//请将 "weixin" 改为您命名的 TOKEN$wechatObj = new wechat();if(isset($_GET['echostr'])){$wechatObj->valid();}else{$wechatObj->responseMsg();}class wechat{    public function valid()    {        $echoStr = $_GET["echostr"];        //有效签名,选项        if        ($this->checkSignature())        {        echo $echoStr;        exit;        }    }    private function checkSignature()    {        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];        $token = TOKEN;        $tmpArr = array($token, $timestamp, $nonce);        sort($tmpArr,SORT_STRING);        $tmpStr = implode($tmpArr);        $tmpStr = sha1($tmpStr);        if        ($tmpStr == $signature)        {        return true;        }        else        {        return false;        }    }    public function responseMsg()    //接收数据    {        //使用 get 亦或 post 数据,取决于不同环境        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];        //获取 post 数据        if        (!empty($postStr))        {        //用 SimpleXML 解析 post 过来的 XML 数据        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);        $type = trim($postObj -> MsgType);            //判断数据类型            switch            ($type)            {            case "text":                $resultStr = $this -> receiveText($postObj);                break;            case "event":                $resultStr = $this -> receiveEvent($postObj);                break;            default:                $resultStr = "unknow msg type: ".$type;                break;            }        echo $resultStr;//输出结果        }        else        {        echo "";        exit;        }    }    private function receiveText($object)    {        $funcFlag = 0;        $keyword = trim($object->Content);//获取消息内容        $resultStr = "";        $contentStr = "";        //返回数据        //设置回复关键词18        if        ($keyword == "18" || $keyword == " 18" || $keyword == "18 ")        {        $contentStr = '<a href="http://www.weixingon.com/wechat/wechatappdev/">微信公众平台应用开发实战</a>';        $resultStr = $this -> transmitText($object, $contentStr, $funcFlag);        return $resultStr;        }        //设置回复关键词21        if        ($keyword == "21" || $keyword == " 21" || $keyword == "21 ")        {        $contentStr = '<a href="http://www.weixingon.com/wechat/allenzhangofwechat/">微信帝国内争与外伐</a>';        $resultStr = $this -> transmitText($object, $contentStr, $funcFlag);        return $resultStr;        }        //被动自动回复内容        else         {        $contentStr = '感谢您的关注/::)回复数字【18】阅读《微信公众平台应用开发实战》回复数字【21】阅读《微信帝国内争与外伐》';//返回消息内容        $resultStr = $this -> transmitText($object, $contentStr, $funcFlag);        return $resultStr;        }    }    private function receiveEvent($object)    {    $contentStr = "";        switch        ($object -> Event)        {        case "subscribe":            //关注後自动推送消息            $contentStr = '感谢您的关注/::)回复数字【18】阅读《微信公众平台应用开发实战》回复数字【21】阅读《微信帝国内争与外伐》';            break;        }    $resultStr = $this -> transmitText($object, $contentStr);    return $resultStr;    }        private function transmitText($object, $content, $flag = 0)    {    //返回文本消息模板    $textTpl = "<xml>                <ToUserName><![CDATA[%s]]></ToUserName>                <FromUserName><![CDATA[%s]]></FromUserName>                <CreateTime>%s</CreateTime>                <MsgType><![CDATA[text]]></MsgType>                <Content><![CDATA[%s]]></Content>                <FuncFlag>%d</FuncFlag>                </xml>";    //格式化消息模板    $resultStr = sprintf($textTpl, $object -> FromUserName, $object -> ToUserName, time(), $content, $flag);    return $resultStr;    }}?>
原创粉丝点击