微信邀请卡的开发

  1 <?php
  2 /**
  3   * wechat php test
  4   */
  5 
  6 //define your token
  7 define("TOKEN", "weixin");
  8 $wechatObj = new wechatCallbackapiTest();
  9 //验证服务器和公众平台是否连接成功
 10 //在服务器和公众平台验证成功之后,把$wechatObj->valid()注释掉
 11 // $wechatObj->valid();
 12 echo $wechatObj->responseMsg();
 13 
 14 class wechatCallbackapiTest
 15 {
 16     public function valid()
 17     {
 18         $echoStr = $_GET["echostr"];
 19 
 20         //valid signature , option
 21         if($this->checkSignature()){
 22             echo $echoStr;
 23             exit;
 24         }
 25     }
 26     //输出公众平台返回给用户的信息
 27     public function responseMsg()
 28     {
 29         //get post data, May be due to the different environments
 30         //相当于$_POST
 31         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 32 
 33           //extract post data
 34         if (!empty($postStr)){
 35                 /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
 36                    the best way is to check the validity of xml by yourself */
 37                 //只解析XML数据的主体部分,防止xxe攻击
 38                 libxml_disable_entity_loader(true);
 39                 //解析XML数据
 40                   $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
 41                 //获取手机用户的OPenID
 42                 $fromUsername = $postObj->FromUserName;
 43                 //开发者微信号
 44                 $toUsername = $postObj->ToUserName;
 45                 //发送文本信息的关键字
 46                 $keyword = trim($postObj->Content);
 47                 //发送消息的类型
 48                 $type = $postObj->MsgType;
 49 
 50                 $time = time();
 51                 //发送文本信息的字符串模板
 52                 $textTpl = "<xml>
 53         <ToUserName><![CDATA[%s]]></ToUserName>
 54         <FromUserName><![CDATA[%s]]></FromUserName>
 55         <CreateTime>%s</CreateTime>
 56         <MsgType><![CDATA[%s]]></MsgType>
 57         <Content><![CDATA[%s]]></Content>
 58         <FuncFlag>0</FuncFlag>
 59         </xml>";
 60                 //音乐消息的模板
 61                 $musicTpl = "<xml>
 62         <ToUserName><![CDATA[%s]]></ToUserName>
 63         <FromUserName><![CDATA[%s]]></FromUserName>
 64         <CreateTime>%s</CreateTime>
 65         <MsgType><![CDATA[%s]]></MsgType>
 66         <Music>
 67         <Title><![CDATA[%s]]></Title>
 68         <Description><![CDATA[%s]]></Description>
 69         <MusicUrl><![CDATA[%s]]></MusicUrl>
 70         <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
 71         
 72         </Music>
 73         </xml>";
 74                 //发送图文消息
 75                 $newsTpl="<xml>
 76         <ToUserName><![CDATA[%s]]></ToUserName>
 77         <FromUserName><![CDATA[%s]]></FromUserName>
 78         <CreateTime>%s</CreateTime>
 79         <MsgType><![CDATA[%s]]></MsgType>
 80         <ArticleCount>%s</ArticleCount>
 81         <Articles>
 82         %s
 83         </Articles>
 84         </xml> ";       
 85                 if($type == ‘text‘){
 86 if(!empty( $keyword ))
 87 {
 88     // if($keyword == ‘音乐‘){
 89     //     $msgType = "music";
 90     //     $title   = "See You Again";
 91     //     $description=‘速度与激情7 原声大碟‘;
 92     //     $music_url=‘http://www.yyzljg.com/wechat/music.mp3‘;
 93     //     $high_url=‘http://www.yyzljg.com/wechat/music.mp3‘;
 94     //     //格式化字符串
 95     //     $resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType,$title,$description,$music_url,$high_url);
 96     //     echo $resultStr;
 97     // }
 98     if($keyword==‘音乐‘){
 99             $msgType=‘music‘;
100             $title=‘冰雪奇缘主题曲‘;
101             $description=‘原声大碟‘;
102             $music_url=‘http://www.yyzljg.com/wechat/music.mp3‘;
103             $high_url=‘http://www.yyzljg.com/wechat/music.mp3‘;
104             //格式化字符串
105             $resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType,$title,$description,$music_url,$high_url);
106             echo $resultStr;
107     }
108     if($keyword == ‘单图文‘){
109         $msgType=‘news‘;
110         $counts=1;
111         $contentStr="<item>
112         <Title><![CDATA[大家一起学习微信开发]]></Title>
113         <Description><![CDATA[愿每天的你都是开心的!]]></Description>
114         <PicUrl><![CDATA[http://ibeliveone.applinzi.com/1.jpg]]></PicUrl>
115         <Url><![CDATA[http://ibeliveone.applinzi.com/1.jpg]]></Url>
116         </item>";
117 
118         //格式化字符串
119         $resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, $msgType,$counts,$contentStr);
120         echo $resultStr;
121     }
122     if($keyword == ‘多图文‘){
123         $msgType=‘news‘;
124         $counts=4;
125         $contentStr=‘‘;
126         for($i=1;$i<=4;$i++){
127             $contentStr.="<item>
128             <Title><![CDATA[大家一起学习微信开发]]></Title>
129             <Description><![CDATA[愿每天的你都是开心的!]]></Description>
130             <PicUrl><![CDATA[http://ibeliveone.applinzi.com/{$i}.jpg]]></PicUrl>
131             <Url><![CDATA[http://ibeliveone.applinzi.com/{$i}.jpg]]></Url>
132             </item>";
133         }
134         //格式化字符串
135         $resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, $msgType,$counts,$contentStr);
136         echo $resultStr;
137     } 
138     
139     //定义发送消息的类型
140     $msgType = "text";
141     //公众平台发送给用户的信息
142     $contentStr = "欢迎关注我的微信公众平台!";
143     //格式化字符串 
144     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
145     echo $resultStr;die;               
146 
147 
148 }else{
149     echo "Input something...";
150 }
151                 }elseif($type == ‘image‘){
152 //定义发送消息的类型
153 $msgType = "text";
154 //公众平台发送给用户的信息
155 $contentStr = "客官,您发送的美女好漂亮啊!";
156 //格式化字符串 
157 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
158 echo $resultStr; 
159 die;  
160                 }elseif($type == ‘voice‘){
161 //定义发送消息的类型
162 $msgType = "text";
163 //公众平台发送给用户的信息
164 $contentStr = "客官,您的声音好动听啊!";
165 //格式化字符串 
166 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
167 echo $resultStr;
168 die;
169                 }elseif($type == ‘video‘){
170 //定义发送消息的类型
171 $msgType = "text";
172 //公众平台发送给用户的信息
173 $contentStr = "客官,您分享的片片不是高清滴呦!";
174 //格式化字符串 
175 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
176 echo $resultStr;
177 die;
178                 }else{
179 //定义发送消息的类型
180 $msgType = "text";
181 //公众平台发送给用户的信息
182 $contentStr = "客官,我书读的少,不知道你想要什么服务,回复关键字有惊喜:‘音乐‘,‘单图文‘,‘多图文‘";
183 //格式化字符串 
184 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
185 echo $resultStr;
186 die;
187                 }  
188                 
189 
190         }else {
191             echo "客官,我书读的少,不知道你想要什么服务,回复关键字有惊喜:‘音乐‘,‘单图文‘,‘多图文‘";
192             exit;
193         }
194     }
195         
196     private function checkSignature()
197     {
198         // you must define TOKEN by yourself
199         if (!defined("TOKEN")) {
200             throw new Exception(‘TOKEN is not defined!‘);
201         }
202         
203         $signature = $_GET["signature"];
204         $timestamp = $_GET["timestamp"];
205         $nonce = $_GET["nonce"];
206                 
207         $token = TOKEN;
208         $tmpArr = array($token, $timestamp, $nonce);
209         // use SORT_STRING rule
210         sort($tmpArr, SORT_STRING);
211         $tmpStr = implode( $tmpArr );
212         $tmpStr = sha1( $tmpStr );
213         
214         if( $tmpStr == $signature ){
215             return true;
216         }else{
217             return false;
218         }
219     }
220 }
221 
222 ?>

 

微信邀请卡的开发

原文:http://www.cnblogs.com/CHEUNGKAMING/p/5809126.html

以上是微信邀请卡的开发的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>