zoukankan      html  css  js  c++  java
  • Flask接通微信公众号

    import hashlib
    import xml.etree.ElementTree as ET
    
    from flask import Flask, request
    
    import time
    
    app = Flask(__name__)
    app.debug = True
    
    
    @app.route('/', methods=['GET', 'POST'])
    def haha():
        if request.method == 'GET':
            token = '20124003'  # 微信配置所需的token
            signature = request.args.get('signature', '')
            timestamp = request.args.get('timestamp', '')
            nonce = request.args.get('nonce', '')
            echostr = request.args.get('echostr', '')
            s = ''.join(sorted([timestamp, nonce, token]))
            sha1 = hashlib.sha1()
            sha1.update(bytes(s, "utf8"))
            if sha1.hexdigest() == signature:
                return echostr
        else:
            xml = ET.fromstring(request.data)
            toUser = xml.find('ToUserName').text
            fromUser = xml.find('FromUserName').text
            msgType = xml.find("MsgType").text
            createTime = xml.find("CreateTime")
            if msgType == "text":
                content = xml.find('Content').text
                return reply_text(fromUser, toUser, reply(fromUser, content))
            else:
                return reply_text(fromUser, toUser, "我只懂文字")
    
    
    @app.route("/ok")
    def ok():
        return "i'am ok"
    
    
    def reply_text(to_user, from_user, content):
        """
        以文本类型的方式回复请求
        :param to_user: 
        :param from_user: 
        :param content: 
        :return: 
        """
        return """
        <xml>
            <ToUserName><![CDATA[{}]]></ToUserName>
            <FromUserName><![CDATA[{}]]></FromUserName>
            <CreateTime>{}</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[{}]]></Content>
        </xml>
        """.format(to_user, from_user, 
                   int(time.time() * 1000), content)
    
    
    def reply(openid, msg):
        #简单地翻转一下字符串就回复用户
        return msg[::-1]
    
    
    if __name__ == '__main__':
        app.run()
    
    
  • 相关阅读:
    错误解决mysql
    (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习
    版权控制之zend guard 6.0使用教程
    IP进制站群原理
    多线程更新已排序的Datagridview数据,造成数据错位
    压缩html 减小存储空间
    DataGridView导入导出excel
    软件下载目录
    java反射
    JTA
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/6871547.html
Copyright © 2011-2022 走看看