微信公众号三方平台开发【全网发布及全网发布接入检测】

经过之前系列内容过后,接下来的代微信公众号实现业务部分跟微信公众号开发业务逻辑一样,所以公众号其他业务功能部分后面我会单独整理一套相关内容,今天,咱们就来说说微信第三方平台开发的最后一步—— 全网发布,因为只有进行全网发布后,我们的第三方平台才可以接收所有的微信公众号的授权,否则就只能接收测试公众号的授权。

在正式进行全网发布之前,必须先通过全网发布接入检测,意思就是此时微信服务器会通过自动化测试的方式,来检测我们开发的第三方平台的基础逻辑是否正常可用,只有在确定基础可用的情况下,才会允许第三方平台提交全网发布。

当然,在前往开放平台进行全网发布之前,我们首先要根据测试步骤,用代码实现相关逻辑,才能顺利通过全网发布,在这一步一般会出现以下三个问题:返回Api文本信息返回普通文本信息发送事件信息

首先,在开发文档里,我们可以看到,官方提供了专用测试公众号信息,其中appid为 wx570bc396a51b8ff8,Username为gh_3c884a361561。

1) 发送事件信息

模拟粉丝触发专用测试公众号的事件,并推送事件消息到专用测试公众号,第三方平台需要提取推送过来的XML信息中event的值,并且第三方平台需要在5秒内立即返回按照官方要求组装成文本消息回复给粉丝,格式为:event + “from_callback”(假定event为LOCATION,则文本消息内容为: LOCATIONfrom_callback)。
这里,我们需要先判断事件信息是否属于专用测试公众号,然后组装进行回复:

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

模拟粉丝发送文本消息给专用测试公众号,第三方平台需要根据文本消息的内容进行相应的响应,这里推过来的会是一个固定内容,为TESTCOMPONENT_MSG_TYPE_TEXT,而我们也是返回一个固定文本内容即可,为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文本信息

模拟粉丝发送文本消息给专用测试公众号,第三方平台需要在5秒内返回空串表明暂时不回复,然后再立即使用客服消息接口发送消息回复粉丝。

第三方平台接收到的文本信息为QUERY_AUTH_CODE:$query_auth_code$,这里我们只要进行“QUERY_AUTH_CODE”字段判定就可以了,在拿到$query_auth_code$的值后,需要利用$query_auth_code$的值来换取公众号的授权信息(换取授权信息实现方法见微信公众号三方平台开发【获取授权方的授权信息以及基本信息】),然后再调用发送客服消息api来给粉进行文本消息回复,其中文本消息内容为:$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均为申请三方平台是所填写的内容
         $encodingAesKey = '公众号消息加解密Key';
         $token = '公众号消息校验Token';
         $appId = '三方平台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数据(xml格式)
         $postArr=$GLOBALS['HTTP_RAW_POST_DATA'];
         $msg = '';
         $errCode=$pc->decryptMsg($msg_sign, $timeStamp, $nonce, $postArr,$msg);
         if($errCode == 0){
                   //处理消息类型,并设置回复类型和内容
                   $postObj=simplexml_load_string($msg,'SimpleXMLElement',LIBXML_NOCDATA);
                   //判断该数据包是否是订阅(用户关注)的事件推送
                   if(strtolower($postObj-> MsgType) == 'event'){
                            //第三方平台全网发布检测发送事件消息测试
                            $toUsername= $postObj -> ToUserName;
                            if($toUsername== 'gh_3c884a361561'){
                                     $event= $postObj -> Event;
                                     $content= $event.'from_callback';
                                     responseText($postObj,$content);
                            }
                            //如果是关注subscribe事件
                            if(strtolower($postObj->Event== 'subscribe')){
                                     $public_name=strval($postObj->ToUserName);
                                     $map['public_name']=$public_name;
                                     $cont=M('Subscribe')->where($map)->find();
                                     //回复用户消息
                                     $content=$cont['content'];
                                     responseText($postObj,$content);
                            }
                   }
                   //第三方平台全网发布检测普通文本消息测试
                   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);
                            }
                   }
                   //第三方平台全网发布检测返回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 );
                   }
                   //用户发送某一图文关键字的时候,回复图文消息
                   if(strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='图文'){
                            //这一步可从数据库中查询得到
                            $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{
                            //当微信用户发送关键字,公众号回复对应内容
                            $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);
                   }
         }
      }

完成后,再前往开放平台,点击全网发布,等待一分钟左右,看到所有状态都为成功,则代表全网发布接入检测通过了,点击【确定】,就愉快的发布咯。

全网发布接入检测成功
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容