·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> 微信公众平台开发尝试

微信公众平台开发尝试

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
微信公众平台开发尝试

最近看了一篇博文是说微信公众平台搭建,于是心血来潮自己也尝试了一下。

1.不用多讲了,申请微信公众号,对于个人来说,只能申请订阅号。

可以看这个链接的文章,http://jingyan.baidu.com/article/414eccf6011ff06b431f0aec.html

2.采用的是Sina App Engine来脱管服务,就要申请sae开发者权限。

再看这个链接http://jingyan.baidu.com/article/4f7d57129a60531a20192796.html

3.在sae上新建一个应用

我选择的php,PHP几乎免费。java应用的话,有点小贵了。

虽然没有学过PHP,摸着石头过河吧。

将php代码上传后,就有一个可调试的url了,PHP代码后面上。

4.再在微信公众平台中的开发者中心(这个要经过一段时间的审核),填入一下内容即可

5.然后就是对接数据了,为了测试,我对接的是图灵机器人的数据、12306和百度地图API

12306是为了查余票和车次,百度地图API是为了查天气预报、图灵机器人见链接:http://www.tuling123.com/openapi/

php代码如下,本人不是搞PHP的,因此只能在网上拷贝了,如有复制,纯属巧合。

<?php        define("TOKEN", "weixin");    session_start();    Session_Register("kw");    $wechatObj = new wechatCallbackapiTest();    require_once("train.php");    $tqTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>5</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml> ";    if (!isset($_GET['echostr'])) {        $wechatObj->responseMsg();    }else{        $wechatObj->valid();    }    class wechatCallbackapiTest    {        //验证签名        public function valid()        {            $echoStr = $_GET["echostr"];            $signature = $_GET["signature"];            $timestamp = $_GET["timestamp"];            $nonce = $_GET["nonce"];            $token = TOKEN;            $tmpArr = array($token, $timestamp, $nonce);            sort($tmpArr);            $tmpStr = implode($tmpArr);            $tmpStr = sha1($tmpStr);            if($tmpStr == $signature){                echo $echoStr;                exit;            }        }        //响应消息        public function responseMsg()        {            $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];            if (!empty($postStr)){                $this->logger("R ".$postStr);                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                $RX_TYPE = trim($postObj->MsgType);                                 //消息类型分离                switch ($RX_TYPE)                {                    case "event":                        $result = $this->receiveEvent($postObj);                        break;                    case "text":                        $result = $this->receiveTulingText($postObj);                        break;                    case "image":                        $result = $this->receiveImage($postObj);                        break;                    case "location":                        $result = $this->receiveLocation($postObj);                        break;                    case "voice":                        $result = $this->receiveVoice($postObj);                        break;                    case "video":                        $result = $this->receiveVideo($postObj);                        break;                    case "link":                        $result = $this->receiveLink($postObj);                        break;                    default:                        $result = "unknown msg type: ".$RX_TYPE;                        break;                }                $this->logger("T ".$result);                echo $result;            }else {                echo "";                exit;            }        }        //接收事件消息        PRivate function receiveEvent($object)        {            $content = "";            switch ($object->Event)            {                case "subscribe":                    $content = "欢迎关注TomSnail ";                    $content .= (!empty($object->EventKey))?("\n来自二维码场景 ".str_replace("qrscene_","",$object->EventKey)):"";                    break;                case "unsubscribe":                    $content = "取消关注";                    break;                case "SCAN":                    $content = "扫描场景 ".$object->EventKey;                    break;                case "CLICK":                    switch ($object->EventKey)                    {                        case "COMPANY":                            $content = array();                            $content[] = array("Title"=>"多图文1标题", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");                            break;                        default:                            $content = "点击菜单:".$object->EventKey;                            break;                    }                    break;                case "LOCATION":                    $content = "上传位置:纬度 ".$object->Latitude.";经度 ".$object->Longitude;                    break;                case "VIEW":                    $content = "跳转链接 ".$object->EventKey;                    break;                case "MASSSENDJOBFINISH":                    $content = "消息ID:".$object->MsgID.",结果:".$object->Status.",粉丝数:".$object->TotalCount.",过滤:".$object->FilterCount.",发送成功:".$object->SentCount.",发送失败:".$object->ErrorCount;                    break;                default:                    $content = "receive a new event: ".$object->Event;                    break;            }            if(is_array($content)){                if (isset($content[0])){                    $result = $this->transmitNews($object, $content);                }else if (isset($content['MusicUrl'])){                    $result = $this->transmitMusic($object, $content);                }            }else{                $result = $this->transmitText($object, $content);            }            return $result;        }        private function receiveTulingText($object){            try{                $keyWord = trim($object->Content);                $userid = trim($object->FromUserName);                $apiKey = "*******************************";                 $apiURL = "http://www.tuling123.com/openapi/api?key=".$apiKey."&info=".$keyword."&user