首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python Bottle 框架整合微信 API 實戰指南

     編輯:更多程式設計知識

微信公眾平台開放接口後,開發者可快速接入微信生態。本文以輕量級 Bottle 框架為例,演示如何處理微信服務器驗證、消息接收與回覆,並附帶完整可運行代碼。

微信接口對接核心流程

  1. URL 驗證:微信服務器發送 GET 請求,攜帶 signature、timestamp、nonce、echostr 參數,需原樣返回 echostr。
  2. 消息接收:用戶發送消息時,微信以 POST 請求推送 XML 數據到同一 URL。
  3. 消息回覆:解析 XML,提取 FromUserName、ToUserName、Content 等字段,構造回覆 XML 返回。

注意:微信不提供本地開發環境,需部署到公網服務器調試,但接口極簡,幾次測試即可定型。

完整 Bottle 實現代碼

# -*- coding: utf-8 -*-
from bottle import debug, default_app, run, get, post, request
import sys, os, time, libxml2dom

@get('/')
def index():
    """微信服務器驗證:直接返回 echostr"""
    return request.GET.get('echostr')

@post('/')
def index_post():
    """接收並回覆微信消息"""
    for key, value in request.POST.allitems():
        doc = libxml2dom.parseString(key)
        to_user = doc.xpath('//FromUserName')[0].textContent
        from_user = doc.xpath('//ToUserName')[0].textContent
        # content = doc.xpath('//Content')[0].textContent  # 可選:獲取用戶發送內容
        
        # 構造回覆 XML
        reply_xml = """<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    <FuncFlag>0</FuncFlag>
</xml>""" % (to_user, from_user, int(time.time()), u'我了個去啊')
        return reply_xml

if __name__ == "__main__":
    # 開發模式:啟用 debug、自動重載
    debug(True)
    port = int(sys.argv[1] if len(sys.argv) > 1 else 8888)
    run(host='0.0.0.0', port=port, reloader=True)
else:
    # 生產模式:WSGI 部署
    os.chdir(os.path.dirname(__file__))
    app = default_app()

關鍵點解析

  • XML 解析:使用 libxml2dom 解析微信推送的 XML,通過 XPath 提取字段。
  • CDATA 區塊:回覆 XML 中所有字段值需包裹在 <![CDATA[...]]> 中,防止特殊字符破壞 XML 結構。
  • 雙模式啟動:__main__ 判斷區分開發(run())與生產(WSGI default_app())部署。
  • 端口配置:支持命令行參數指定端口,默認 8888。

部署與調試建議

  1. 將代碼部署到公網服務器(如配合 Nginx + uWSGI)。
  2. 在微信公眾平台「開發者配置」填寫 URL 和 Token,提交驗證。
  3. 3. 關注測試賬號,發送任意消息,觀察回覆「我了個去啊」即成功。 4. 後續可擴展:接入圖文消息、客服接口、模板消息、OAuth 授權等。

總結

Bottle 單文件、零依賴特性極適合微信輕量級接入。核心邏輯僅 50 行,掌握 GET 驗證與 POST XML 交互即可快速上線。建議後續引入 wechatpy 等成熟庫簡化簽名驗證、消息解析與構造。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved