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 布尔操作实现代码
Mar 23 Python
Python if语句知识点用法总结
Jun 10 Python
python实现简易内存监控
Jun 21 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
8段用于数据清洗Python代码(小结)
Oct 31 Python
Python decorator拦截器代码实例解析
Apr 04 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 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
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
js实现日历的简单算法
2017/01/24 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
Python 正则表达式入门(中级篇)
2016/12/07 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Django添加feeds功能的示例
2018/08/07 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
打架检讨书800字
2014/01/10 职场文书
房产买卖委托公证书
2014/04/04 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
应届生求职信
2014/05/31 职场文书
幼儿园个人总结
2015/02/28 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
JS中如何优雅的使用async await详解
2021/10/05 Javascript
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers