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 相关文章推荐
详解Python中列表和元祖的使用方法
Apr 25 Python
Python中str.format()详解
Mar 12 Python
python实现12306火车票查询器
Apr 20 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
django删除表重建的实现方法
Aug 28 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
python 利用百度API识别图片文字(多线程版)
Dec 14 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 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初学者头痛的十四个问题
2006/07/12 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
js charAt的使用示例
2014/02/18 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
JS动画定时器知识总结
2018/03/23 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
详解python Todo清单实战
2018/11/01 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
python3跳出一个循环的实例操作
2020/08/18 Python
外贸员简历中的自我评价
2014/03/04 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
庐山导游词
2015/02/03 职场文书
重阳节简报
2015/07/20 职场文书
Python进程间的通信之语法学习
2022/04/11 Python