python tornado微信开发入门代码


Posted in Python onAugust 24, 2018

本文实例为大家分享了python tornado微信开发的具体代码,供大家参考,具体内容如下

#微信入门代码
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import tornado.ioloop
import tornado.web
import hashlib
import xml.etree.ElementTree as ET
import time

def check_signature(signature, timestamp, nonce):
  # 微信公众平台里输入的token
  token="linden"
  #字典序排序
  list = [token,timestamp,nonce]
  list.sort()
  sha1=hashlib.sha1()
  map(sha1.update,list)
  hashcode=sha1.hexdigest()
  return hashcode == signature

class MainHandler(tornado.web.RequestHandler):
  def get(self):
    signature = self.get_argument('signature')
    timestamp = self.get_argument('timestamp')
    nonce = self.get_argument('nonce')
    echostr = self.get_argument('echostr')
    if check_signature(signature, timestamp, nonce):
      self.write(echostr)
    else:
      self.write('fail')
  def post(self): 
    body = self.request.body
    data = ET.fromstring(body)
    toUser = data.find('ToUserName').text
    fromUser = data.find('FromUserName').text
    createTime = int(time.time())
    msgType = data.find('MsgType').text
    content = data.find('Content').text
    msgId= data.find("MsgId").text
    # from与to在返回的时候要交换
    textTpl = """<xml>
      <ToUserName><![CDATA[%s]]></ToUserName>
      <FromUserName><![CDATA[%s]]></FromUserName>
      <CreateTime>%s</CreateTime>
      <MsgType><![CDATA[%s]]></MsgType>
      <Content><![CDATA[%s]]></Content>
      <MsgId>%s</MsgId>
      </xml>"""
    out = textTpl % (fromUser, toUser, createTime, msgType, content, msgId)
    self.write(out)

application = tornado.web.Application([
  (r"/", MainHandler),
])

if __name__ == "__main__":
  application.listen(80)
  tornado.ioloop.IOLoop.instance().start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python字符串的常用操作方法小结
May 21 Python
安装Python的教程-Windows
Jul 22 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
对python中Json与object转化的方法详解
Dec 31 Python
Python多线程threading模块用法实例分析
May 22 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
浅析python函数式编程
Sep 26 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
python使用rpc框架gRPC的方法
Aug 24 #Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 #Python
python中文编码与json中文输出问题详解
Aug 24 #Python
详解Django解决ajax跨域访问问题
Aug 24 #Python
Python面向对象之反射/自省机制实例分析
Aug 24 #Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 #Python
Python日志模块logging基本用法分析
Aug 23 #Python
You might like
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
实现PHP搜索加分页
2016/10/12 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
js字符编码函数区别分析
2011/12/28 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
经贸日语专业个人求职信范文
2014/04/29 职场文书
白岩松演讲
2014/05/21 职场文书
学校火灾防控方案
2014/06/09 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
幽默导游词开场白
2015/05/29 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server