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


Posted in Python onMarch 09, 2020

本文为大家分享了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微信公众号开发流程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
Django学习笔记之Class-Based-View
Feb 15 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
NumPy排序的实现
Jan 21 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
聊聊python中的循环遍历
Sep 07 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 Python
Python 面向对象部分知识点小结
Mar 09 #Python
Django跨域资源共享问题(推荐)
Mar 09 #Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 #Python
Python模块相关知识点小结
Mar 09 #Python
Django操作session 的方法
Mar 09 #Python
Python装饰器用法与知识点小结
Mar 09 #Python
Django中的session用法详解
Mar 09 #Python
You might like
小文件php+SQLite存储方案
2010/09/04 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
python监控文件或目录变化
2016/06/07 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python实现GIF图倒放
2020/07/16 Python
Django中template for如何使用方法
2021/01/31 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
质检员的岗位职责
2013/11/15 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
实习证明格式范文
2014/10/14 职场文书
党员作风建设整改方案
2014/10/27 职场文书
火烧圆明园观后感
2015/06/03 职场文书