国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP微信API接口類

2024-05-04 23:49:17
字體:
供稿:網(wǎng)友

本文實例為大家分享了PHP微信接口類,供大家參考,具體內(nèi)容如下

<?php/** * wechat php test */ //define your token//定義TOKEN秘鑰define("TOKEN", "weixin"); //實例化微信對象$wechatObj = new wechatCallbackapiTest();//驗證成功后注釋valid方法//$wechatObj->valid();//開啟自動回復功能$wechatObj->responseMsg();  //定義類文件class wechatCallbackapiTest{  //實現(xiàn)valid驗證方法:實現(xiàn)對接微信公眾平臺  public function valid()  {    //接受隨機字符串    $echoStr = $_GET["echostr"];     //valid signature , option    //進行用戶數(shù)字簽名驗證    if($this->checkSignature()){      //如果成功,則返回接受到的隨機字符串      echo $echoStr;      //退出      exit;    }  }  //定義自動回復功能  public function responseMsg()  {    //get post data, May be due to the different environments    //接受用戶端發(fā)送過來的xml數(shù)據(jù)    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];     //extract post data    //判斷xml數(shù)據(jù)是否為空    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;        //接受用戶發(fā)送的關(guān)鍵詞        $keyword = trim($postObj->Content);        //1.接受用戶消息類型        $msgType = $postObj -> MsgType;        //時間戳        $time = time();        //文本發(fā)送模板        $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>";         //////////////////////////////////////////////////////////////////////////////////        //如果用戶發(fā)送的是文本類型文件,執(zhí)行以下        if($msgType == 'text'){          if(!empty( $keyword ))          {            /*這是一個實例              //如果發(fā)送文本信息              $msgType = "text";              //回復內(nèi)容              if($keyword == "李楠"){                $contentStr = "叫我干嘛";              }else{                $contentStr = "叫我干嘛";              }              //格式化xml模板,參數(shù)與上面的模板是一一對應(yīng)的.fromUsername和頭Username是相反的,只寫帶%s的              $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);               //將xml信息返回給客戶端              echo $resultStr;            */            if($keyword == "?" || $keyword == "?"){              $msgType = "text";              $contentStr = "1.特種服務(wù)號碼/n2.通訊服務(wù)號碼";              $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.中國聯(lián)通:10010";              $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);              echo $resultStr;            }          }else{            echo "不能不說話";          }        }        ////////////////////////////////////////////////////////////////////////////////////        //接受圖片信息        if($msgType == "image"){            //如果發(fā)送文本信息            $msgType = "text";            //回復內(nèi)容            $contentStr = "你發(fā)送的是圖片文件";            //格式化字符串            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            //將xml信息返回給客戶端            echo $resultStr;        }        ////////////////////////////////////////////////////////////////////////////////////        if($msgType == "voice"){            //如果發(fā)送文本信息            $msgType = "text";            //回復內(nèi)容            $contentStr = "你發(fā)送的是語音文件";            //格式化字符串            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            //將xml信息返回給客戶端            echo $resultStr;        }        ////////////////////////////////////////////////////////////////////////////////////        if($msgType == "video"){            //如果發(fā)送文本信息            $msgType = "text";            //回復內(nèi)容            $contentStr = "你發(fā)送的是視頻文件";            //格式化字符串            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            //將xml信息返回給客戶端            echo $resultStr;        }        ////////////////////////////////////////////////////////////////////////////////////        if($msgType == "shortvideo"){            //如果發(fā)送文本信息            $msgType = "text";            //回復內(nèi)容            $contentStr = "你發(fā)送的是小視頻文件";            //格式化字符串            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            //將xml信息返回給客戶端            echo $resultStr;        }        ////////////////////////////////////////////////////////////////////////////////////        if($msgType == "location"){            //如果發(fā)送文本信息            $msgType = "text";            //回復內(nèi)容            $contentStr = "你發(fā)送的是地理位置文件";            //格式化字符串            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            //將xml信息返回給客戶端            echo $resultStr;        }        ////////////////////////////////////////////////////////////////////////////////////        if($msgType == "link"){            //如果發(fā)送文本信息            $msgType = "text";            //回復內(nèi)容            $contentStr = "你發(fā)送的是連接文件";            //格式化字符串            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            //將xml信息返回給客戶端            echo $resultStr;        }        ////////////////////////////////////////////////////////////////////////////////////        /*        //判斷用戶發(fā)送關(guān)鍵詞是否為空                       if(!empty( $keyword ))        {          //如果發(fā)送文本信息          $msgType = "text";          //回復內(nèi)容          $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"];//接受隨機數(shù)             $token = TOKEN;//把TOKEN常量賦值給$token    //把相關(guān)參數(shù)組裝成數(shù)組    $tmpArr = array($token, $timestamp, $nonce);    // use SORT_STRING rule    //排序    sort($tmpArr, SORT_STRING);    //把排序后的數(shù)組轉(zhuǎn)換成字符串    $tmpStr = implode( $tmpArr );    //通過哈希算法加密    $tmpStr = sha1( $tmpStr );    //與加密簽名進行對比    if( $tmpStr == $signature ){      //相同返回true      return true;    }else{      //不同返回false      return false;    }  }} ?>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 塔城市| 衡山县| 托克逊县| 昭觉县| 株洲市| 铜鼓县| 新巴尔虎左旗| 沽源县| 龙口市| 云阳县| 呼图壁县| 东乌珠穆沁旗| 安西县| 浦东新区| 宁安市| 朝阳县| 昌黎县| 梓潼县| 宁陵县| 安福县| 伊吾县| 诸暨市| 呼图壁县| 陆良县| 酒泉市| 巴里| 积石山| 南乐县| 武胜县| 贵德县| 宣城市| 西林县| 永昌县| 绍兴县| 丰县| 陆良县| 仲巴县| 铅山县| 本溪| 长岭县| 万安县|