今天看到篇教程,是用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。
這就簡單實現了掃描帶參數的二維碼後,可自定義深入的開發;如根據,把參數定義成不同的內容,根據二維碼參數,來識別出不同的內容,等等。
更多深入功能還不會,用時再借鑑吧。
閱讀更多 馬哥Linux 的文章