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

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

当然,在前往开放平台进行全网发布之前,我们首先要根据测试步骤,用代码实现相关逻辑,才能顺利通过全网发布,在这一步一般会出现以下三个问题:返回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: queryauthcode query_auth_code,这里我们只要进行“QUERY_AUTH_CODE”字段判定就可以了,在拿到 queryauthcode query_auth_code的值后,需要利用 queryauthcode query_auth_code的值来换取公众号的授权信息(换取授权信息实现方法见微信公众号三方平台开发【获取授权方的授权信息以及基本信息】),然后再调用发送客服消息api来给粉进行文本消息回复,其中文本消息内容为: queryauthcode 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);
}
}
}

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

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

  1. 微信公众号三方平台开发【代微信公众号接收消息事件并响应】

    今天要讲的是代微信公众号接收消息并进行回复,这里要用到的就是咱们之前在微信公众号三方平台开发[帐号注册.平台创建]里写到的"公众号消息与事件接收URL",在接收的目标方法里,我们首 ...

  2. 微信公众号三方平台开发【帐号注册、平台创建】

    上一期咱们简单介绍了一下什么是公众号第三方平台,今天咱们讲具体如何操作来创建属于你自己的微信第三方平台. [注册] 首先当然是移步前往微信开放平台注册开发者帐号啦~注册传送门 进去后,会看到如下图页面 ...

  3. 微信公众号三方平台开发【获取授权方的授权信息以及基本信息】

    今天开始之前,先对上期的内容做一个小的补充,第三方平台在开发(即待全网发布)模式下,用来测试的微信公众号必须为第二期里说到的"授权测试公众号列表"(即测试白名单)里填写的微信公众号 ...

  4. 微信公众号三方平台开发【pre_auth_code篇】

    今天,给大家讲的是进入授权页需要的一个重要参数,预授权码. 预授权码(即pre_auth_code)是在微信公众号给第三方平台授权时,用来安全验证的,有效时间为20分钟(之前文档说的有效期为10分钟, ...

  5. 微信公众号第三方平台开发PYTHON教程 PART 2

    github地址:cppfun@wechat-open-third-party-dev 微信公众号第三方平台开发python教程 Part 1 这一节肯定是在第一节的基础上,如果你没有看过第一节,可能 ...

  6. 微信公众号第三方平台开发PYTHON教程 PART 1

    微信是一个时代的标志,虽然它现在不温不火,但我们大部分人离不开它.最近我帮朋友的公司接入了微信公众号第三方,使其成为第三方开发者. 网上公众号的开发教程,描述很多,但第三方的就几乎没有,可能是商业部分 ...

  7. 微信公众号第三方平台开发笔记--02获取component_verify_ticket

    第三方平台审核通过后,微信服务器会每10分钟向创建第三方平台时填写的授权事件接收URL推送一次component_verify_ticket, 用于获取第三方平台接口调用凭据. /** * 接收微信服 ...

  8. 微信开放平台之公众号第三方平台开发及全网发布验证

    技术交流请加QQ群:Jeewx微信开发④[289709451] 微信公众号第三方平台的开放,让公众号运营者在面向垂直行业需求时,可以通过一键登录授权给第三方开发者,来完成相关的处理能力,方便快捷,那如 ...

  9. 微信开放平台 公众号第三方平台开发 教程一 平台介绍

    教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 ...

最新文章

  1. 8、模态对话框、非模态对话框
  2. 河北省电子工程高级职称公示_2019年河北省电子工程职称评审,中级职称已经出结果了!...
  3. Eclipse启动之一:外壳程序(百度空间迁移)
  4. 给Source Insight做个外挂系列之二--将本地代码注入到Source Insight进程
  5. Object family not exist issue in Equipment download
  6. 物联网、工业互联网大数据的特点
  7. python开发工具pycharm快速入门
  8. TranslateAnimation类:位置变化动画类
  9. linux搜索一天内更新的所有文件,linux下怎样更新文件夹下所有文件的时间戳
  10. 对anaconda虚拟环境进行迁移
  11. Php wordpress安全性,使用 .htaccess 提高 WordPress 的安全性和可用性
  12. 想自学HCIE,有什么好的书籍推荐吗?
  13. Barsetto百胜图全自动美式磨豆咖啡机测评
  14. 单变量微积分笔记1——导数1(导数的基本概念)
  15. 免费高速的钉钉内网穿透——阿里出品必是精品(不限速,不限流量)
  16. 腾讯云运维工程师认证TCA原题(2)
  17. 可换皮肤的Qt登录界面
  18. Java抽象画--秒变绘图大师
  19. FFC1000系列全频带微波超宽带上下变频器
  20. Mulesoft,两个月考证准备,每天进步一点点!

热门文章

  1. MySQL核心查询-排序 分组 聚合 多表查询 合并查询 子查询
  2. SQL 修改主键信息
  3. 如何在PowerPoint中插入时钟
  4. React与D3的结合
  5. html中背景条纹效果,纯css3实现条纹背景方法(水平,垂直,倾斜)
  6. 今天轮到我来撕ConcurrentHashMap了
  7. 耳挂式蓝牙耳机原理_一种固定功能的耳挂式蓝牙耳机的制作方法
  8. 【Windows常用快捷键,建议收藏】
  9. 解决html在微信浏览器无法调用图片浏览器
  10. freebsd下的Acdsee看图软件