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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python解析json文件相关知识学习
Mar 01 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
用tensorflow搭建CNN的方法
Mar 05 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python的pstuil模块使用方法总结
Jul 26 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
python中for循环变量作用域及用法详解
Nov 05 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
Python字典和列表性能之间的比较
Jun 07 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中call_user_func_array的作用
2013/06/07 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
工业设计专业推荐信
2013/10/29 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
思想品德自我评价
2014/02/04 职场文书
费城故事观后感
2015/06/10 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
python tqdm用法及实例详解
2021/06/16 Python