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检测lvs real server状态
Jan 22 Python
Python 正则表达式(转义问题)
Dec 15 Python
python实现堆栈与队列的方法
Jan 15 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
python中entry用法讲解
Dec 04 Python
python 窃取摄像头照片的实现示例
Jan 08 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
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
php session_decode函数用法讲解
2019/05/26 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
python实现中文转换url编码的方法
2016/06/14 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
大学军训感想
2014/02/12 职场文书
高三英语复习计划
2015/01/19 职场文书
小学中队活动总结
2015/05/11 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python