記一次 微信提交審覈的處理

爲了讓這張圖片上顯示的所有成功,花了我不少時間呢,其中主要花在了 "返回Api文本消息“那一段及”返回普通 文本消息“,那兩部分

之所以會有這兩部分的驗證,主要是因爲勾選了 如果勾選了公衆號的消息管理權限集,無論是否勾選了小程序的客服消息管理權限集都會做以下檢測。

接下來就是折騰的時間了,說真的文檔寫的真是不清不楚的,網上找的一些也是講得不全面,我這邊盡我所能的寫一回出來,儘可能的仔細,我用的是php 我把這部分的代碼也貼出來。

首先在寫吧,代碼不在我這邊,要儘可能寫得細,讓其他人少走些彎路。

具體審覈通過是這三條,截取文檔上的說詞如下

1、模擬粉絲髮送文本消息給專用測試公衆號,第三方平臺方需根據文本消息的內容進行相應的響應:

1)微信模推送給第三方平臺方:文本消息,其中Content字段的內容固定爲:TESTCOMPONENT_MSG_TYPE_TEXT

2)第三方平臺方立馬迴應文本消息並最終觸達粉絲:Content必須固定爲:TESTCOMPONENT_MSG_TYPE_TEXT_callback

2、模擬粉絲髮送文本消息給專用測試公衆號,第三方平臺方需在5秒內返回空串表明暫時不回覆,然後再立即使用客服消息接口發送消息回覆粉絲

1)微信模推送給第三方平臺方:文本消息,其中Content字段的內容固定爲: QUERY_AUTH_CODE:$query_auth_code$(query_auth_code會在專用測試公衆號自動授權給第三方平臺方時,由微信後臺推送給開發者)

2)第三方平臺方拿到$query_auth_code$的值後,通過接口文檔頁中的“使用授權碼換取公衆號的授權信息”API,將$query_auth_code$的值賦值給API所需的參數authorization_code。然後,調用發送客服消息api回覆文本消息給粉絲,其中文本消息的content字段設爲:$query_auth_code$_from_api(其中$query_auth_code$需要替換成推送過來的query_auth_code)

3、

開發者需按要求回覆(接收到後必須直接返回字符串success)。

第一條的實現過程:

因爲正常的授權碼,在完整的對接過程中是有通過預授權碼生成

文檔上是這樣表述的

步驟4:授權後回調URI,得到授權碼(authorization_code)和過期時間

授權流程完成後,授權頁會自動跳轉進入回調URI,並在URL參數中返回授權碼和過期時間(redirect_url?auth_code=xxx&expires_in=600)

所以根據第一步的操作,要回復消息,就要調用發送“客戶消息 的接口,

如果要回的話要獲取授權碼,但是授權碼,如何獲取,這又是一個問題,這裏需要用到 這個url地址在微信開放平臺進行設置,

也就是微信推送 component_verify_ticket 的地址,假設這個地址爲 abc.com;

就是在測試過程中,微信會往那個地址 abc.com上進行推送 一個  消息,具體內容解碼過程就不多寫了,解碼後的內容有

幾類,當推送 ComponentVerifyTicket 解碼後的內容爲這個

<xml>

<AppId> </AppId>

<CreateTime>1413192605 </CreateTime>

<InfoType> </InfoType>

<ComponentVerifyTicket> </ComponentVerifyTicket>

</xml>

當爲授權時的事件爲這個內容

<xml>

<AppId>第三方平臺appid</AppId>

<CreateTime>1413192760</CreateTime>

<InfoType>authorized</InfoType>

<AuthorizerAppid>公衆號appid</AuthorizerAppid>

<AuthorizationCode>授權碼(code)</AuthorizationCode>

<AuthorizationCodeExpiredTime>過期時間</AuthorizationCodeExpiredTime>

<PreAuthCode>預授權碼</PreAuthCode>

<xml>

具體判斷 時 ,以php爲例

$xml_tree = new \DOMDocument();

$xml_tree->loadXML($encryptMsg);

$infoType = $xml_tree->getElementsByTagName('InfoType')->item(0)->nodeValue;

$AuthorizerAppid = $xml_tree->getElementsByTagName('AuthorizerAppid')->item(0)->nodeValue;

從而獲取 InfoType即可,當爲 $InfoType= authorized  並且爲 授權的公衆號appid爲微信的測試公衆號時,比如在

寫的 wx570bc396a51b8ff8 時,要把 AuthorizationCode 存下來

$AuthorizationCode = $xml_tree->getElementsByTagName('InfoType')->item(0)->nodeValue; 並且要存緩存,因爲這各授權碼在下一步操作中很重要,它並不是與 消息與事件接收URL,比如 ”cba.com“ 處在一個http請求當中,所以沒辦法直接在程序中使用,必須要存下來,在等待微信推送事件往cba.com上用到

好了到這一步我們終於把 授 權碼獲取到了

接着就在驗證全網接入時,微信會

此時獲取接口調用憑證:

獲取圖片中的畫紅線的值,即是調用任證了,此時cba.com 這個消息事件地址推送消息回覆事件,具體格式在解碼後爲如下 的xml格式

判斷出msytype=text 並且 content='TESTCOMPONENT_MSG_TYPE_TEXT'時,如文檔說的回覆消息“TESTCOMPONENT_MSG_TYPE_TEXT_callback

具體實現爲

此處的touser就是事件接收到時的fromuser.content的值 爲 TESTCOMPONENT_MSG_TYPE_TEXT_callback

這樣回覆即可,、

第二條

2、模擬粉絲髮送文本消息給專用測試公衆號,

方法與之前的類似,不同的是獲取授權碼的方式,此處的授權碼是通過消息內容直接推送過來的

所以獲取授 權碼以php爲例

list(, $QUERY_AUTH_CODE) = explode(':', $content); 如此即可

接着調用上面的方式如法炮製獲取調用憑證,在調用

客服接口-發消息接口

用上面的方法

只是此處的content就改爲“授權碼_from_api” 如此即可。這時,驗證時即可以全部能過了。

模擬推送component_verify_ticket給開發者, 這條沒什麼可說的,直接在授權事件的地址那邊輸出success即可了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章