成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

thinkphp整合企業(yè)號的坑

wing324 / 3108人閱讀

摘要:使用微信企業(yè)號回調(diào)的坑最近在做企業(yè)號回調(diào)的接口,之前做過幾個企業(yè)號的應(yīng)用了,每次接入到都報各種各樣的錯誤,算哥倒霉,該踩的不該踩的坑全踩了。

ThinkPHP 使用微信企業(yè)號回調(diào)的坑

最近在做企業(yè)號回調(diào)的接口,之前做過幾個企業(yè)號的應(yīng)用了,每次接入到Thinkphp都報各種各樣的錯誤,算哥倒霉,該踩的不該踩的坑全踩了。
這次掉坑里差點就放棄了,開發(fā)過企業(yè)號的都知道,企業(yè)號回調(diào)會經(jīng)過一個加密的算法,要求開發(fā)者對此進行解密才能開啟回調(diào),就是個這個回調(diào),微信的錯誤提示極其霸道,不管你什么錯,就一句話“ echostr校驗失敗,請您檢查是否正確解密并輸出明文echostr”。最起碼應(yīng)該告訴一下開發(fā)者,微信收到的返回長度是多少,也好與自己的輸出進行校驗,如果長度都不一致,就更不用說內(nèi)容了。

如果你跟我一樣用了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之前構(gòu)造函數(shù)的寫法和PHP5.3之后有變化,構(gòu)造函數(shù)不能再以類名當(dāng)作函數(shù)名來命名,必須要使用__construct聲明一個構(gòu)造函數(shù),也就是說用官方的例子來整合是肯定會報錯的,當(dāng)然前提是你用的也是PHP5.3之后的版本。

所以還需要

修改WXBizMsgCrypt文件中WXBizMsgCrypt函數(shù)名,改為__construct

修改pkcs7Encoder文件中pkcs7Encoder函數(shù)名,改為__construct

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

坑2

填寫企業(yè)號回調(diào)信息點擊保存不成功時,多點幾次真的有奇效!
這不是玩笑~~因為企業(yè)號發(fā)給開發(fā)者的隨機簽名里面,很有可能包含+號,當(dāng)你get url的時候,php會自動把+號過濾為空格,導(dǎo)致發(fā)來的簽名和實際地址簽名不一致,signature驗證就不會通過了,會報40001: 簽名驗證錯誤。
當(dāng)然,你也可以把空格再還原為+號,這樣能確保與發(fā)送的簽名地址一致。(我覺得這是微信回調(diào)的一個小bug,簽名里不應(yīng)該帶有這樣特殊意義的符號)

坑3

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

真的返回了明文么?你以為打印到本地就是對的么?錯了。有個東西叫緩沖區(qū)
緩沖區(qū)的東西是不會打印到本地的,微信在訪問你網(wǎng)址的時候,先get到的東西是緩沖區(qū)內(nèi)容而不是你輸出的明文。所以,要先清除緩沖區(qū),辦法是在echo前使用ob_clean(),估計其他框架也一樣。

這三個算是比較大的坑吧,網(wǎng)上的資料也少得可憐,希望能幫到大家。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22240.html

相關(guān)文章

  • thinkphp3.2,微信JS-SDK開發(fā)過程中遇到的各種問題與細(xì)節(jié)分享

    摘要:備注登錄后可在開發(fā)者中心查看對應(yīng)的接口權(quán)限。下載官網(wǎng)提供的示例代碼,參照中的代碼一步一步來實現(xiàn)。否則分享后的頁面會簽名失敗返回的與分享的是否一致 首先完成官方文檔前兩步(很好理解就不具體說了):步驟一:綁定域名先登錄微信公眾平臺進入公眾號設(shè)置的功能設(shè)置里填寫JS接口安全域名。備注:登錄后可在開發(fā)者中心查看對應(yīng)的接口權(quán)限。步驟二:引入JS文件在需要調(diào)用JS接口的頁面引入如下JS文件,(支...

    miya 評論0 收藏0
  • ThinkPHP5踩過的坑

    摘要:函數(shù)在框架初始化方法中無效當(dāng)初做權(quán)限控制在判斷是否有權(quán)限如果無權(quán)限就執(zhí)行跳轉(zhuǎn)跳轉(zhuǎn)的函數(shù)是但是無論如何都無法跳轉(zhuǎn)出去當(dāng)時的版本是手冊還不太完善后來得知必須得才可以跳轉(zhuǎn)重定向完整代碼分頁參數(shù)的問題如果是普通分頁沒毛病但是分頁后面有其他參數(shù)比 01:redirect函數(shù)在框架初始化方法中無效當(dāng)初做權(quán)限控制,在initialize判斷是否有權(quán)限,如果無權(quán)限就執(zhí)行跳轉(zhuǎn),跳轉(zhuǎn)的函數(shù)是redirec...

    enali 評論0 收藏0
  • TP5整合 WorkerMan 以及 GatewayWorker

    摘要:將解壓后的文件夾中的復(fù)制到的根目錄,即與同級的目錄。將文件中最后部分循環(huán)括號內(nèi)的路徑改為自己的正確路徑。整合版安裝使用,來安裝進入根目錄,即。安裝成功之后刪除。加載框架引導(dǎo)文件創(chuàng)建的,命名為。在,目錄不存在自行創(chuàng)建。 TP5整合GatewayWorker Windows版安裝 a)使用composer create-project topthink/think testTG,來安裝th...

    Tony 評論0 收藏0
  • TP5整合 WorkerMan 以及 GatewayWorker

    摘要:將解壓后的文件夾中的復(fù)制到的根目錄,即與同級的目錄。將文件中最后部分循環(huán)括號內(nèi)的路徑改為自己的正確路徑。整合版安裝使用,來安裝進入根目錄,即。安裝成功之后刪除。加載框架引導(dǎo)文件創(chuàng)建的,命名為。在,目錄不存在自行創(chuàng)建。 TP5整合GatewayWorker Windows版安裝 a)使用composer create-project topthink/think testTG,來安裝th...

    Fundebug 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<