亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP對接微信公眾平臺消息接口開發流程詳解及實例

2020-03-22 18:40:11
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP對接微信公眾平臺消息接口開發流程,如何使用PHP版接口操作公眾平臺消息,需要的朋友可以參考下

一、寫好接口程序

在你的服務器上上傳好一個接口程序文件內容如下:

代碼如下:

<?phpdefine("TOKEN", "weixin");//自己定義的token 就是個通信的私鑰$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();//$wechatObj->responseMsg();html' target='_blank'>class wechatCallbackapiTest{    public function valid()    {        $echoStr = $_GET["echostr"];        if($this->checkSignature()){            echo $echoStr;            exit;        }    }    public function responseMsg()    {        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];        if (!empty($postStr)){            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);            $fromUsername = $postObj->FromUserName;            $toUsername = $postObj->ToUserName;            $keyword = trim($postObj->Content);            $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(!empty( $keyword ))            {                $msgType = "text";                $contentStr = '你好啊,屌絲';                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                echo $resultStr;            }else{                echo '咋不說哈呢';            }        }else {            echo '咋不說哈呢';            exit;        }    }    private function checkSignature()    {        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];        $token =TOKEN;        $tmpArr = array($token, $timestamp, $nonce);        sort($tmpArr);        $tmpStr = implode( $tmpArr );        $tmpStr = sha1( $tmpStr );        if( $tmpStr == $signature ){            return true;        }else{            return false;        }    }}?>

二、配置微信公眾平臺回復接口

設置回復接口,填好URL和Token(url填上面的http://www.yourdomain.com/weixin.php,token必須跟上面程序里面定義的Token一致)

PHP對接微信公眾平臺消息接口開發流程詳解及實例
三、驗證接口

用自己的個人微信關注下你的公眾賬號,給這個賬號發一條消息過去,收到原樣的消息返回,即驗證成功了。

四、開始自定義回復

注釋掉$wechatObj->valid(); 這行,同時去掉//$wechatObj->responseMsg();這行的注釋。
你可以修改responseMsg函數里面的代碼,根據用戶的消息類型('text','image','location')和消息內容來回復用戶不同的內容。
消息接口就可以使用了,發個消息試試看吧?

1.封裝weixin.class.php

由于微信公眾平臺的通信使用的是特定格式的XML數據,每次接受和回復都要去做一大堆的數據處理。
我們就考慮在這個基礎上做一次封裝,weixin.class.php,代碼如下:

代碼如下:

<?phpclass Weixin{    public $token = '';//token    public $debug =  false;//是否debug的狀態標示,方便我們在調試的時候記錄一些中間數據    public $setFlag = false;    public $msgtype = 'text';   //('text','image','location')    public $msg = array();    public function __construct($token,$debug)    {        $this->token = $token;        $this->debug = $debug;    }    //獲得用戶發過來的消息(消息內容和消息類型  )    public function getMsg()    {        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];        if ($this->debug) {                        $this->write_log($postStr);        }        if (!empty($postStr)) {            $this->msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);            $this->msgtype = strtolower($this->msg['MsgType']);        }    }  //回復文本消息    public function makeText($text='')    {        $CreateTime = time();        $FuncFlag = $this->setFlag ? 1 : 0;        $textTpl = "<xml>            <ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>            <FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>            <CreateTime>{$CreateTime}</CreateTime>            <MsgType><![CDATA            1              ]></MsgType>            <Content><![CDATA[%s]]></Content>            <FuncFlag>%s</FuncFlag>            </xml>";        return sprintf($textTpl,$text,$FuncFlag);    }    //根據數組參數回復圖文消息    public function makeNews($newsData=array())    {        $CreateTime = time();        $FuncFlag = $this->setFlag ? 1 : 0;        $newTplHeader = "<xml>            <ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName>            <FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName>            <CreateTime>{$CreateTime}</CreateTime>            <MsgType><![CDATA[news]]></MsgType>            <Content><![CDATA[%s]]></Content>            <ArticleCount>%s</ArticleCount><Articles>";        $newTplItem = "<item>            <Title><![CDATA[%s]]></Title>            <Description><![CDATA[%s]]></Description>            <PicUrl><![CDATA[%s]]></PicUrl>            <Url><![CDATA[%s]]></Url>            </item>";        $newTplFoot = "</Articles>            <FuncFlag>%s</FuncFlag>            </xml>";        $Content = '';        $itemsCount = count($newsData['items']);        $itemsCount = $itemsCount < 10 ? $itemsCount : 10;//微信公眾平臺圖文回復的消息一次最多10條        if ($itemsCount) {            foreach ($newsData['items'] as $key => $item) {                if ($key<=9) {                    $Content .= sprintf($newTplItem,$item['title'],$item['description'],$item['picurl'],$item['url']);                }            }        }        $header = sprintf($newTplHeader,$newsData['content'],$itemsCount);        $footer = sprintf($newTplFoot,$FuncFlag);        return $header . $Content . $footer;    }    public function reply($data)    {        if ($this->debug) {                    $this->write_log($data);        }        echo $data;    }    public function valid()    {        if ($this->checkSignature()) {            if( $_SERVER['REQUEST_METHOD']=='GET' )            {                echo $_GET['echostr'];                exit;            }        }else{            write_log('認證失敗');            exit;        }    }    private function checkSignature()    {        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];        $tmpArr = array($this->token, $timestamp, $nonce);        sort($tmpArr);        $tmpStr = implode( $tmpArr );        $tmpStr = sha1( $tmpStr );        if( $tmpStr == $signature ){            return true;        }else{            return false;        }    }    private function write_log($log){        //這里是你記錄調試信息的地方  請自行完善   以便中間調試    }}?>

2.調用weixin.class.php

把你的微信公眾平臺主接口文件中,修改代碼為:

代碼如下:

<?phpinclude_once('weixin.class.php');//引用剛定義的微信消息處理類define("TOKEN", "mmhelper");define('DEBUG', true);$weixin = new Weixin(TOKEN,DEBUG);//實例化$weixin->getMsg();$type = $weixin->msgtype;//消息類型$username = $weixin->msg['FromUserName'];//哪個用戶給你發的消息,這個$username是微信加密之后的,但是每個用戶都是一一對應的if ($type==='text') {    if ($weixin->msg['Content']=='Hello2BizUser') {//微信用戶第一次關注你的賬號的時候,你的公眾賬號就會受到一條內容為'Hello2BizUser'的消息        $reply = $weixin->makeText('歡迎你關注哦,屌絲');    }else{//這里就是用戶輸入了文本信息        $keyword = $weixin->msg['Content'];   //用戶的文本消息內容                include_once("chaxun.php");//文本消息 調用查詢程序                 $chaxun= new chaxun(DEBUG,$keyword,$username);                $results['items'] =$chaxun->search();//查詢的代碼                $reply = $weixin->makeNews($results);    }}elseif ($type==='location') {      //用戶發送的是位置信息  稍后的文章中會處理                 }elseif ($type==='image') {      //用戶發送的是圖片 稍后的文章中會處理}elseif ($type==='voice') {          //用戶發送的是聲音 稍后的文章中會處理}$weixin->reply($reply);?>

3.查詢代碼

還需要將數據庫里面的查詢結果格式化為特定的形式

代碼如下:

<?phppublic function search(){       $record=array();  //定義返回結果的數組       $list = $this->search($this->keyword);//普通的根據關鍵詞查詢數據庫的操作  代碼就不用分享了    if(is_array($list)&&!empty($list)){                               foreach($list as $msg){            $record[]=array(//以下代碼,將數據庫中查詢返回的數組格式化為微信返回消息能接收的數組形式,即title、description、picurl、url 詳見微信官方的文檔描述                        'title' =>$msg['title'],                        'description' =>$msg['discription'],                        'picurl' => $msg['pic_url'],                        'url' =>$msg['url']                    );        }    }    return $record;}?>

以上就是PHP對接微信公眾平臺消息接口開發流程詳解及實例的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97国产在线视频| 欧美一级视频一区二区| 久久久精品视频在线观看| 久久综合久久美利坚合众国| 欧美性生活大片免费观看网址| 日韩成人性视频| 国产亚洲人成a一在线v站| 精品国产31久久久久久| 亚洲成色777777在线观看影院| 欧美成人午夜免费视在线看片| 91亚洲国产成人久久精品网站| 国产欧美日韩精品专区| 成人xxxxx| 久久av红桃一区二区小说| 97热精品视频官网| 日韩精品免费观看| 亚洲成av人影院在线观看| 国产在线999| 精品国内自产拍在线观看| 国产日韩欧美黄色| 亚洲国产精彩中文乱码av| 在线精品视频视频中文字幕| 国产精品久久久久高潮| 亚洲欧美成人在线| 亚洲国产日韩欧美在线99| 日本免费一区二区三区视频观看| 国产成人亚洲综合青青| 久久99久国产精品黄毛片入口| 亚洲毛片在线观看| 日韩一级裸体免费视频| 亚洲福利视频久久| 欧美午夜女人视频在线| 色综合久综合久久综合久鬼88| 亚洲欧美一区二区三区情侣bbw| 国产丝袜一区二区| 亚洲视频在线观看免费| 狠狠久久五月精品中文字幕| 亚洲石原莉奈一区二区在线观看| 欧美激情综合色综合啪啪五月| 91中文精品字幕在线视频| 2020欧美日韩在线视频| 国外成人在线视频| 欧美成人免费视频| 日韩免费av在线| 日韩电影在线观看中文字幕| 欧美黑人xxxⅹ高潮交| 欧美疯狂做受xxxx高潮| 精品久久久久久久久久久久久久| 亚洲女同精品视频| 亚洲欧美在线磁力| 国产精品∨欧美精品v日韩精品| 久久精品国产久精国产一老狼| 自拍偷拍免费精品| 日本欧美精品在线| 日韩中文字幕精品视频| 欧美高清视频免费观看| 久久视频免费在线播放| 国产精品福利久久久| 日韩视频一区在线| 中日韩美女免费视频网站在线观看| 欧美成人免费全部| 亚洲白拍色综合图区| 国产精品黄页免费高清在线观看| 成人久久久久久久| 亚洲性夜色噜噜噜7777| 92版电视剧仙鹤神针在线观看| 亚洲国产日韩欧美在线图片| 成人免费黄色网| 亚洲综合在线播放| 91精品国产综合久久香蕉922| 欧美另类极品videosbest最新版本| 欧美日韩在线一区| 亚洲国产中文字幕在线观看| 亚洲色图国产精品| 亚洲毛茸茸少妇高潮呻吟| 亚洲在线免费观看| 狠狠躁夜夜躁人人爽超碰91| 国产精品欧美激情在线播放| 不卡毛片在线看| 日韩精品免费在线视频| 中文字幕最新精品| 日日噜噜噜夜夜爽亚洲精品| 久久精品一区中文字幕| 久久亚洲国产成人| 国产成人高潮免费观看精品| 国产欧美精品一区二区三区介绍| 操人视频在线观看欧美| 日韩福利视频在线观看| 日韩成人激情在线| 欧美精品久久久久久久久久| 欧美激情一区二区三区在线视频观看| 国产综合香蕉五月婷在线| 最近2019年日本中文免费字幕| 亚洲偷欧美偷国内偷| 欧美激情18p| 5278欧美一区二区三区| 一区二区三区www| 久久夜色精品亚洲噜噜国产mv| 亚洲第一天堂无码专区| 国产精品www色诱视频| 一本色道久久综合亚洲精品小说| 黄网站色欧美视频| 美乳少妇欧美精品| 日韩电影中文字幕一区| 日韩电影大全免费观看2023年上| 日韩第一页在线| 91精品国产网站| 中文国产成人精品久久一| 国产亚洲精品久久久久久| www.久久草.com| 欧美噜噜久久久xxx| 中文字幕亚洲综合久久筱田步美| 欧美日韩国产区| 欧美日韩在线视频一区| 亚洲香蕉成人av网站在线观看| 日韩av在线免费观看一区| 欧美激情一区二区三区在线视频观看| 亚洲免费高清视频| 亚洲精品一区二三区不卡| 亚洲精品之草原avav久久| 午夜精品国产精品大乳美女| 激情久久av一区av二区av三区| 亚洲美女动态图120秒| 国产91精品在线播放| 正在播放欧美视频| 色综合色综合网色综合| 免费99精品国产自在在线| 久久精品国产欧美亚洲人人爽| 国产91精品高潮白浆喷水| 国产精品情侣自拍| 一区二区欧美久久| 日韩电影在线观看中文字幕| 欧美激情乱人伦一区| 91豆花精品一区| 国产精品三级网站| 久久久极品av| 亚洲国产精品va在看黑人| 亚洲国产三级网| 国产午夜精品久久久| 亚洲精品按摩视频| 国产精品xxxxx| 91网站在线免费观看| 国产精品电影观看| 亚洲国语精品自产拍在线观看| 国产精品99久久久久久www| 亚洲人线精品午夜| 国产精品丝袜久久久久久高清| 久久久久久久久网站| 精品欧美国产一区二区三区| 国产精品一区二区三区成人| 国产日韩av在线| 亚洲最大成人网色| 欧美日韩一区二区三区在线免费观看| 亚洲成人精品视频在线观看| 亚洲影视九九影院在线观看| 国产精品成人观看视频国产奇米| 黑人巨大精品欧美一区免费视频| 91亚洲精华国产精华| 亚洲天天在线日亚洲洲精| 高清亚洲成在人网站天堂| 久久精品成人动漫| 97国产成人精品视频| 亚洲欧美色婷婷| 九色精品美女在线|