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()
    
    
  • 相关阅读:
    【SAS NOTE】OUTPUT
    【SAS NOTES】_NULL_
    【SAS NOTE】sas 9.2 安装
    【SAS NOTE】FREQ
    纯数学教程 Page 203 例XLI (1)
    纯数学教程 Page 203 例XLI (3)
    纯数学教程 Page 203 例XLI (2)
    Prove Cauchy's inequality by induction
    纯数学教程 Page 325 例LXVIII (15) 调和级数发散
    纯数学教程 Page 325 例LXVIII (15) 调和级数发散
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/6871547.html
Copyright © 2011-2022 走看看