作者 crystaleone | 職位 馬哥教育金牌助教
今天看到篇教程,是用python開發微信公眾號的,覺得有意思,就敲程式碼實現了一下,成功後更覺得好玩,故記錄,方便開發深入時使用。
基礎背景介紹
首先得有個人微訊號(沒有自行註冊),為方便測試學習;
其次,還要註冊微信公眾號,微信公眾號不止一種,是分多種的,具體詳情見官方說明,但僅測試學習時可先不註冊公眾號,(需要用個人微訊號掃描登陸測試公眾平臺)利用微信提供的測試平臺介面即可:
微信公眾號說明:http://kf.qq.com/faq/120911VrYVrA130805byM32u.html
微信公眾號註冊站點:https://mp.weixin.qq.com/
免費測試公眾平臺:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
微信開發者檔案:https://mp.weixin.qq.com/wiki?t=resource/res_main&id;=mp1445241432
正文開始
說明:最好使用公網ip主機和備案的域名進行測試,本文測試使用的阿裡雲主機有公網ip,域名備案遇到坑了,買了域名無法在北京阿裡雲上備案,所以沒有使用域名。
接入微信公眾平臺
其實,微信api介面使用,這裡主要是參考官網的說明部署的,步驟有點像曾經寫過的一篇用zabbix實現微信報警的配置;想玩好了,除了要對使用的哪種語言本身熟悉,還要就是熟讀微信的api介面檔案了。
第一步:填寫伺服器配置nxinx
掃描登陸免費的微信測試平臺,填寫介面配置資訊:
註意:微信公眾號介面只支援80埠。所以,在填寫url時我是在阿裡雲上用nginx做的一個web服務。
阿裡雲主機上的nginx主要部分配置如下:
第二步:驗證訊息的確來自微信伺服器(即驗證伺服器地址的有效性):
開發者提交資訊後,微信伺服器將傳送GET請求到填寫的伺服器地址url上,GET請求攜帶4個引數:
1. signature:微信加密簽名,signature結合了開發者填寫的token引數和請求中的timestamp引數、nonce引數;
2.timestamp:時間戳;
3.nonce:隨機數;
4.echostr:隨即字串;
開發者透過檢驗signature對請求進行校驗,若確認此處get請求來自微信伺服器,請原樣傳回echostr引數內容,則接入生效,成為開發者成功,否則接入失敗;
阿裡雲主機上編寫python程式碼,(以tonado框架為例)實現驗證:
執行程式碼:
python wechat.py
然後,回到微信開發平臺,在填寫完介面配置資訊後,點選提交;一切正常,提交後會顯示配置成功;
下麵,就可以根據個人使用者關註開發的公眾號所要實現哪些需求和微信的api檔案開發相關功能了。
示例一:簡單文字資訊
個人使用者關註公眾號後,使用者輸入字串,公眾號回顯什麼字串;
具體還要參考微信api檔案:訊息管理部分
python程式碼:
執行程式碼:
python wechat.py
然後,在微信公眾平臺上,找到測試號二維碼,掃描關註後,首次關註時,手機微信客戶端就會收到自動推送的資訊,即顯示i like python。
然後,客戶端傳送字串測試回顯功能:
手機關註公眾號後,開啟對話方塊,隨意輸入字元,回顯相同內容,則表示測試成功(僅實現文字的回顯,因為微信對於不同型別的資訊,有不同的配置要求,如要接收或傳送圖片、音訊、影片等)。
示例二:微信自帶的圖片訊息收發
實現能傳送或接收圖片資訊,則修改部分程式碼,其它部分不變
執行後,再回到手機微信客戶端,傳送笑臉圖片等,測試回顯相同的圖片即成功。
示例三:掃描公眾號內部生成的帶引數的二維碼
說明: 此程式碼需要在本地虛擬機器上和阿裡雲主機上同時執行,進行相關測試; 本地執行後,在本地瀏覽器訪問,(目的是為了生成二維碼): http://192.168.1.250:8000/qrcode?sid=8000
然後,會生成二維碼,這時再用微信掃描改二維碼:
手機微信掃描上面的二維碼後,會顯示:您掃描是的8000。
這就簡單實現了掃描帶引數的二維碼後,可自定義深入的開發;如根據,把引數定義成不同的內容,根據二維碼引數,來識別出不同的內容,等等。
更多深入功能還不會,用時再借鑒吧。
作者:crystaleone
部落格:http://blog.51cto.com/linsj
《Python人工智慧和全棧開發》2018年07月23日即將在北京開課,120天衝擊Python年薪30萬,改變速約~~~~
*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。
– END –
更多Python好文請點選【閱讀原文】哦
↓↓↓