微信公眾號三方平臺(tái)開發(fā)【全網(wǎng)發(fā)布及全網(wǎng)發(fā)布接入檢測】

經(jīng)過之前系列內(nèi)容過后傲宜,接下來的代微信公眾號實(shí)現(xiàn)業(yè)務(wù)部分跟微信公眾號開發(fā)業(yè)務(wù)邏輯一樣函卒,所以公眾號其他業(yè)務(wù)功能部分后面我會(huì)單獨(dú)整理一套相關(guān)內(nèi)容撇眯,今天,咱們就來說說微信第三方平臺(tái)開發(fā)的最后一步—— 全網(wǎng)發(fā)布熊榛,因?yàn)橹挥羞M(jìn)行全網(wǎng)發(fā)布后锚国,我們的第三方平臺(tái)才可以接收所有的微信公眾號的授權(quán),否則就只能接收測試公眾號的授權(quán)血筑。

在正式進(jìn)行全網(wǎng)發(fā)布之前,必須先通過全網(wǎng)發(fā)布接入檢測车伞,意思就是此時(shí)微信服務(wù)器會(huì)通過自動(dòng)化測試的方式喻喳,來檢測我們開發(fā)的第三方平臺(tái)的基礎(chǔ)邏輯是否正常可用表伦,只有在確定基礎(chǔ)可用的情況下蹦哼,才會(huì)允許第三方平臺(tái)提交全網(wǎng)發(fā)布。

當(dāng)然翔怎,在前往開放平臺(tái)進(jìn)行全網(wǎng)發(fā)布之前赤套,我們首先要根據(jù)測試步驟,用代碼實(shí)現(xiàn)相關(guān)邏輯容握,才能順利通過全網(wǎng)發(fā)布,在這一步一般會(huì)出現(xiàn)以下三個(gè)問題:返回Api文本信息塑猖,返回普通文本信息谈跛,發(fā)送事件信息

首先蜡励,在開發(fā)文檔里阻桅,我們可以看到,官方提供了專用測試公眾號信息稽寒,其中appid為 wx570bc396a51b8ff8趟章,Username為gh_3c884a361561慎王。

1) 發(fā)送事件信息

模擬粉絲觸發(fā)專用測試公眾號的事件搔啊,并推送事件消息到專用測試公眾號北戏,第三方平臺(tái)需要提取推送過來的XML信息中event的值嗜愈,并且第三方平臺(tái)需要在5秒內(nèi)立即返回按照官方要求組裝成文本消息回復(fù)給粉絲,格式為:event + “from_callback”(假定event為LOCATION蠕嫁,則文本消息內(nèi)容為: LOCATIONfrom_callback)剃毒。
這里,我們需要先判斷事件信息是否屬于專用測試公眾號赘阀,然后組裝進(jìn)行回復(fù):

if($toUsername== 'gh_3c884a361561'){
         $event = $postObj-> Event;
         $content =$event.'from_callback';
         responseText($postObj,$content);
    }
2)返回普通文本信息

模擬粉絲發(fā)送文本消息給專用測試公眾號基公,第三方平臺(tái)需要根據(jù)文本消息的內(nèi)容進(jìn)行相應(yīng)的響應(yīng),這里推過來的會(huì)是一個(gè)固定內(nèi)容轰豆,為TESTCOMPONENT_MSG_TYPE_TEXT酸休,而我們也是返回一個(gè)固定文本內(nèi)容即可,為TESTCOMPONENT_MSG_TYPE_TEXT_callback

 if(strtolower($postObj -> MsgType) == 'text' &&trim($postObj->Content)=='TESTCOMPONENT_MSG_TYPE_TEXT'){
         $toUsername = $postObj-> ToUserName;
         if($toUsername =='gh_3c884a361561'){
                   $content ='TESTCOMPONENT_MSG_TYPE_TEXT_callback';
                   responseText($postObj,$content);
         }
      }
3)返回Api文本信息

模擬粉絲發(fā)送文本消息給專用測試公眾號渗饮,第三方平臺(tái)需要在5秒內(nèi)返回空串表明暫時(shí)不回復(fù)陡厘,然后再立即使用客服消息接口發(fā)送消息回復(fù)粉絲。

第三方平臺(tái)接收到的文本信息為QUERY_AUTH_CODE:$query_auth_code$云茸,這里我們只要進(jìn)行“QUERY_AUTH_CODE”字段判定就可以了谤饭,在拿到$query_auth_code$的值后懊纳,需要利用$query_auth_code$的值來換取公眾號的授權(quán)信息(換取授權(quán)信息實(shí)現(xiàn)方法見微信公眾號三方平臺(tái)開發(fā)【獲取授權(quán)方的授權(quán)信息以及基本信息】)亡容,然后再調(diào)用發(fā)送客服消息api來給粉進(jìn)行文本消息回復(fù),其中文本消息內(nèi)容為:$query_auth_code$_from_api

 if(strpos ( $postObj->Content, 'QUERY_AUTH_CODE' ) !== false){
         $query_auth_code =str_replace ( 'QUERY_AUTH_CODE:', '', $postObj->Content);
         $wechat =A('Wechat/Wechat');
         $info = $wechat->getAuthInfo($query_auth_code);
         $access_info=$info['authorization_info'] ['authorizer_access_token'];
         $param ['touser'] =$postObj ->FromUserName;
         $param ['msgtype'] ='text';
         $param ['text']['content'] = $query_auth_code . '_from_api';
         $url ='https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_info;
         $res = post_data ($url, $param );
    }
完整消息事件完整代碼:
 public function reponseMsg(){
         require_once(dirname(__FILE__).'/wxBizMsgCrypt.php');
         //encodingAesKey和token均為申請三方平臺(tái)是所填寫的內(nèi)容
         $encodingAesKey = '公眾號消息加解密Key';
         $token = '公眾號消息校驗(yàn)Token';
         $appId = '三方平臺(tái)appid';
         $timeStamp = empty($_GET ['timestamp'] ) ? "" : trim ( $_GET ['timestamp'] );
         $nonce = empty ($_GET['nonce'] ) ? "" : trim ( $_GET ['nonce'] );
         $msg_sign = empty($_GET ['msg_signature'] ) ? "" : trim ( $_GET ['msg_signature'] );
         $pc = new\WXBizMsgCrypt( $token, $encodingAesKey, $appId );
         //獲取到微信推送過來post數(shù)據(jù)(xml格式)
         $postArr=$GLOBALS['HTTP_RAW_POST_DATA'];
         $msg = '';
         $errCode=$pc->decryptMsg($msg_sign, $timeStamp, $nonce, $postArr,$msg);
         if($errCode == 0){
                   //處理消息類型,并設(shè)置回復(fù)類型和內(nèi)容
                   $postObj=simplexml_load_string($msg,'SimpleXMLElement',LIBXML_NOCDATA);
                   //判斷該數(shù)據(jù)包是否是訂閱(用戶關(guān)注)的事件推送
                   if(strtolower($postObj-> MsgType) == 'event'){
                            //第三方平臺(tái)全網(wǎng)發(fā)布檢測發(fā)送事件消息測試
                            $toUsername= $postObj -> ToUserName;
                            if($toUsername== 'gh_3c884a361561'){
                                     $event= $postObj -> Event;
                                     $content= $event.'from_callback';
                                     responseText($postObj,$content);
                            }
                            //如果是關(guān)注subscribe事件
                            if(strtolower($postObj->Event== 'subscribe')){
                                     $public_name=strval($postObj->ToUserName);
                                     $map['public_name']=$public_name;
                                     $cont=M('Subscribe')->where($map)->find();
                                     //回復(fù)用戶消息
                                     $content=$cont['content'];
                                     responseText($postObj,$content);
                            }
                   }
                   //第三方平臺(tái)全網(wǎng)發(fā)布檢測普通文本消息測試
                   if(strtolower($postObj-> MsgType) == 'text' &&trim($postObj->Content)=='TESTCOMPONENT_MSG_TYPE_TEXT'){
                            $toUsername= $postObj -> ToUserName;
                            if($toUsername== 'gh_3c884a361561'){
                                     $content= 'TESTCOMPONENT_MSG_TYPE_TEXT_callback';
                                     responseText($postObj,$content);
                            }
                   }
                   //第三方平臺(tái)全網(wǎng)發(fā)布檢測返回api文本消息測試
                   if(strpos ($postObj->Content, 'QUERY_AUTH_CODE' ) !== false){
                            $query_auth_code= str_replace ( 'QUERY_AUTH_CODE:', '', $postObj->Content);
                            $wechat= A('Wechat/Wechat');
                            $info= $wechat ->getAuthInfo($query_auth_code);
                            $access_info=$info['authorization_info'] ['authorizer_access_token'];
                            $param['touser'] = $postObj ->FromUserName;
                            $param['msgtype'] = 'text';
                            $param['text'] ['content'] = $query_auth_code . '_from_api';
                            $url='https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_info;
                            $res = post_data ( $url,$param );
                   }
                   //用戶發(fā)送某一圖文關(guān)鍵字的時(shí)候,回復(fù)圖文消息
                   if(strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='圖文'){
                            //這一步可從數(shù)據(jù)庫中查詢得到
                            $arr=array(
                                     array(
                                               'title'=>'test1',
                                               'description'=>'test1',
                                      'picUrl'=>'http://mmbiz.qpic.cn/mmbiz/mLiaE7fSUysSbbqzicX2LVsLL1HsXMRV0m6uicfiaSX9Aic43BA5vnpFOBMWAoEuaVDicoOX4HzGT8OT5QK6DRs14VkQ/0',
                                               'url'=>'https://mp.weixin.qq.com/s?__biz=MjM5NzY4MDc0MA==&tempkey=mKI6U0rlJZofvceyQdxTPAYtneMxKyhWy52ytbUZfOJzFEHMDqmYTQLQWrkrSRky&appmsgid=10000002&itemidx=1&sign=99baf31f45e2357af575c63b5b303b6a#wechat_redirect',
                                     ),
                                     array(
                                               'title'=>'test2',
                                               'description'=>'test2',
                                               'picUrl'=>'http://mmbiz.qpic.cn/mmbiz_jpg/mLiaE7fSUysTFDEZQTOvXleYwYqFN1JeLwM66Zg7dHjK3aHQxdVtwGTJgzuKJRuZCBHljIvVLkvZ2CADJ6paJYQ/0?wx_fmt=jpeg',
                                               'url'=>'https://mp.weixin.qq.com/s?__biz=MjM5NzY4MDc0MA==&tempkey=mKI6U0rlJZofvceyQdxTPDXw5wcPw4rpHzkwOv4U7kDY1V%2BUUirAB0C9oEEsX5HQB8Uv1Ut2zj3buNkRPh6KNYWVyTaxebMkb8IcD9FjNbpcqY0mdRbCxRnbIjtmNBd37cKXm3Egbo1KWdkSEy5NZg%3D%3D&chksm=315123030626aa15c3e454afbd931ec3458149b13370999b16bc72b876326977e7d68b406a8c#rd',
                                     )
                            );
                            responseNews($postObj,$arr);
                   }else{
                            //當(dāng)微信用戶發(fā)送關(guān)鍵字,公眾號回復(fù)對應(yīng)內(nèi)容
                            $public_name=strval($postObj->ToUserName);
                            $keyword=strval(trim($postObj -> Content));
                            $log['public_name']=$public_name;
                            $log['keyword']=array('like','%'.$keyword.'%');
                            $con=M('Keyword')->where($log)->select();
                            foreach($conas $vo => $k){
                                     $conn=$con[$vo]['content'];
                            }
                            if($conn){
                                     $content=$conn;
                            }else{
                                     $lg['public_name']=$public_name;
                                     $lg['keyword']='';
                                     $con=M('Keyword')->where($lg)->select();
                                     foreach($conas $vo => $k){
                                     $conn=$con[$vo]['content'];
                            }
                            $content=$conn;
                            }
                            responseText($postObj,$content);
                   }
         }
      }

完成后衬以,再前往開放平臺(tái)校摩,點(diǎn)擊全網(wǎng)發(fā)布,等待一分鐘左右备籽,看到所有狀態(tài)都為成功分井,則代表全網(wǎng)發(fā)布接入檢測通過了,點(diǎn)擊【確定】尺锚,就愉快的發(fā)布咯。

全網(wǎng)發(fā)布接入檢測成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伐厌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌军熏,老刑警劉巖卷扮,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件均践,死亡現(xiàn)場離奇詭異摩幔,居然都是意外死亡或衡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門薇宠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澄港,“玉大人柄沮,你說我怎么就攤上這事∽娲辏” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵详囤,是天一觀的道長镐作。 經(jīng)常有香客問我,道長羔杨,這世上最難降的妖魔是什么杨蛋? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮曙寡,結(jié)果婚禮上寇荧,老公的妹妹穿的比我還像新娘。我一直安慰自己砚亭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布滚粟。 她就那樣靜靜地躺著刃泌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耙替。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天硝烂,我揣著相機(jī)與錄音铜幽,去河邊找鬼。 笑死狮杨,一個(gè)胖子當(dāng)著我的面吹牛到忽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喘漏,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼陷遮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帽馋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤姨涡,失蹤者是張志新(化名)和其女友劉穎吧慢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匈仗,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年间狂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了火架。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纺弊,死狀恐怖骡男,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稽犁,我是刑警寧澤骚亿,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布熊赖,位于F島的核電站,受9級特大地震影響俱笛,放射性物質(zhì)發(fā)生泄漏传趾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一磕仅、第九天 我趴在偏房一處隱蔽的房頂上張望簸呈。 院中可真熱鬧,春花似錦蜕便、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憔辫。三九已至,卻和暖如春喧务,著一層夾襖步出監(jiān)牢的瞬間枉圃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工坎穿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留返劲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓孵延,卻偏偏與公主長得像亲配,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子吼虎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容