【微信開發系列】1. python開發微信公眾號訊息回覆開發者模式
阿新 • • 發佈:2019-02-11
背景
最近申請了一個微信公眾號,想根據使用者的訊息進行智慧動態回覆。於是有了這篇文章。 公眾號申請:https://mp.weixin.qq.com。 想根據具體訊息進行智慧動態回覆,需要開啟開發者模式。 開發者模式需要進入開發者中心進行編碼認證。這裡面只講主要的程式碼,關鍵步驟見參考資料。開發環境
環境:python + sae + Flask
myapp.py
開啟後需要認證伺服器,伺服器認證程式碼編寫:import hashlib from flask import Flask, request, render_template, jsonify, make_response import time import _elementtree as ET app = Flask(__name__) app.debug = True @app.route('/weixin/', methods=['GET', 'POST']) def wechat_auth(): if request.method == 'GET': token = '****' # your token query = request.args signature = query.get('signature', '') timestamp = query.get('timestamp', '') nonce = query.get('nonce', '') echostr = query.get('echostr', '') s = [timestamp, nonce, token] s.sort() s = ''.join(s) if hashlib.sha1(s).hexdigest() == signature: return make_response(echostr)
設定訊息回覆
認證完畢後,即可根據微信發來的xml進行訊息解析,然後根據具體訊息進行回覆。 設定訊息回覆的程式碼如下,只需要修改剛才的函式體:@app.route('/weixin/', methods=['GET', 'POST']) def wechat_auth(): cQuestion = CQuestion() xml_recv = ET.fromstring(request.data) ToUserName = xml_recv.find("ToUserName").text FromUserName = xml_recv.find("FromUserName").text Content = xml_recv.find("Content").text cResponse = CResponse() cQuestion.insertIntoSql(ToUserName) cQuestion.insertIntoSql(FromUserName) if Content.strip() == "1": return cResponse.getResponseXml(FromUserName, ToUserName, "Hello, world!") elif Content.strip() == "2": return cResponse.getResponseXml(FromUserName, ToUserName, "Hello, python!") else: return cResponse.getResponseXml(FromUserName, ToUserName, "Hello!")