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批量修改文件后缀的方法
Jan 26 Python
Python实现删除Android工程中的冗余字符串
Jan 19 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
代码实例讲解python3的编码问题
Jul 08 Python
python多线程同步之文件读写控制
Feb 25 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
python模块如何查看
Jun 16 Python
python中subplot大小的设置步骤
Jun 28 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+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
jQuery替换节点元素的操作方法
2018/03/18 jQuery
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python中快速进行多个字符替换的方法小结
2016/12/15 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
python如何设置静态变量
2020/09/07 Python
python3中编码获取网页的实例方法
2020/11/16 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
销售主管岗位职责范本
2014/02/14 职场文书
《争吵》教学反思
2014/02/15 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL