<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 簡介 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543 ![](https://box.kancloud.cn/cbe30845abbdd53f0643a2bcf427dad5_739x476.png) ![](https://box.kancloud.cn/e1c4b7c5edc65d04877a1c97798a3930_1161x374.png) 當用戶發送消息給公眾號時或某些特定的用戶操作引發的事件推送時,會產生一個POST請求,開發者可以在返回特定XML結構,來對該消息進行響應。 現支持回復類型有: 文本、圖片、圖文、語音、視頻、音樂 嚴格來說:發送被動響應消息其實并不是一種接口,而是對微信服務器發過來消息的一次回復(響應)。 回復的時候按照下面的xml格式回復用戶 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543 # 回復用戶文本 用戶發文本給你,你回文本給用戶 ~~~ /** * 接收公眾號發過來的數據 * @return [type] [description] */ private function acceptMsg() { // 獲取原生請求數據 $xml = file_get_contents('php://input'); # 把xml轉換為object對象來處理 $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); // 寫接受日志 $this->writeLog($xml); // 處理回復消息 // 1、判斷消息類型 // 2、根據不同的類型,回復處理不同信息 // 判斷類型 $MsgType = $obj->MsgType; switch ($MsgType) { case 'text': $str = '<xml> <ToUserName><![CDATA[%s]]> </ToUserName> <FromUserName><![CDATA[%s]]> </FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]> </MsgType> <Content><![CDATA[%s]]> </Content> </xml>'; // 格式化替換輸出,發什么就回復什么 $str = sprintf($str, $obj->FromUserName, $obj->ToUserName, time(), '公眾號:' . $obj->Content); // 寫日志 $this->writeLog($str, 2); echo $str; break; } } ~~~ # 回復各種消息 ~~~ <?php $wx = new Wx(); class Wx { // 微信后臺設置的token值 php7.1之后可以加權限 private const TOKEN = 'jdxia'; // 構造方法 public function __construct() { // 判斷是否是第1次接入 echostr if ( !empty($_GET['echostr'])) { echo $this->checkSign(); } else { // 接受處理數據 $this->acceptMsg(); } } /** * 初次接入校驗 * @return [type] [description] */ private function checkSign() { // 得到微信公眾號發過來的數據 $input = $_GET; // 把echostr放在臨時變量中 $echostr = $input['echostr']; $signature = $input['signature']; // 在數組中刪除掉 unset($input['echostr'], $input['signature']); // 在數據中添加一個字段token $input['token'] = self::TOKEN; // 進行字典排序 $tmpStr = implode($input); // 進行加密操作 $tmpStr = sha1($tmpStr); // 進行比對 if ($tmpStr === $signature) { return $echostr; } return ''; } /** * 接收公眾號發過來的數據 * @return [type] [description] */ private function acceptMsg() { // 獲取原生請求數據 $xml = file_get_contents('php://input'); # 把xml轉換為object對象來處理 $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); // 寫接受日志 $this->writeLog($xml); // 處理回復消息 // 1、判斷消息類型 // 2、根據不同的類型,回復處理不同信息 // 判斷類型 $MsgType = $obj->MsgType; // switch ($MsgType) { // case 'text': // $str = '<xml> // <ToUserName><![CDATA[%s]]> // </ToUserName> // <FromUserName><![CDATA[%s]]> // </FromUserName> // <CreateTime>%s</CreateTime> // <MsgType><![CDATA[text]]> // </MsgType> // <Content><![CDATA[%s]]> // </Content> // </xml>'; // // 格式化替換輸出,發什么就回復什么 // $str = sprintf($str, $obj->FromUserName, $obj->ToUserName, time(), '公眾號:' . $obj->Content); // // 寫日志 // $this->writeLog($str, 2); // echo $str; // break; // } $fun = $MsgType.'Fun'; // 調用方法 //echo $ret = $this->$fun($obj); echo $ret = call_user_func([$this,$fun],$obj); // 寫發送日志 $this->writeLog($ret,2); } // 處理回復文本 private function textFun($obj){ $content = $obj->Content; // 回復文本 if('音樂' == $content){ return $this->musicFun($obj); } $content = '公眾號:'.$content; return $this->createText($obj,$content); } // 回復圖片消息 private function imageFun($obj){ $mediaid = $obj->MediaId; return $this->createImage($obj,$mediaid); } // 回復音樂 private function musicFun($obj){ // 圖片媒體ID $mediaid = '1QgKrdNTGOexznSBvGTiN7DTN3rPm1is0UhZ1Axfq7dBtMIf2zFL-MQH6Wb95DXc'; // 音樂播放地址 $url = 'https://wx.1314000.cn/mp3/ykz.mp3'; return $this->createMusic($obj,$url,$mediaid); } // 生成文本消息XML private function createText($obj,string $content){ $xml = '<xml> <ToUserName><![CDATA[%s]]> </ToUserName> <FromUserName><![CDATA[%s]]> </FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]> </MsgType> <Content><![CDATA[%s]]> </Content> </xml>'; // 格式化替換輸出 $str = sprintf($xml,$obj->FromUserName,$obj->ToUserName,time(),$content); return $str; } // 生成圖片消息xml private function createImage($obj,string $mediaid){ $xml = '<xml> <ToUserName><![CDATA[%s]]> </ToUserName> <FromUserName><![CDATA[%s]]> </FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[image]]> </MsgType> <Image> <MediaId><![CDATA[%s]]> </MediaId> </Image> </xml>'; // 格式化替換輸出 $str = sprintf($xml,$obj->FromUserName,$obj->ToUserName,time(),$mediaid); return $str; } // 生成音樂XML消息 private function createMusic($obj,string $url,string $mediaid){ $xml = '<xml> <ToUserName><![CDATA[%s]]> </ToUserName> <FromUserName><![CDATA[%s]]> </FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[music]]> </MsgType> <Music> <Title><![CDATA[夜空中最亮的星]]> </Title> <Description><![CDATA[一首非常好的歌]]> </Description> <MusicUrl><![CDATA[%s]]> </MusicUrl> <HQMusicUrl><![CDATA[%s]]> </HQMusicUrl> <ThumbMediaId><![CDATA[%s]]> </ThumbMediaId> </Music> </xml>'; // 格式化替換輸出 $str = sprintf($xml,$obj->FromUserName,$obj->ToUserName,time(),$url,$url,$mediaid); return $str; } /** * 把微信傳給你的,寫入日志 * @param string $xml 寫入的xml * @param int|integer $flag 標識 1:請求 2:發送 * @return [type] [description] */ private function writeLog(string $xml, int $flag = 1) { $flagstr = $flag == 1 ? '接受' : '發送'; $prevstr = '【' . $flagstr . '】' . date('Y-m-d') . "-----------------------------\n"; $log = $prevstr . $xml . "\n---------------------------------------------\n"; // 寫日志 追加的形式去寫入 file_put_contents('wx.xml', $log, FILE_APPEND); return true; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看