转载  Flask 集成 微信 原生写回复 ,至于为什么原生微软的锅!!

分类:发现 2019-05-20T07:58:17    16人阅读   
# 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>这种格式的语言,中间不能加空格,否则服务器认,微信这边返回不认。 调试,在微信公众号里面--开发--运维中心--日志查询--公众号被动回复里面,类型选择文本,确实可以看到之前的测试文本回复。

在线调试器:http://debug.fangbei.org/ 

分享到: