先吐一下槽,微信官方的api文档,写的真TM的绕,真是刚爬出一个坑,而后又掉进另外一个坑。node
正文:api
遇到问题:微信第三方平台全网发布检测失败,提示“返回Api文本信息 失败”。微信
官方测试要求:app
先看一下微信官方文档对第三方平台的“返回Api文本消息”功能的检测要求(下图):post
也就是这个检测要求的目的是:检测第三方平台,是否实现了,调用已受权的的公众号的api(这里是公众号的客服消息接口)的功能——也就是第三方平台代替公众号回复消息给粉丝的功能。测试
实现过程是:url
一、微信往第三方平台的“公众号消息与事件接收URL” ,转发一条来自粉丝的发给受权公众号的文本消息(xml格式)。这条文本消息有些特殊,特殊在 Content字段的内容固定为: QUERY_AUTH_CODE:$query_auth_code$ (见下图的xml信息)。注意这里的$query_auth_code$,咱们稍后要获取到这个值,进行下一步操做。code
二、第三方平台接收到这条消息后,首先要先解密,而后获取FromUserName,Content的内容,由于FromUserName的值就是粉丝的openid,下一步就是要回复消息给这个openid。至于Content的值,咱们要从里面截获$query_auth_code$。component
三、第三方平台拿着获取到的$query_auth_code,调用获取公众号受权的Api(下图),获取到该公众号的受权信息——也就是为了获取公众号的 authorizer_access_token
。我一直出错就是在此处。注意下面要post给接口的数据里authorization_code,就是第二步里拿到的$query_auth_code
xml
https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=xxxx
POST数据示例:
{
$query_auth_code
"component_appid":"appid_value" ,
"authorization_code":
}
四、第三方平台使用第三步获取到的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 } }
基本上按照上面的步骤作,就能够得到检测经过