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

微信公众平台 开放平台 自定义回复和事件推送代码

2013-06-16 02:02 381 查看
01.<?php
02.
03./**
04.  * wechat php test
05.  */
06.
07.//define your token
08.define("TOKEN", "<span style="color: rgb(255, 0, 0);">xxxxx</span>");
09.$wechatObj = new wechatCallbackapiTest();
10.$wechatObj->responseMsg();
11.
12.class wechatCallbackapiTest {
13.    public function valid() {
14.        $echoStr = $_GET["echostr"];
15.
16.        //valid signature , option
17.        if ($this->checkSignature()) {
18.            echo $echoStr;
19.            exit;
20.        }
21.    }
22.
23.    public function responseMsg() {
24.        //get post data, May be due to the different environments
25.        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
26.
27.        //extract post data
28.        if (!empty ($postStr)) {
29.
30.            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
31.            $fromUsername = $postObj->FromUserName;
32.            $toUsername = $postObj->ToUserName;
33.            $keyword = trim($postObj->Content);
34.            $Event = trim($postObj->Event);
35.            $time = time();
36.            $textTpl = "<xml>
37.                        <ToUserName><![CDATA[%s]]></ToUserName>
38.                        <FromUserName><![CDATA[%s]]></FromUserName>
39.                        <CreateTime>%s</CreateTime>
40.                        <MsgType><![CDATA[%s]]></MsgType>
41.                        <Content><![CDATA[%s]]></Content>
42.                        <FuncFlag>0</FuncFlag>
43.                        </xml>";
44.            //测试事件推送
45.            if($Event=="subscribe"){
46.                $contentStr = "欢迎订阅果晶晶网络科技有限公司公众平台!";
47.                $msgType = "text";
48.                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
49.                echo $resultStr;
50.            }
51.            //test
52.            if($keyword==1){//文本
53.                $contentStr = $keyword . "测试发送文本!";
54.                $msgType = "text";
55.                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
56.                echo $resultStr;
57.            }else if($keyword==2){//音乐
58.                $textTpl="<xml>
59.                         <ToUserName><![CDATA[%s]]></ToUserName>
60.                         <FromUserName><![CDATA[%s]]></FromUserName>
61.                         <CreateTime>%s</CreateTime>
62.                         <MsgType><![CDATA[%s]]></MsgType>
63.                         <Music>
64.                         <Title><![CDATA[%s]]></Title>
65.                         <Description><![CDATA[%s]]></Description>
66.                         <MusicUrl><![CDATA[%s]]></MusicUrl>
67.                         <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
68.                         </Music>
69.                         <FuncFlag>0</FuncFlag>
70.                         </xml>";
71.
72.                $msgType = "music";
73.                $msgtitle="致青春";
74.                $Description="电影《致我们终将逝去的青春》 主题曲";
75.                $MusicUrl="http://music.baidu.com/song/40153340#";
76.                $HQMusicUrl="http://music.baidu.com/song/40153340#";
77.                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $msgtitle,$Description,$MusicUrl,$HQMusicUrl);
78.                echo $resultStr;
79.            }else if($keyword==3){//图文
80.                $textTpl="<xml>
81.                         <ToUserName><![CDATA[%s]]></ToUserName>
82.                         <FromUserName><![CDATA[%s]]></FromUserName>
83.                         <CreateTime>%s</CreateTime>
84.                         <MsgType><![CDATA[%s]]></MsgType>
85.                         <ArticleCount>1</ArticleCount>
86.                         <Articles>
87.                         <item>
88.                         <Title><![CDATA[%s]]></Title>
89.                         <Description><![CDATA[%s]]></Description>
90.                         <PicUrl><![CDATA[%s]]></PicUrl>
91.                         <Url><![CDATA[%s]]></Url>
92.                         </item>
93.                         </Articles>
94.                         <FuncFlag>1</FuncFlag>
95.                         </xml> ";
96.
97.                $msgType = "news";
98.                $title1="致青春";
99.                $Description="电影《致我们终将逝去的青春》 主题曲";
100.                $PicUrl="http://img10.360buyimg.com/da/g13/M05/01/02/rBEhU1G6iA8IAAAAAADmPyFSPhUAAANiwAxLNcAAOZX575.jpg";
101.                $Url="http://sale.jd.com/act/qYHkylDS0LVOg.html?sid=2&cid=601&aid=3678&bid=661&unit=36617&advid=60724&guv=";
102.                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $title1,$Description,$PicUrl,$Url);
103.                echo $resultStr;
104.            }
105.            //
106.            if (!empty ($keyword)) {
107.
108.                $contentStr = $keyword . "Welcome to wechat world!";
109.
110.                $msgType = "text";
111.
112.                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
113.                echo $resultStr;
114.            } else {
115.                echo "Input something...";
116.            }
117.
118.        } else {
119.            echo "";
120.            exit;
121.        }
122.    }
123.
124.    private function checkSignature() {
125.        $signature = $_GET["signature"];
126.        $timestamp = $_GET["timestamp"];
127.        $nonce = $_GET["nonce"];
128.
129.        $token = TOKEN;
130.        $tmpArr = array (
131.            $token,
132.            $timestamp,
133.            $nonce
134.        );
135.        sort($tmpArr);
136.        $tmpStr = implode($tmpArr);
137.        $tmpStr = sha1($tmpStr);
138.
139.        if ($tmpStr == $signature) {
140.            return true;
141.        } else {
142.            return false;
143.        }
144.    }
145.}
146.?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: