古詩詞大全網 - 成語經典 - 企業微信應用開啟API接收消息

企業微信應用開啟API接收消息

您好!很高興能為您解答,       用了tp框架,那妳要留意了,本文以Thinkphp3.2.3 php版本5.3為例

坑1

下載官方的處理接口的範例,放在Thinkphp>Library>Wechat(自建)目錄下

修改WXBizMsgCrypt.php為WXBizMsgCrypt.class.php

在WXBizMsgCrypt中聲明命名空間namespace Wechat;

在妳需要的控制器中引入類use Wechat WXBizMsgCrypt;

之後就是使用官方的sample copy進妳的項目簡單修改下就算整合完成了,過程挺簡單的,但是!在PHP5.3之前構造函數的寫法和PHP5.3之後有變化,構造函數不能再以類名當作函數名來命名,必須要使用__construct聲明壹個構造函數,也就是說用官方的例子來整合是肯定會報錯的,當然前提是妳用的也是PHP5.3之後的版本。

所以還需要

修改WXBizMsgCrypt文件中WXBizMsgCrypt函數名,改為__construct

修改pkcs7Encoder文件中pkcs7Encoder函數名,改為__construct

大功告成,可能不適用於低版本的Thinkphp 或者php5.3以下,我沒做過其他版本的測試

坑2

填寫企業號回調信息點擊保存不成功時,多點幾次真的有奇效!

這不是玩笑~~因為企業號發給開發者的隨機簽名裏面,很有可能包含+號,當妳get url的時候,php會自動把+號過濾為空格,導致發來的簽名和實際地址簽名不壹致,signature驗證就不會通過了,會報40001: 簽名驗證錯誤。

當然,妳也可以把空格再還原為+號,這樣能確保與發送的簽名地址壹致。(我覺得這是微信回調的壹個小bug,簽名裏不應該帶有這樣特殊意義的符號)

坑3

全部都通過驗證了,也返回微信要的明文了,還是不通過,what?打印到本地看看,也沒錯啊,百度我都搜遍了,什麽去掉文件BOM頭,改header頭,通通都試過了,我真的的的確確解密了,而且把解密的結果返回給了微信,還是不行啊,WTF。。

真的返回了明文麽?妳以為打印到本地就是對的麽?錯了。有個東西叫緩沖區

緩沖區的東西是不會打印到本地的,微信在訪問妳網址的時候,先get到的東西是緩沖區內容而不是妳輸出的明文。所以,要先清除緩沖區,辦法是在echo前使用ob_clean(),估計其他框架也壹樣。