PHP微信API接口类
本文实例为大家分享了PHP微信接口类,供大家参考,具体内容如下
<?php /** *wechatphptest */ //defineyourtoken //定义TOKEN秘钥 define("TOKEN","weixin"); //实例化微信对象 $wechatObj=newwechatCallbackapiTest(); //验证成功后注释valid方法 //$wechatObj->valid(); //开启自动回复功能 $wechatObj->responseMsg(); //定义类文件 classwechatCallbackapiTest { //实现valid验证方法:实现对接微信公众平台 publicfunctionvalid() { //接受随机字符串 $echoStr=$_GET["echostr"]; //validsignature,option //进行用户数字签名验证 if($this->checkSignature()){ //如果成功,则返回接受到的随机字符串 echo$echoStr; //退出 exit; } } //定义自动回复功能 publicfunctionresponseMsg() { //getpostdata,Maybeduetothedifferentenvironments //接受用户端发送过来的xml数据 $postStr=$GLOBALS["HTTP_RAW_POST_DATA"]; //extractpostdata //判断xml数据是否为空 if(!empty($postStr)){ /*libxml_disable_entity_loaderistopreventXMLeXternalEntityInjection, thebestwayistocheckthevalidityofxmlbyyourself*/ libxml_disable_entity_loader(true); //通过simplexml进行xml解析 $postObj=simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); //接受微信的手机端 $fromUsername=$postObj->FromUserName; //微信公众平台 $toUsername=$postObj->ToUserName; //接受用户发送的关键词 $keyword=trim($postObj->Content); //1.接受用户消息类型 $msgType=$postObj->MsgType; //时间戳 $time=time(); //文本发送模板 $textTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>"; ////////////////////////////////////////////////////////////////////////////////// //如果用户发送的是文本类型文件,执行以下 if($msgType=='text'){ if(!empty($keyword)) { /*这是一个实例 //如果发送文本信息 $msgType="text"; //回复内容 if($keyword=="李楠"){ $contentStr="叫我干嘛"; }else{ $contentStr="叫我干嘛"; } //格式化xml模板,参数与上面的模板是一一对应的.fromUsername和头Username是相反的,只写带%s的 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; */ if($keyword=="?"||$keyword=="?"){ $msgType="text"; $contentStr="1.特种服务号码\n2.通讯服务号码"; $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo$resultStr; }elseif($keyword==1){ $msgType="text"; $contentStr="1.匪警:110\n2.火警:119\n3.急救:120"; $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo$resultStr; }elseif($keyword==2){ $msgType="text"; $contentStr="1.中国移动:10086\n2.中国联通:10010"; $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo$resultStr; } }else{ echo"不能不说话"; } } //////////////////////////////////////////////////////////////////////////////////// //接受图片信息 if($msgType=="image"){ //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="你发送的是图片文件"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; } //////////////////////////////////////////////////////////////////////////////////// if($msgType=="voice"){ //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="你发送的是语音文件"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; } //////////////////////////////////////////////////////////////////////////////////// if($msgType=="video"){ //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="你发送的是视频文件"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; } //////////////////////////////////////////////////////////////////////////////////// if($msgType=="shortvideo"){ //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="你发送的是小视频文件"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; } //////////////////////////////////////////////////////////////////////////////////// if($msgType=="location"){ //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="你发送的是地理位置文件"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; } //////////////////////////////////////////////////////////////////////////////////// if($msgType=="link"){ //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="你发送的是连接文件"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; } //////////////////////////////////////////////////////////////////////////////////// /* //判断用户发送关键词是否为空 if(!empty($keyword)) { //如果发送文本信息 $msgType="text"; //回复内容 $contentStr="大家好,我是hero"; //格式化字符串 $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); //将xml信息返回给客户端 echo$resultStr; }else{ echo"Inputsomething..."; } */ }else{ echo""; exit; } } privatefunctioncheckSignature() { //youmustdefineTOKENbyyourself //判断是否定义了TOKEN,如果没有就抛出一个异常 if(!defined("TOKEN")){ thrownewException('TOKENisnotdefined!'); } $signature=$_GET["signature"];//接受微信加密签名 $timestamp=$_GET["timestamp"];//接受时间戳 $nonce=$_GET["nonce"];//接受随机数 $token=TOKEN;//把TOKEN常量赋值给$token //把相关参数组装成数组 $tmpArr=array($token,$timestamp,$nonce); //useSORT_STRINGrule //排序 sort($tmpArr,SORT_STRING); //把排序后的数组转换成字符串 $tmpStr=implode($tmpArr); //通过哈希算法加密 $tmpStr=sha1($tmpStr); //与加密签名进行对比 if($tmpStr==$signature){ //相同返回true returntrue; }else{ //不同返回false returnfalse; } } } ?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。