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

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.?>  


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值