微信第三方平臺全網發佈流程

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/weixin_35829542/article/details/52162413
1 發佈前閱讀

    【消息加解密接入指引】https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318479&lang=zh_CN
    【全網發佈指引】https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318611&lang=zh_CN


2 加解密

加解密按【消息加解密接入指引】文檔操作即可,需注意的是如果是java環境,替換jdk ${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar


3 發佈修改流程

    因爲是全網發佈檢測,只要通過一次就行了,而且不能影響正常流程,所以代碼加上判斷是否是 gh_3c884a361561 發來的事件或消息。

3.1 配置公衆號消息與事件接收URL

檢測流程前三步都是通過此URL接口接受消息的,如圖:
這裏寫圖片描述
3.2 step 1

    模擬粉絲觸發專用測試公衆號的事件,並推送事件消息到專用測試公衆號,第三方平臺方開發者需要提取推送XML信息中的event值,並在5秒內立即返回按照下述要求組裝的文本消息給粉絲。

    判斷是 gh_3c884a361561 發來的事件
    解密收到的消息
    拼裝Content: event + “from_callback” (假定event爲LOCATION,則Content爲: LOCATIONfrom_callback)
    設置文本消息,如:

<xml>
  <ToUserName><![CDATA[ozy4qt0Rsc9YJzR5nEeVAaTHg9DQ]]></ToUserName>
  <FromUserName><![CDATA[gh_3c884a361561]]></FromUserName>
  <MsgType><![CDATA[text]]></MsgType>
  <Content><![CDATA[LOCATIONfrom_callback]]></Content>
  <CreateTime>1470707436932</CreateTime>
</xml>
<!-- 需注意兩點,1. 從接收消息中拿到的toUser跟fromUser塞到回覆文本消息時需互換;2.回覆的文本消息必須需要這五個字段,且MsgType是 text -->

    1
    2
    3
    4
    5
    6
    7
    8

    加密, 其中timestamp跟nonce可以自主生成
    return

3.3 step 2

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

    判斷是 gh_3c884a361561 發來的消息且消息包含 TESTCOMPONENT_MSG_TYPE_TEXT
    解密收到的消息
    拼裝Content:TESTCOMPONENT_MSG_TYPE_TEXT_callback
    設置消息,加密跟注意事項跟step 1一樣,這裏不贅述。
    return

3.4 step 3

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

    判斷是 gh_3c884a361561 發來的消息且消息包含 QUERY_AUTH_CODE
    解密收到的消息
    根據QUERY_AUTH_CODE獲取授權公衆號的authorizer_access_token。具體怎麼獲取可以查看第三方平臺接入文檔
    查看微信|公衆平臺開發者文檔的客服消息 http://mp.weixin.qq.com/wiki/11/c88c270ae8935291626538f9c64bd123.html
    使用http請求post https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=authorizer_access_token
    設置請求body:

{
    "touser":"OPENID",
    "msgtype":"text",
    "text":
    {
         "content":"Hello World"
    }
}
# OPENID 替換爲: 接受都消息中的 `FromUserName`
# content設置爲:$query_auth_code$_from_api(其中$query_auth_code$需要替換成推送過來的query_auth_code)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    return “”, 返回空串

注:第5/6兩步建議使用線程異步處理,主線程在獲取完authorizer_access_token就直接返回空串。流程控制在5s內完成,否則通不過檢測。
3.5 step 4

    模擬推送component_verify_ticket給開發者,開發者需按要求回覆(接收到後必須直接返回字符串success)

此步驟不多贅述,具體怎麼處理可以查看第三方平臺接入文檔


4 問題與解決
4.1 消息回覆不正確

缺少 導致, 原因是使用對象轉xml,這個字段放父類裏邊了,生成xml時丟了。
4.2 客服消息不成功

不成功主要是處理邏輯時間太長了,解決方法是在上次檢測把authorizer_access_token記錄下來, 這次檢測的時候不走獲取這個token的流程,這樣節省不少時間。

 

發佈了21 篇原創文章 · 獲贊 75 · 訪問量 84萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章