03.07 用 Python 進行微信公眾號開發

今天看到篇教程,是用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

掃描登陸免費的微信測試平臺,填寫接口配置信息:

用 Python 進行微信公眾號開發

注意:微信公眾號接口只支持80端口。所以,在填寫url時我是在阿里雲上用nginx做的一個web服務。

阿里雲主機上的nginx主要部分配置如下:

用 Python 進行微信公眾號開發

第二步:驗證消息的確來自微信服務器(即驗證服務器地址的有效性):

開發者提交信息後,微信服務器將發送GET請求到填寫的服務器地址url上,GET請求攜帶4個參數:

1. signature:微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數;
2.timestamp:時間戳;
3.nonce:隨機數;
4.echostr:隨即字符串;

開發者通過檢驗signature對請求進行校驗,若確認此處get請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗;

阿里雲主機上編寫python代碼,(以tonado框架為例)實現驗證:

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

運行代碼:

python wechat.py

然後,回到微信開發平臺,在填寫完接口配置信息後,點擊提交;一切正常,提交後會顯示配置成功;

用 Python 進行微信公眾號開發

下面,就可以根據個人用戶關注開發的公眾號所要實現哪些需求和微信的api文檔開發相關功能了。

示例一:簡單文本信息

個人用戶關注公眾號後,用戶輸入字符串,公眾號回顯什麼字符串;

具體還要參考微信api文檔:消息管理部分

python代碼:

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

運行代碼:

python wechat.py

然後,在微信公眾平臺上,找到測試號二維碼,掃描關注後,首次關注時,手機微信客戶端就會收到自動推送的信息,即顯示i like python。

然後,客戶端發送字符串測試回顯功能:

用 Python 進行微信公眾號開發

手機關注公眾號後,打開對話框,隨意輸入字符,回顯相同內容,則表示測試成功(僅實現文本的回顯,因為微信對於不同類型的信息,有不同的配置要求,如要接收或發送圖片、音頻、視頻等)。

實現能發送或接收圖片信息,則修改部分代碼,其它部分不變

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

運行後,再回到手機微信客戶端,發送笑臉圖片等,測試回顯相同的圖片即成功。

示例三:掃描公眾號內部生成的帶參數的二維碼

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

用 Python 進行微信公眾號開發

說明: 此代碼需要在本地虛擬機上和阿里雲主機上同時運行,進行相關測試; 本地運行後,在本地瀏覽器訪問,(目的是為了生成二維碼): http://192.168.1.250:8000/qrcode?sid=8000

然後,會生成二維碼。

手機微信掃描二維碼後,會顯示:您掃描是的8000。

這就簡單實現了掃描帶參數的二維碼後,可自定義深入的開發;如根據,把參數定義成不同的內容,根據二維碼參數,來識別出不同的內容,等等。

更多深入功能還不會,用時再借鑑吧。


分享到:


相關文章: