第二講 探秘微信公眾號

來源:互聯網
上載者:User

     本系列文章屬作者原創文章,請尊重作者的勞動成果,轉載請註明出處:walkingmanc的專欄 , 如果您覺得該系列文章對您有用,請推薦給更多的人,讓更多的人受益,謝謝 同時,有朋友反映想交流,為了方便大家學習交流建了一個群,歡迎加入QQ群:364072602         首先,第2篇 遲遲未能與大家見面是因為我們加班多了,時間上很難協調。這裡給大家道歉了。以後每天我會熬夜來寫該系列的。
 
        在上一篇中,我們講解了如何申請公眾號,公眾平台開發的基本原理以及伺服器環境的搭建。這一講開始,我們正式進入公眾號的開發。1.   介面

        我們前一篇已經講了,平台(不管是訂閱號還是服務號)和我們的網站進行互動時,都是通過平台開放給外部系統的介面調用來實現的,也就是說,粉絲向公眾號發送一次互動(文字,圖片,聲音或者菜單點擊都算互動)後,平台會向你配置的url所對應的網站發出調用請求,來執行你的網站的代碼,在代碼中你進行各種處理後返回一個處理結果。

           你的網站具體使用什麼語言來開發取決於你自己的愛好,不過我建議大家使用php來做,因為目前做web開發php是最方便的,當然你也可以用java寫,沒關係的,我們以php為例說明。

         平台在配置url時會驗證一下你對應的這個url的網站是否真實存在,是否是你自己的網站。驗證的原理很簡單,你首先填寫一個Token(你不用管這個是什麼,只要記住它其實就是一個字串符號,用來產生一個代表你自己身份的簽名),然後填寫你的網站的url,點擊提交,如。


            平台就會向這個url所對應的網站發送一個GET請求,同時攜帶4個參數。參數參考圖2的說明。如。



       其中timestamp是一個時間戳記。時間戳記其實就是從 1970年 1月 1日至目前時間的總秒數。你就數吧,從1970年 1月 1日到我們現在這個時刻一共流逝了多少秒那麼這個時間戳記就是多少。所以時間戳記任何時刻都是不同的。Nonce和echostr都是平台產生的隨機數。Signature也就是簽名,它是經過如下計算得到的:

       將目前時間戳(timestamp),nonce以及你輸入的TOKEN按照字母順序排序後拼接在一起形成一個字串。例如: timestamp是345632,nonce是132a,TOKEN是123,那麼我們先按照字母順序排列,得到這樣的順序:123,132a,345632.然後拼接得到:123132a345632.最後經過SHA1加密運算得到簽名Signature:E69E5E13D8B045923EF1BE38DF938F5621CA3004。SHA1是一個密碼編譯演算法,細節這裡就不講了。這些參數一會都會通過查詢參數的形式發送給我們網站的。

為了能夠接受這些參數我們需要一個自己的php網站。Ok,我們現在就開始搭建這樣的一個網站。

       1. 先下載WAMP整合安裝套件,這個很簡單,大家一路點擊“下一步”,最後點擊一下“完成”就可以了,我是直接安裝在C盤根目錄的,安裝好了以後的目錄結構 如下圖. 安裝完成後我們可以看到,我們需要的apache,mysql和php都已經安裝好了,而且預設幫你安裝了一個管理工具,非常方便。最重要的就是www這個目錄,這個是就我們即將要建立的網站的根目錄。



2. 進入www目錄,建立一個index.php的檔案,在裡面唯寫入一行代碼,如所示。




              然後在瀏覽器裡面輸入localhost,如果出現的頁面,說明我們的伺服器環境是已經ok,我們就可以繼續下一步了。

 3.      接下來,我們開始代碼處理。我們首先擷取平台傳過來的4個參數,

 

具體的代碼見下面,裡面已經有很詳細的說明了哦。這裡再說一下,為什麼使用php,大家看到沒有,用php 代碼只有不到100行,而我之前用java實現過同樣的功能,卻花了500多行,這得益於php的很多函數以及幫我們做好了,我們可以直接使用。所以,php特別適合中小型網站的哦開發哦。大家也可以用其他語言換個方式實現一下試試。






        這裡再補充解釋一下上面的代碼:代碼的處理過程是這樣的,將傳過來的時間戳記timestamp,隨機數nonce和你自己輸入的TOKEN(你自己輸入的,所以當然知道TOKEN是多少)排序,拼接,SHA1處理,最後得到一個簽名。

 

        因為我們得到這個簽名的過程和平台處理的過程是一模一樣的,所以我們得到的簽名和平台發送給我們的簽名Signature的值應該是一模一樣的。

        將得到的結果和傳過來的簽名Signature比較,如果相等,就返回echostr(echostr也是平台發給我們的參數哦)給平台,告訴平台我已經接受到了你的請求,而且這個請求在網路傳輸的過程中沒有被篡改(因為簽名相等)。這樣驗證就通過了,相當於和平台和我們的網站之間建立了一個可信的通訊通道。

     如果你看到平台顯示下面的資訊,說明驗證通過了,你就可以正式開始你的開發了。





.2. 使用php程式開發伺服器端

          我們的商城其實就是一個web程式,只不過這個web程式的用戶端不再是瀏覽器而是平台了,所以,任何支援web伺服器端開發的語言都可以作為我們商城的開發語言,例如Java、php等。為什麼這裡我選擇php呢,因為php是目前為止最適合web開發的語言,而且隨著我們的深入,你會發現php在web開發上的強大之處,很多java要很多行代碼才能夠實現的功能,php只要一句代碼就可以很好的實現了。所以,我們選擇php作為我們的樣本開發語言。

        那麼,大家在使用php開發時,我相信一提到調試,很多人還是會覺得很頭疼,特別是新手更加是這樣。我見過很多人抱怨php調試非常不方便,只能使用一些echo,print等輸出語句輸出變數值來進行調試,這樣的確是非常麻煩的,因為這些輸出語句無法設定斷點。所以,我這裡首先幫大家解決php斷點調試的問題,因為沒有這個斷點調試的“利器”,以後的開發中出現問題,你想解決是很痛苦的。

       說起php的斷點調試,我相信很多同學首先想到的就是zend studio+zend debugger,沒錯,你可以這麼做,但是,這麼做就意味著你需要手動設定很多東西,而且還不一樣能保證停留在斷點處。這裡,我就不饒灣子了,我教大家一個很方便的工具,直接安裝一下就可以原來調試php了。

       這個工具就是XAMPP+PhpEclipse的組合,其中XAMPP是一個整合安裝包,裡麵包括了:Apache, MySQL、PHP和Perl。XAMPP其中的A代表Apache,M代表MySQL,第一個P代表PHP,第2個P代表Perl.這個工具自身攜帶了php調試功能xdbug,大家安裝以後幾乎不需要特意配置就可以用來調試php了。

 

 

下面請跟著我一步步來操作:

1.開啟http://www.apachefriends.org/zh_cn/download.html,下載XAMPP for Windows1.8.2 & 1.8.3


2.     解壓該壓縮包,並雙擊    xampp-win32-1.8.0-VC9-installer.exe

3.       一路點Next,在選擇檔案安裝位置時,選擇安裝在C:\盤根目錄。




4.  等待安裝



5. 完成。



6.     完成後會自動開啟控制台。其中1處是啟動各種服務的按鈕,2 是配置各種服務的按鈕,3是查看各種服務的日誌的按鈕。

7.    點擊Apache,MySql   的Start按鈕,啟動apache web伺服器和mysql 資料庫伺服器,如,能看到Pid和ports的下方出現了 值 時表示服務啟動成功 。

     如果出現啟動報錯時,檢查一下是否 相關的連接埠被佔用了,修改設定檔裡面的相關連接埠的配置後再重新啟動試試。




     下載並解壓phpeclipse,點擊運行,你會發現聰明的phpeclipse已經自動探索了xampp,並且已經自動幫你配置好了。




        接下來很重要的一步,我們將建立一個php網站項目,並且驗證一下我們的xampp是否能對我們的php網站進行調試。只有我們的調試能正常進行,以後的課程中我才能一步步的幫大家分析平台和我們的網站的互動過程的細節,大家才能真正明白原理,然後大家在實際中遇到問題時也可以使用調試來分析解決。

 

       1.    首先,建立一個php項目 。增加一個php檔案,裡面隨便加一些最簡單的代碼。並設定幾個斷點。這裡注意:設定斷點時一定不要雙擊來設定,一定要通過在左側右鍵,然後在彈出的右鍵菜單裡面選擇:“Toggle Xdebug BreakPoint”來設定。這是因為雙擊設定的是java的斷點,而我們是需要對php設定斷點,必須通過右鍵的方式來設定,這樣設定的才是php的斷點,這樣的斷點XDebug才可以識別。否則,你很容易會出現莫名其妙的無法在斷點處停住的問題。







2.   接下來,開啟我們的xampp的安裝目錄,我的是:C:\xampp\php,用記事本開啟裡面的php.ini設定檔。我們要把裡面的最後一部分關於xdebug的配置前的注釋開啟。修改好之後的如下:







       這樣,我們就開啟了xampp的xdebug調試功能。如果你不是很肯定是否已經開啟了該調試功能,可以自己建立任意一個php項目,在裡面寫上一個檔案,在該檔案裡面寫上:phpinfo();然後執行以下,看看是否有如下輸出:





3.      這樣,我們已經完成了伺服器端的配置。接下來需要在我們的phpeclipse裡面設定一下,讓我們的ide能夠和我們伺服器端的xdebug通訊。跟我來。開啟windows-prefrences下面的phpeclipse,按照如所示 檢查是否配置正確。




4.       接下來就可以測試一下我們的調試功能是否能正常調試了。一起來。在file.php上右擊,選擇debug as->debugconfiguration   




5.   配置 完儲存後,以後調試時,只需要在工具列的那個debug表徵圖下選擇我們剛才的配置就可以進行調試了,如。







6.      這時,我們在phpeclipse裡面內建的瀏覽器或者在ie瀏覽器裡面輸入:http://localhost:8080/phpTest/file.php?XDEBUG_SESSION_START=testID
注意後面的參數:XDEBUG_SESSION_START=testID這裡的testID 就是我們之前在debug配置裡面設定的標識字串。。




7. 最後,停在斷點的效果如所示。





     有了斷點單步調試的功能,接下來我們不管做什麼php網站,都方便很多了。在下一講,我將結合php單步調試給大家深入分析商城開發的原理。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.