1. 程式人生 > >Flask在新浪SAE部署服務 寫微信公眾平臺回覆的功能

Flask在新浪SAE部署服務 寫微信公眾平臺回覆的功能

書接上文。

myapp.py程式碼:

# encoding=utf-8 註釋可用中文
from flask import Flask, request, make_response
import hashlib
import xml.etree.ElementTree as ET
import time

app = Flask(__name__)
app.debug = True
@app.route('/')
def hello_world():
    return 'Hello World!'
@app.route('/weixin', methods=['GET', 'POST'])
def 
check(): if request.method == 'GET': #如果是get方法--從伺服器請求資料 token = r'cdedunews' # 這裡的cdedunews就是微信裡的token query = request.args #請求連結中的引數 signature = query.get('signature', '') echostr = query.get('echostr', '') timestamp = query.get('timestamp', '') nonce = query.get('nonce'
, '') s = [timestamp, nonce, token] s.sort() s = ''.join(s) if (hashlib.sha1(s).hexdigest()==signature): return make_response(echostr) else: return "Access denied." else: #如果是post方法--向伺服器提交資料 xml_recv = ET.fromstring(request.data) #
獲取使用者傳送的原始資料 ToUserName = xml_recv.find("ToUserName").text #獲取之前傳送的 目標使用者(公眾號) FromUserName = xml_recv.find("FromUserName").text #獲取之前的 訊息來源使用者 Content = xml_recv.find("Content").text #獲取之前 向伺服器傳送的訊息 #構造xml格式,回覆內容 reply = """<xml> <ToUserName> <![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>""" response = make_response(reply % (FromUserName, ToUserName, str(int(time.time())), Content)) response.content_type = 'application/xml' return response #返回這個xml訊息 if __name__ == '__main__': app.run()


以上程式碼,在微信公眾號已實現將原內容原封不動回覆。
之前遇到的,該公眾號暫時無法什麼什麼,是因為<XML>這種格式的語言,中間不能加空格,否則伺服器認,微信這邊返回不認。

除錯,在微信公眾號裡面--開發--運維中心--日誌查詢--公眾號被動回覆裡面,型別選擇文字,確實可以看到之前的測試文本回復。