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 相关文章推荐
wxPython中文教程入门实例
Jun 09 Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
Pycharm远程调试openstack的方法
Nov 21 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
Django实现列表页商品数据返回教程
Apr 03 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 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
FCKeditor添加自定义按钮
2008/03/27 PHP
PHP 手机归属地查询 api
2010/02/08 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
小程序实现投票进度条
2019/11/20 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
简单理解Python中基于生成器的状态机
2015/04/13 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
python 获取网页编码方式实现代码
2017/03/11 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
python实现大文本文件分割
2019/07/22 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
酒店销售经理岗位职责
2014/01/31 职场文书
工作求职信
2014/07/04 职场文书
给老婆的检讨书
2015/01/27 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android