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比较2个时间大小的实现方法
Apr 10 Python
python字符串与url编码的转换实例
May 10 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
Python中使用ipython的详细教程
Jun 22 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
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
浅析php原型模式
2014/11/25 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
use jscript List Installed Software
2007/06/11 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
轮播图组件js代码
2016/08/08 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
化妆品活动策划方案
2014/05/23 职场文书
2014年度党员自我评议
2014/09/13 职场文书
导游词欢迎词
2015/02/02 职场文书
教师节倡议书2015
2015/04/27 职场文书
2015年环保局工作总结
2015/05/22 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
Pytest之测试命名规则的使用
2021/04/16 Python