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中的一些类型转换函数小结
Feb 10 Python
Python中的异常处理学习笔记
Jan 28 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
详解Python中最难理解的点-装饰器
Apr 03 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
简单了解django缓存方式及配置
Jul 19 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 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
星际原理概述
2020/03/04 星际争霸
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
php读取csc文件并输出
2015/05/21 PHP
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
学校门卫工作职责
2013/12/07 职场文书
自荐信范文
2013/12/10 职场文书
优秀小学生家长评语
2014/01/30 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript