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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python Matplotlib库入门指南
May 18 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
详解Python自建logging模块
Jan 29 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
如何用Python和JS实现的Web SSH工具
Feb 23 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扩展imagick
2014/06/02 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
python入门之基础语法学习笔记
2020/02/08 Python
python高级特性简介
2020/08/13 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
高三毕业评语
2014/12/31 职场文书
工程款申请报告
2015/05/15 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
Python基本知识点总结
2022/04/07 Python