python微信公众号开发简单流程


Posted in Python onMarch 23, 2018

本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下

网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样。真的无语了。只好自己总结一下开发的一些简单流程。

一、注册个微信公众号,这个就不详细说了。

二、登录后台,进入开发中的基本配置,配置下服务器

python微信公众号开发简单流程

填写url和token,url是服务器的地址,token是自己定义的

三、登录服务器开发

网上很多教程用的什么新浪sae啊,webpy都是很久之前的。现在很多东西都变了,所以我没有用,我用的阿里的服务器以及flask做后端。

代码如下

# coding:utf-8
from hashlib import sha1
from flask import Flask, request

token = 'xxxxxx'

app = Flask(__name__)

def get_update(token, timestamp, nonce):
  arguments = ''
  for k in sorted([token, timestamp, nonce]):
    arguments = arguments + str(k)
  m = sha1()
  m.update(arguments.encode('utf8'))
  return m.hexdigest()

def check_signature():
  signature = request.args.get('signature', '')
  timestamp = request.args.get('timestamp', '')
  nonce = request.args.get('nonce', '')
  check = get_update(token, timestamp, nonce)
  return True if check == signature else False

def parse_xml(data):
  try:
    import xml.etree.cElementTree as ET
  except ImportError:
    import xml.etree.ElementTree as ET
    root = ET.fromstring(data)
    datas = '<xml>'
    for child in root:
      if child.tag == 'ToUserName':
        toUser = child.text
        datas += '<FromUserName>%s</FromUserName>' % toUser
      elif child.tag == 'FromUserName':
        fromUser = child.text
        datas += '<ToUserName>%s</ToUserName>' % fromUser
      else:
        datas += '<' + child.tag + '>'
        datas += child.text
        datas += '</' + child.tag + '>'
    datas += '</xml>'
    return datas

@app.route('/weixin', methods=['GET', 'POST'])
def weixinInterface():
  if check_signature:
    if request.method == 'GET':
      echostr = request.args.get('echostr', '')
      return echostr
    elif request.method == 'POST':
      data = request.data
      msg = parse_xml(data)
      return msg
  else:
    return 'signature error'

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

一开始的话微信会让你验证填写的url,验证方式是通过传入时间戳timestamp,随机数nonce,token事先约定好的,echostr随机字符串,以及签名signature,需要根据时间戳,随机数,token的值进行字典序排序,然后用sha1加密得到签名,检验签名是否一致,是的话返回随机字符串echostr。如果校验成功,就可以提交了,提交之后就可以启用服务器配置。

上面的代码还包括了如果用户发送信息给公众号,返回该信息,当然只是很简单的解析xml以及构造xml。其他更复杂的功能需要查询微信的文档。

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

Python 相关文章推荐
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
TensorFlow损失函数专题详解
Apr 26 Python
python 接收处理外带的参数方法
Dec 03 Python
Python GUI编程完整示例
Apr 04 Python
python 爬取学信网登录页面的例子
Aug 13 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
pandas的resample重采样的使用
Apr 24 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
Python如何重新加载模块
Jul 29 Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 Python
关于Numpy之repeat、tile的用法总结
Jun 02 Python
python3如何将docx转换成pdf文件
Mar 23 #Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 #Python
python字典快速保存于读取的方法
Mar 23 #Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 #Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 #Python
Python自定义线程类简单示例
Mar 23 #Python
python如何实现内容写在图片上
Mar 23 #Python
You might like
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
PHP attributes()函数讲解
2019/02/03 PHP
我的javascript 函数链之演变
2011/04/07 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
详解微信UnionID作用
2019/05/15 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
python抓取网页中的图片示例
2014/02/28 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python爬虫超时的处理的实例
2018/12/19 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
python 实现Harris角点检测算法
2020/12/11 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
幼儿教师考核制度
2014/01/25 职场文书
社区宣传标语口号
2015/12/26 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
python利用while求100内的整数和方式
2021/11/07 Python