python微信公众号开发简单流程


Posted in Python onMarch 23, 2018

本文为大家分享了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编写电话薄实现增删改查功能
May 07 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
python按比例随机切分数据的实现
Jul 11 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python将数组n等分的实例
Dec 02 Python
解决python 找不到module的问题
Feb 12 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
python库sklearn常用操作
Aug 23 Python
python3如何将docx转换成pdf文件
Mar 23 #Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 #Python
python字典快速保存于读取的方法
Mar 23 #Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 #Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 #Python
Python自定义线程类简单示例
Mar 23 #Python
python如何实现内容写在图片上
Mar 23 #Python
You might like
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
给Function做的OOP扩展
2009/05/07 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python爬虫开发与项目实战
2020/12/16 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
篮球社团活动总结
2014/06/27 职场文书
商务经理岗位职责
2014/07/30 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
一年级语文教学随笔
2015/08/14 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android