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中endswith()函数的基本使用
Apr 07 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
Python之py2exe打包工具详解
Jun 14 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
python 模拟登陆163邮箱
Dec 15 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
python中24小时制转换为12小时制的方法
Jun 18 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网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
深入理解PHP中的global
2014/08/19 PHP
php事件驱动化设计详解
2016/11/10 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
Javascript 中的类和闭包
2010/01/08 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
innerText 使用示例
2014/01/23 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
javascript实现表单验证
2016/01/29 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Django密码系统实现过程详解
2019/07/19 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
文职个人求职信范文
2013/09/23 职场文书
土木工程专业大学毕业生求职信
2013/10/13 职场文书
执行力心得体会
2013/12/31 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
参观考察邀请函范文
2014/01/29 职场文书
教师节宣传方案
2014/05/23 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
聘任合同书
2015/09/21 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers