虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > PHP编程 > PHP微信API接口类

PHP微信API接口类
类别:PHP编程   作者:码皇   来源:互联网   点击:

很全面详细的PHP微信API接口类,帮助大家更好的进行php微信开发,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了PHP微信接口类,供大家参考,具体内容如下

    <?php/** * wechat php test */ //define your token//定义TOKEN秘钥define("TOKEN", "weixin");
    //实例化微信对象$wechatObj = new wechatCallbackapiTest();
    //验证成功后注释valid方法//$wechatObj->valid();
    //开启自动回复功能$wechatObj->responseMsg();
    //定义类文件class wechatCallbackapiTest{
    //实现valid验证方法:实现对接微信公众平台 public function valid() {
    //接受随机字符串 $echoStr = $_GET["echostr"];
    //valid signature , option //进行用户数字签名验证 if($this->checkSignature()){
    //如果成功,则返回接受到的随机字符串 echo $echoStr;
    //退出 exit;
    }
    }
    //定义自动回复功能 public function responseMsg() {
    //get post data, May be due to the different environments //接受用户端发送过来的xml数据 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    //extract post data //判断xml数据是否为空 if (!empty($postStr)){
    /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ 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.匪警:110n2.火警:119n3.急救:120";
    $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
    echo $resultStr;
    }
    elseif($keyword == 2){
    $msgType = "text";
    $contentStr = "1.中国移动:10086n2.中国联通: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 "Input something...";
    }
    */ }
    else {
    echo "";
    exit;
    }
    }
    private function checkSignature() {
    // you must define TOKEN by yourself //判断是否定义了TOKEN,如果没有就抛出一个异常 if (!defined("TOKEN")) {
    throw new Exception('TOKEN is not defined!');
    }
    $signature = $_GET["signature"];
    //接受微信加密签名 $timestamp = $_GET["timestamp"];
    //接受时间戳 $nonce = $_GET["nonce"];
    //接受随机数 $token = TOKEN;
    //把TOKEN常量赋值给$token //把相关参数组装成数组 $tmpArr = array($token, $timestamp, $nonce);
    // use SORT_STRING rule //排序 sort($tmpArr, SORT_STRING);
    //把排序后的数组转换成字符串 $tmpStr = implode( $tmpArr );
    //通过哈希算法加密 $tmpStr = sha1( $tmpStr );
    //与加密签名进行对比 if( $tmpStr == $signature ){
    //相同返回true return true;
    }
    else{
    //不同返回false return false;
    }
    }
    }
    ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关热词搜索: php微信接口类 php微信API php微信接口