Python微信后臺開發(fā)--環(huán)境搭建與接入指南

0x00 背景及介紹


申請一個微信公眾平臺訂閱號专执,將后臺接入到服務(wù)器上蜗顽,驗證服務(wù)器地址的有效性验懊,實現(xiàn)簡單的業(yè)務(wù)邏輯,根據(jù)用戶發(fā)送不同類型的消息做出不同的反應(yīng)嚷堡。

0x01 語言和框架


0x02 參考文檔


0x03 服務(wù)器配置


  • 系統(tǒng):CentOS
  • 配置過程:
    1. 更新系統(tǒng)
yum update
  1. 安裝python依賴包
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
  1. 安裝python和pip及更新
yum install python
yum install python-pip
(sudo) pip install --upgrade pip
  1. 安裝Django框架
pip install Django
  1. 安裝wechat-python-sdk開發(fā)包
pip install wechat-sdk
  1. 新建一個Django實例
django-admin.py startproject PROJECT_NAME
cd PROJECT_NAME
python manage.py startapp APP_NAME
python manage.py makemigrations
python manage.py migrate
  1. 添加url規(guī)則(urls.py)
urlpatterns = [
        url(r'^wechat/', views.wechat_home),
]
  1. 編寫views邏輯(views.py)
#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from django.http.response import HttpResponse, HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt
from wechat_sdk import WechatConf
from wechat_sdk import WechatBasic
from wechat_sdk.exceptions import ParseError
from wechat_sdk.messages import (TextMessage, VoiceMessage, ImageMessage, VideoMessage, LinkMessage, LocationMessage, EventMessage, ShortVideoMessage)
conf = WechatConf(
        token='YOUR_TOKEN_HERE',
        appid='YOUR_APPID',
        appsecret='YOUR_APPSECRET',
        encrypt_mode='YOUR_MODE',
        encoding_aes_key='YOUR_AES_KEY'
)
@csrf_exempt
def wechat_home(request):
        signature = request.GET.get('signature')
        timestamp = request.GET.get('timestamp')
        nonce = request.GET.get('nonce')
        wechat_instance = WechatBasic(conf=conf)
        if not wechat_instance.check_signature(signature=signature, timestamp=timestamp, nonce=nonce):
            return HttpResponseBadRequest('Verify Failed')
        else:
            if request.method == 'GET':
                response = request.GET.get('echostr', 'error')
            else:
                try:
                    wechat_instance.parse_data(request.body)    
                    message = wechat_instance.get_message()         
                    if isinstance(message, TextMessage):            
                        reply_text = 'text'
                    elif isinstance(message, VoiceMessage):         
                        reply_text = 'voice'
                    elif isinstance(message, ImageMessage):         
                        reply_text = 'image'
                    elif isinstance(message, LinkMessage):          
                        reply_text = 'link'
                    elif isinstance(message, LocationMessage):      
                        reply_text = 'location'
                    elif isinstance(message, VideoMessage):         
                        reply_text = 'video'
                    elif isinstance(message, ShortVideoMessage):    
                        reply_text = 'shortvideo'
                    else:
                        reply_text = 'other'
                    response = wechat_instance.response_text(content=reply_text)
                except ParseError:  
                    return HttpResponseBadRequest('Invalid XML Data')
            return HttpResponse(response, content_type="application/xml")
  1. 開啟django app蝗罗,后臺掛載在80端口
sudo python manage.py runserver 0.0.0.0:80 &

0x04 微信后臺配置


  • 記錄APPID和APPSecret填入views.py的conf屬性
  • 填寫服務(wù)器配置
    • 注意URL最后帶上/,否則django會報POST URL error
    • 自定義token蝌戒,填入views.py的conf屬性
    • 自定義EncodingAESKey串塑,填入views.py的conf屬性
基本配置

0x05 遇到的坑


  1. runserver后本地能夠訪問,外網(wǎng)不能訪問
  • 綁定ip到0.0.0.0北苟,設(shè)置為對公監(jiān)聽即可
  1. 輸入中文無法響應(yīng)
  • import os后設(shè)置編碼為utf8
  1. 端口號被占用
  • ps aux | grep manage后然后kill -9 相應(yīng)進程號

0x06 后記


  • 能夠識別不同的消息類型并進行相應(yīng)回復(fù)


    實現(xiàn)效果圖
  • 代碼的功能還有待完善桩匪,結(jié)構(gòu)和邏輯也可以再設(shè)計得更清晰一些

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市友鼻,隨后出現(xiàn)的幾起案子傻昙,更是在濱河造成了極大的恐慌,老刑警劉巖彩扔,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妆档,死亡現(xiàn)場離奇詭異,居然都是意外死亡借杰,警方通過查閱死者的電腦和手機过吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纤虽,你說我怎么就攤上這事乳绕。” “怎么了逼纸?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵洋措,是天一觀的道長。 經(jīng)常有香客問我杰刽,道長菠发,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任贺嫂,我火速辦了婚禮滓鸠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘第喳。我一直安慰自己糜俗,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布曲饱。 她就那樣靜靜地躺著悠抹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扩淀。 梳的紋絲不亂的頭發(fā)上楔敌,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音驻谆,去河邊找鬼卵凑。 笑死,一個胖子當著我的面吹牛旺韭,可吹牛的內(nèi)容都是我干的氛谜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼区端,長吁一口氣:“原來是場噩夢啊……” “哼值漫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起织盼,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤杨何,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沥邻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體危虱,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年唐全,在試婚紗的時候發(fā)現(xiàn)自己被綠了埃跷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕊玷。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弥雹,靈堂內(nèi)的尸體忽然破棺而出垃帅,到底是詐尸還是另有隱情,我是刑警寧澤剪勿,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布贸诚,位于F島的核電站,受9級特大地震影響厕吉,放射性物質(zhì)發(fā)生泄漏酱固。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一头朱、第九天 我趴在偏房一處隱蔽的房頂上張望运悲。 院中可真熱鬧,春花似錦髓窜、人聲如沸扇苞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脖苏,卻和暖如春程拭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棍潘。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工恃鞋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亦歉。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓恤浪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肴楷。 傳聞我的和親對象是個殘疾皇子水由,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 經(jīng)過對django的初步學(xué)習,我們已經(jīng)對后臺的基本流程以及django的運作有了一定的了解赛蔫,但是這還不足夠砂客,dja...
    coder_ben閱讀 3,830評論 8 34
  • 此段內(nèi)容簡要來自自強學(xué)堂的教程詳情請查詢自強學(xué)堂 一、 后臺的運作流程 接收request請求 處理數(shù)據(jù) 獲取請求...
    coder_ben閱讀 5,246評論 6 56
  • 結(jié)合之前的Python模擬登錄爬取Mysise學(xué)生管理系統(tǒng)的信息呵恢,在新浪SAE服務(wù)器上面做了一個獲取學(xué)生管理系統(tǒng)的...
    秋雨仲夏閱讀 1,882評論 0 1
  • 偌大的城市渗钉,也是因為公交車彤恶,才變得方便快捷。去到外地,總喜歡坐坐當?shù)氐墓卉嚿耄粊砜纯催@城市的外貌芒炼,聽聽不一樣的站...
    淡墨魚兒閱讀 192評論 0 2
  • 你好啊焕议,李雨。 很高興認識你弧关。 讀了那么久王小波寫給給李銀河的情書盅安, 干脆我也東施效顰一次,不要嘲笑世囊! 中午你打電...
    給小老虎書閱讀 359評論 0 0