python+flask+SAE 微信公共平台开发的小小的demo

很简单的一个demo,不过在完成之前也走了一些弯路。

SAE开发平台的申请就不说了,很简单,也比较方便。

需要说下的是微信token的验证,平台需要实名认证之后才可以验证成功。

demo代码如下:

# -*- coding:utf-8 -*-                             #中文编码
import sys
reload(sys)                                        #不加这部分好像处理中文还是会出问题
sys.setdefaultencoding('utf-8')

import time  
from flask import Flask,request, make_response  
import hashlib  
import xml.etree.ElementTree as ET

app = Flask(__name__)
app.debug = True


@app.route('/')                                    #网址
def index():
    return 'Index Page'

@app.route('/weixin/', methods = ['GET', 'POST'] ) 
def wechat_auth():                                 #处理微信请求的处理函数,get方法用于认证,post方法取得微信转发的数据
    if request.method == 'GET':
        token='liyang'
        data = request.args
        signature = data.get('signature','')
        timestamp = data.get('timestamp','')
        nonce = data.get('nonce','')
        echostr = data.get('echostr','')
        s = [timestamp,nonce,token]
        s.sort()
        s = ''.join(s)
        if (hashlib.sha1(s).hexdigest() == signature):
            return make_response(echostr)
    else:
        rec = request.stream.read()                     #接收消息
        xml_rec = ET.fromstring(rec)                    #用xml处理
        tou = xml_rec.find('ToUserName').text 
        fromu = xml_rec.find('FromUserName').text
        content = xml_rec.find('Content').text
        
        content = message_del(content)                   #调用处理程序
        xml_rep = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>"
        response = make_response(xml_rep % (fromu,tou,str(int(time.time())), content))
        response.content_type='application/xml'
        return response


def message_del(content):                              #次数是自定义的消息处理函数,自由发挥
    if "baidu" in content:                            
        message = "www.baidu.com"
    elif "金牛" in content:
        message = "贪财好色小心眼"
    else:
        message = "我不知道!"
    return message


if __name__ == '__main__':
    app.run()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值