您好,登錄后才能下訂單哦!
<?php /** * wechat php test */ //define your token //定義TOKEN密鑰(主要為了橋接微信服務器和自定義服務器) //"weinxin"可以自己取名,比如取名為weixinabc define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); //調用valid方法,主要用于微信驗證。 //(第一步驗證)驗證完成后,記得加上//進行注銷valid()方法。 //$wechatObj->valid(); //(第二步啟動回復功能) $wechatObj->responseMsg(); //wechatCallbackapiTest類,主要用于微信開發驗證與回復 class wechatCallbackapiTest { //定義驗證方法 public function valid() { //echostr隨機字符串,接收隨機字符串 $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 //$GLOBALS可以接受xml數據. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data 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 */ //安全處理,解析xml時不解析外部實體,防止文件產生泄露(xxe泄露) libxml_disable_entity_loader(true); //載入xml文件到字符串 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //發送者(手機客戶端) $fromUsername = $postObj->FromUserName; //接受者(微信公眾號) $toUsername = $postObj->ToUserName; //定義一個接受類型 $msgType=$postObj->MsgType; //接受到的關鍵詞 $keyword = trim($postObj->Content); //時間戳 $time = time(); //文本消息xml模板 $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(!empty( $keyword )) { $msgType = "text"; $contentStr = "歡迎來到崎沙火山島旅游信息平臺"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); 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; //把$token,$timestamp,$nonce組成數組 $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule //字典法排序 sort($tmpArr, SORT_STRING); //轉換數組為字符串 $tmpStr = implode( $tmpArr ); //通過哈希算法進行加密 $tmpStr = sha1( $tmpStr ); //與發送過來的數字簽名$signature進行比對,成功則返回ture,否則返回false! if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。