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使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
Python使用MD5加密算法对字符串进行加密操作示例
Mar 30 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
Python交互环境下实现输入代码
Jun 22 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
python 对key为时间的dict排序方法
Oct 17 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
Python微信操控itchat的方法
May 31 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
python动态视频下载器的实现方法
Sep 16 Python
python代码如何注释
Jun 01 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中使用Oracle数据库(3)
2006/10/09 PHP
用Flash图形化数据(一)
2006/10/09 PHP
与数据库连接
2006/10/09 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
php获取apk包信息的方法
2014/08/15 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
详解React中合并单元格的正确写法
2019/01/08 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
python 高阶函数简单介绍
2021/02/19 Python
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
大学校园毕业自我鉴定
2014/01/15 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
奖学金个人总结
2015/03/04 职场文书
活动总结书怎么写
2015/05/11 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
基于Python实现将列表数据生成折线图
2022/03/23 Python