中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ThinkPHP使用微信企業號回調的坑有哪些

發布時間:2021-03-10 09:45:05 來源:億速云 閱讀:236 作者:小新 欄目:編程語言

這篇文章主要介紹了ThinkPHP使用微信企業號回調的坑有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

ThinkPHP 使用微信企業號回調的坑

最近在做企業號回調的接口,之前做過幾個企業號的應用了,每次接入到Thinkphp都報各種各樣的錯誤,算哥倒霉,該踩的不該踩的坑全踩了。

這次掉坑里差點就放棄了,開發過企業號的都知道,企業號回調會經過一個加密的算法,要求開發者對此進行解密才能開啟回調,就是個這個回調,微信的錯誤提示極其霸道,不管你什么錯,就一句話“ echostr校驗失敗,請您檢查是否正確解密并輸出明文echostr”。最起碼應該告訴一下開發者,微信收到的返回長度是多少,也好與自己的輸出進行校驗,如果長度都不一致,就更不用說內容了。

如果你跟我一樣用了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(),估計其他框架也一樣。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“ThinkPHP使用微信企業號回調的坑有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

焉耆| 正宁县| 徐汇区| 若尔盖县| 竹北市| 朝阳区| 蕉岭县| 肥东县| 莆田市| 海城市| 南和县| 庄浪县| 巴东县| 平凉市| 安徽省| 育儿| 阿巴嘎旗| 安平县| 蓝田县| 涞源县| 龙口市| 兰西县| 定州市| 义马市| 营山县| 芜湖县| 甘泉县| 通道| 定州市| 淮南市| 建阳市| 土默特右旗| 舟山市| 望城县| 合作市| 延安市| 定日县| 玉屏| 尉氏县| 合水县| 丰原市|