2014年爲了嚐鮮本身爲單位作了微信服務號,受到同事們的一致好評,然而大boss對此毫無所知,小boss們也是無關緊要。平時的工做也是實在平淡,2015年上半年又加入些許實用功能。(不要我問我怎麼能拿到數據,我知回答他們的數據庫都託管到咱們部門,每次維護都是我配合集成商工程師調試,因此搞好各部門的關係也是十分必要的)。php
9月單位換了新的大boss,對微信十分感興趣,特別是喜歡微信天天推送的新聞格式。因而大boos問中boss,中boss又訊問小boss,小boss又詢問跑腿的。也是boss們才知曉原來已經有了微信服務號。因而在初秋的一個上午,俺就是接到了部門boss詢問電話。我回答目前的服務號已沒法知足需求,企業號纔是最佳解決方案呢。也是近期俺的工做就馬上被切換到企業號了。數據庫
廢話已很多,其實企業號與服務號api大致相同。只不過appid換成了corpid,而後在消息內增長了AgentID。不過在開發過程仍是遇到了很多坑。api
第一個坑,也是開發軟件過程當中遇到了通用坑。編碼問題,特別中文編碼問題。騰訊爲了提升信息安全性,服務器消息都是經過嚴格加密的。不過還好,騰訊也給出了響應的樣例。下載地址以下:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8A%A0%E8%A7%A3%E5%AF%86%E5%BA%93%E4%B8%8B%E8%BD%BD%E4%B8%8E%E8%BF%94%E5%9B%9E%E7%A0%81安全
一切按照Sample.py裏面的demo進行都挺順利,解密加密也都很方便。不過當返回消息出現中文時,一切就不那麼和諧了。只要加密中文就出現下面的錯誤服務器
Input strings must be a multiple of 16 in length ERR: EncryptMsg ret: -40006
其實也很簡單,主要是str和unicode問題。sha1加密支持str,而unicode就好出現這個問題。微信
sRespData=sRespData.encode('utf8')
ret,sEncryptMsg=wxcpt.EncryptMsg(sRespData, sReqNonce, sReqTimeStamp)app
問題解決了。俺又要去遷移其餘功能了編碼