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>这种格式的语言,中间不能加空格,否则服务器认,微信这边返回不认。

调试,在微信公众号里面--开发--运维中心--日志查询--公众号被动回复里面,类型选择文本,确实可以看到之前的测试文本回复。

在线调试器:http://debug.fangbei.org/ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值