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批量生成本地ip地址的方法
Mar 23 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
Django接受前端数据的几种方法总结
Nov 04 Python
python实现图书馆研习室自动预约功能
Apr 27 Python
Django中使用第三方登录的示例代码
Aug 20 Python
基于Python的PIL库学习详解
May 10 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 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中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
轻松实现php文件上传功能
2017/02/17 PHP
Maps Javascript
2007/01/22 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
总结4个方面优化Vue项目
2019/02/11 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
python装饰器练习题及答案
2019/11/01 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
宣传活动总结范文
2014/07/01 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书