PHP微信公眾平臺開發:配置、微信api接入驗證
微信公眾平臺基礎開發步驟主要有三步:
1、填寫伺服器
2、驗證伺服器地址的有效性
3、依據介面文件實現業務邏輯
第一步大家應該都不陌生,其實就是在開啟開發者模式後需要配置的自己程式所在伺服器的路徑(必須得是可以公網訪問的域名或ip地址),例如http://www.abc.com/weixin/index.php,配置這個其實就是告訴微信伺服器,每次微信端傳送過來的處理以後就經過你自己的程式去執行,之後反饋處理結果,而不是像以前統統是交給微信伺服器做處理。在填寫好了相關配置後,就到了第二步的伺服器地址有效性驗證。
第二步是,當我們提交資訊後,微信伺服器將傳送GET請求到填寫的伺服器地址URL上,我們通過自己程式的處理,返回給微信伺服器所需要的驗證資訊,當驗證通過時,接入微信api則生效。微信伺服器傳送出GET請求有4個引數,signature微信加密簽名、echostr隨機字串、timestamp時間戳、nonce隨機數,我們在我們自己的程式碼中需首先獲取到這四個引數,然後根據相關要求對這些資料做出處理,流程如下:
校驗流程如下: 1. 將token、timestamp、nonce三個引數進行字典序排序 2. 將三個引數字串拼接成一個字串進行sha1加密 3. 獲得加密後的字串可與signature對比,標識該請求來源於微信比如說我們的專案入口檔案是index.php的index方法,在這裡我們就需要按要求寫出處理邏輯
程式碼填寫完成後,回到第一步的配置資訊填寫,所有資訊填寫完畢點選提交,微信伺服器就會根據我們寫的url路徑去驗證微信api是否接入成功,接入成功就會提示token驗證成功,這時候咱們的基礎配置就算完成啦!//微信api接入驗證 public function index() { //獲得幾個引數 $token = 'YourTokenString';//此處填寫之前開發者配置的token $nonce = $_GET['nonce']; $timestamp = $_GET['timestamp']; $echostr = $_GET['echostr']; $signature = $_GET['signature']; //引數字典序排序 $array = array(); $array = array($nonce, $timestamp, $token); sort($array); //驗證 $str = sha1( implode( $array ) );//sha1加密 //對比驗證處理好的str與signature,若確認此次GET請求來自微信伺服器,請原樣返回echostr引數內容,則接入生效,成為開發者成功,否則接入失敗。 if( $str == $signature && $echostr ){ <span style="white-space:pre"> </span>//第一次接入微信api有echostr這個引數,之後就沒有了 echo $echostr; } else{ //接入成功後的其他處理 code... } }
還有很重要的一點,微信公眾號提供的api介面只支援80埠,這就需要我們在配置自己的伺服器的時候要麼關閉防火牆,要麼在防火請中配置開啟80埠,同時保證像php、mysql、nginx或者apache這些其它程序不會佔用80埠。初始就是這些,如果在配置方面還有其他問題,也歡迎大家留言和我討論,我也會盡自己最大的努力和大家一起解決遇到的問題的。