微信公众平台开发源码

免费下载微信公众平台PHP源码 (约 2KB)
以下为微信公众平台订阅号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;
    }
}
?>

包括验证 TOKEN,接收推送消息後自动回复,被动自动回复,设置关键词回复 4 项功能。
实际效果可以关注下面天香空城微信公众平台帐号。

天香空城微信二维码
关注 天香空城 微信号 ulisse 或扫描二维码,可以了解微信营销书籍
微信营销书评
微信公众平台开发源码

返回微信营销