微信第三方平臺全網發佈檢測失敗——返回Api文本信息 失敗

先吐一下槽,微信官方的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

  1.  $openid= $xml->getElementsByTagName('FromUserName')->item(0)->nodeValue;   
  2.  $Content= $xml->getElementsByTagName('Content')->item(0)->nodeValue;   
  3.  $query_auth_code = trim(str_replace("QUERY_AUTH_CODE:","",$Content));

 

三、第三方平臺拿着獲取到的$query_auth_code,調用獲取公衆號受權的Api(下圖),獲取到該公衆號的受權信息——也就是爲了獲取公衆號的 authorizer_access_token 。我一直出錯就是在此處。注意下面要post給接口的數據裏authorization_code,就是第二步裏拿到的$query_auth_codexml

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
}

四、第三方平臺使用第三步獲取到的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
    }
}

基本上按照上面的步驟作,就能夠得到檢測經過

相關文章
相關標籤/搜索