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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
Python多线程编程简单介绍
Apr 13 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
PyCharm配置mongo插件的方法
Nov 30 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
基于Python实现简单学生管理系统
Jul 24 Python
Pandas数据分析的一些常用小技巧
Feb 07 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
JS定时器实例详细分析
2013/10/11 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
使用Python对Csv文件操作实例代码
2017/05/12 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
Python如何实现线程间通信
2020/07/30 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
业务副厂长岗位职责
2014/01/03 职场文书
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
离婚协议书格式
2014/11/21 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
小学数学教学随笔
2015/08/14 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android