首先声明我的程序是php程序。

问题:微信第三方平台在进行全网发布时,自动化测试结果返回返回普通文本信息失败和返回Api文本信息失败。

看一下官方手册:

解决问题一:返回普通文本信息失败

按照官方文档说法,授权后会模拟粉丝发送文本消息给他们的测试公众号,需要注意的是模拟粉丝发送的内容是一个固定的文本内容:TESTCOMPONENT_MSG_TYPE_TEXT并且是放在content字段中的,而我们需要做的是给他们回复一个固定的文本消息:TESTCOMPONENT_MSG_TYPE_TEXT_callback就行了。

注:此处微信有点bug,如果按照上述方式做了后,还是检测返回普通文本信息失败,只管提交就行,我的就是这种情况,提交全网审核,两天后就审核通过了。

解决问题二:返回Api文本信息失败

这个检测要求的目的是:检测第三方平台,是否实现了调用已授权的的公众号的api(这里是公众号的客服消息接口)的功能,即第三方平台代替公众号回复消息给粉丝的功能。

解析此过程:

1,微信向第三方平台的“公众号消息与事件接收URL” 地址转发一条来自粉丝的发给授权公众号的加密文本消息(xml格式)。这条文本消息 Content字段的内容固定为: QUERY_AUTH_CODE:$query_auth_code$ (见下图的xml信息)。

2,第三方平台接收到这条消息后,首先要先解密,然后获取FromUserName,Content的内容,因为FromUserName的值就是粉丝的openid,下一步就是要回复消息给这个openid。至于Content的值,我们要从里面截获$query_auth_code$。(注意取值的方式,要使用xml的取值格式,我就是跳进了这个坑)

$ToUserName = $xml_tree->getElementsByTagName('ToUserName')->item(0)->nodeValue;
$openid = $xml_tree->getElementsByTagName('FromUserName')->item(0)->nodeValue;
$Content = $xml_tree->getElementsByTagName('Content')->item(0)->nodeValue;
//截取$query_auth_code
$query_auth_code = trim(str_replace("QUERY_AUTH_CODE:", "", $Content));

3,第三方平台拿着获取到的$query_auth_code,调用获取公众号授权的Api,获取到该公众号的授权信息——拿到公众号的 authorizer_access_token 。注意下面要post给接口的数据里authorization_code,就是第二步里拿到的$query_auth_code:

//接口地址 post
https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=xxxx

POST数据示例:

{
"component_appid":"appid_value" ,
"authorization_code": $query_auth_code
}

4,第三方平台使用第三步获取到的authorizer_access_token来调用公众号的“客服消息接口”(见下面的url),回复消息给粉丝$openid。要注意发送的消息是固定的: $query_auth_code$_from_api ,也就是将第二步里获取的 $query_auth_code和“_from_api”拼接成字符串

//http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=authorizer_access_token

发送消息示例:

{"touser":$openid,"msgtype":"text","text":{"content":$query_auth_code$_from_api}
}

最后,附上我的代码示例:

$xml = file_get_contents('php://input');
$xml_tree = new \DOMDocument();
$xml_tree->loadXML($xml);
$ToUserName = $xml_tree->getElementsByTagName('ToUserName')->item(0)->nodeValue;
$pc = new wxBizMsgCrypt($param->token, $param->encodingAesKey, $param->appid);
$msg = '';
$errCode = $pc->decryptMsg($msgSignature, $timestamp, $nonce, $xml, $msg);
if ($errCode == 0) {//判断自动化测试的专用测试公众号if($ToUserName == 'gh_3c884a361561'){//利用xml取值$xml_tree->loadXML($msg);$openid = $xml_tree->getElementsByTagName('FromUserName')->item(0)->nodeValue;$Content = $xml_tree->getElementsByTagName('Content')->item(0)->nodeValue;//利用数组取值$postObj = simplexml_load_string($msg, 'SimpleXMLElement', LIBXML_NOCDATA);$postObj = json_encode($postObj, JSON_UNESCAPED_UNICODE);$array = json_decode($postObj, true);if ($array['MsgType'] == 'text') {if ($array['Content'] == 'TESTCOMPONENT_MSG_TYPE_TEXT') { //微信自动检测程序 - 返回普通文本消息检测$content = 'TESTCOMPONENT_MSG_TYPE_TEXT_callback';$result = $this->transmitText($array, $content);echo $result;return;} elseif (strpos($array['Content'], 'QUERY_AUTH_CODE') !== false) { //微信自动检测程序 - 返回Api文本消息检测$query_auth_code = trim(str_replace("QUERY_AUTH_CODE:", "", $Content));$authInfo = $this->grant->apiQueryAuth($component_access_token, $query_auth_code);if (!array_key_exists('authorization_info', $authInfo)) {file_put_contents($path . '/' . date('d') . ".txt", "公众号信息获取失败:" . json_encode($authInfo), FILE_APPEND);return;}$authInfo = $authInfo['authorization_info'];if (!array_key_exists('authorizer_access_token', $authInfo)) {file_put_contents($path . '/' . date('d') . ".txt", "接口调用令牌未返回:" . json_encode($authInfo), FILE_APPEND);return;}$authorizer_access_token = $authInfo['authorizer_access_token'];$data = ['touser' => $openid,'msgtype' => 'text','text' => ['content' => $query_auth_code . '_from_api'],];$result = json_decode($this->grant->send_message_1($authorizer_access_token, $data), true);if ($result['errcode'] == 0) {file_put_contents($path . '/' . date('d') . ".txt", "返回Api文本消息成功", FILE_APPEND);return;} else {file_put_contents($path . '/' . date('d') . ".txt", "返回Api文本消息失败:" . json_encode($result), FILE_APPEND);return;}} else {return;}}else{return;}}}

微信第三方平台全网发布返回Api/普通文本信息失败相关推荐

  1. java微信第三方平台全网发布(三)

    在java微信第三方平台开发(二)中写了授权事件的处理,并且第三方平台代公众号发起网页授权,获取用户信息和发红包等基本业务.接下来代公众号处理消息和事件.这时候就需要用到在开发者资料中填写的公众号消息 ...

  2. 微信公众账号第三方平台全网发布源码(java)- 实战测试通过

    微信公众账号第三方平台全网发布源码(java)- 实战测试通过 (更多资料,关注论坛:www.jeecg.org) 技术交流请加:289709451.287090836 package org.jee ...

  3. 微信公众平台第三方平台全网发布 java

    小弟初次写,写的不好,大神多多关照 总共分为两部分: 1.授权,微信每10分钟会给第三方平台推送一次,这里有需要用到的 COMPONENT_VERIFY_TICKET,并且需要响应 success. ...

  4. 微信开放平台(公众号第三方平台) -- 全网发布

    一.微信开放平台,第三方平台,全网发布怎么通 过?  二. 微信开放平台 全网发布 组件ticket检测失败?      解决步骤 1.将附件中的代码发布到你配置的域名下: 2.直接点全网发布: 3. ...

  5. 微信开放平台全网发布

    最近刚做了微信开放平台全网发布的开发,整理一下贴出来 前置条件 已经做好了相关的开发工作(比如扫码授权之类的),项目导入了微信SDK(最后会附上我自己用的SDK jar包) sdk jar 地址: h ...

  6. 微信开放平台-第三方平台-全网发布接入【java版本】

    微信给出的文档 概述 在第三方平台方创建成功并最终开发测试完毕,提交全网发布申请时,微信服务器会通过自动化测试的方式,检测服务的基础逻辑是否可用,在确保基础可用的情况下,才会允许公众号第三方平台提交全 ...

  7. 微信三方平台全网发布总结

    相信很多第一次玩三方平台全网发布的童鞋同会遇到很多问题.这里将这两天我们在全网发布测试中遇到的问题做个总结,希望对大家有用: 在这里首先感慨一下微信有点店大欺客的感觉,文档写的确实不咋地,包括微信支付 ...

  8. mysql 推送微信公众号_10分钟完成微信公众号第三方平台全网发布

    背景:在微信公众平台配置服务器URL时,使用了新浪云SAE自带的二级域名,提交时出现一个安全风险的警告,网上查了下,许多服务平台和团队也遇到同样的问题. 经过一番研究 - 为什么会有安全风险的警告? ...

  9. 微信开放平台全网发布时,检测失败 —— C#

    主要就是三个:返回API文本消息,返回普通文本消息,发送事件消息   --会出现失败的情况 (后续补充说明:出现检测出错,不一定是代码出现了问题,也有可能是1.微信方面检测时出现服务器请求失败,2.我 ...

  10. 开放平台全网发布php,微信开放平台 全网发布 组件ticket检测失败

    api接口文本错误的 之前我也是遇到问题 困扰几天了终于搞好了 问题是这样解决的 发现有点坑爹 他这两个接口要求的code取值不一样 第三方平台方拿到$query_auth_code$的值后,通过接口 ...

最新文章

  1. sigprocmask和sigsuspend转
  2. 【Tree】Prim算法思想与步骤
  3. Exadata上oracle binary的make日志
  4. TypeError: only integer scalar arrays can be converted to a scalar index一例
  5. IE8不兼容你的网页 怎么办? - 简单开启兼容模式
  6. 百度地图离线sdk java_百度地图SDK java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK...
  7. R语言是如何增强数据科学
  8. Java任务调度之Quartz快速入门
  9. redis set时间单位_SpringBoot+Redis分布式锁:模拟抢单
  10. git只提交一张图片_几张图让你彻底弄懂git工作流(三) ——git深入
  11. linux里用户权限:~$,/$,~#,/#的区别与含义
  12. Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解
  13. hadoop 笔记(hive)
  14. 最新免费计算机编程视频教程
  15. CAD软件查看.dwg、.dxf、.dwf、.jpeg、.jpg、.png、.gif等文件
  16. SQL 2005/2008质疑修复
  17. 7.Excel数据分析-员工考勤表
  18. Django 个人博客网站+simpleui后台
  19. 欲戴王冠,必承其重。
  20. python存钱程序_Python基础(六) 52周存钱demo

热门文章

  1. ERROR 999999: Error executing function. The table name is invalid. Failed to execute (Reclassify).
  2. 计算机软件专业硕士,软件工程硕士与计算机硕士区别
  3. blob:https视频下载m3u8视频在线下载
  4. 源码:三星键盘输入法 安卓开发者福音
  5. 以下产品不用再做CCC认证了,你的产品在内吗?
  6. 51单片机~蜂鸣器,数码管的使用
  7. ZK宕机重启数据恢复
  8. EM(expection maxium)算法
  9. html动画 箭头线条,纯CSS3实现的箭头图标和箭头循环动画
  10. 使用回溯算法解决排列组合问题