首页 > 代码库 > 微信邀请卡的开发

微信邀请卡的开发

  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 yourself199         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 rule210         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 ?>

 

微信邀请卡的开发