目录

一、注册公众号
二、启用开发者
三、配置服务器配置
四、开发自己的需求
五、写在最后

一、注册公众号

具体的注册过程,根据官方文档一步一步来即可。这里需注意的是订阅号还是服务号;有些比较好的开发接口订阅号是没有的,但是注册服务号需要企业认证之类的,比较复杂。

二、启用开发者

在公众号后台打开启用即可。

三、配置服务器配置

注:整个过程是动态的,是得先把后端的web和代码设置好,再来配置服务器配置,服务器配置的成功与否是会正儿八经的请求你填的这个URL去做校验的。刚开始的时候不太了解,以为只是填一下信息就行,一直token错误,最好的办法是边开发,边调试。

1、配置服务器的四个参数

              
1)URL:请求到web服务器的地址
2)Token:任意填写          
3)EncodingAESKey:随机生成 
4)消息加解密方式:明文方式   
 
2、Web请求过去的四个参数
 
/?signature=xxx&echostr=xxx&timestamp=xxx&nonce=xxx
 
1)signature 加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数;
      signature 加密签名 = token(开发者)+ timestamp参数 + nonce参数
2)echostr 随机字符串
3)timestamp 时间戳
4)nonce 随机数
 
3、后端服务器
 
后端服务器将通过检验signature对请求进行校验,校验方法如下:
 
1)获取请求的四个参数signature、echostr、timestamp、nonce
2)对token(代码里指定)、timestamp参数、nonce参数进行字典排序
3)将三个参数字符串拼接成一个字符串并进行sha1加密
4)对加密后的字符串与请求获取的signature对比,如果一样,返回echostr,对接成功
 
4、代码实现
 
from flask import Flask
from flask import request
import hashlib app = Flask(__name__) @app.route('/wechat')
def wechat(): # 1、 获取携带的 signature、timestamp、nonce、echostr
signature = request.args.get("signature", "")
timestamp = request.args.get("timestamp", "")
nonce = request.args.get("nonce", "")
echostr = request.args.get("echostr", "")
print(signature, timestamp, nonce, echostr) token="xxxxxxxxx" # 2、 进行字典排序
data = [token, timestamp, nonce]
data.sort() # 3、三个参数拼接成一个字符串并进行sha1加密
temp = ''.join(data)
sha1 = hashlib.sha1(temp.encode('utf-8'))
hashcode = sha1.hexdigest()
print(hashcode) # 4、对比获取到的signature与根据上面token生成的hashcode,如果一致,则返回echostr,对接成功
if hashcode == signature:
return echostr
else:
return "error" if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)

五、写在最后

在平凡中坚持前行,总有一天会遇见不一样的自己。
 
写博客记录、思考、总结,趟过的坑不趟第二遍。
 

所有的文章,皆同步在公众号“运维汪”,可关注;也可加入“不扯淡,专注于技术”的QQ群:753512236

Flask+微信公众号开发(接入指南)的更多相关文章

  1. Flask 微信公众号开发

    公众号接口 1. 公众号消息会话 目前公众号内主要有这样几类消息服务的类型,分别用于不同的场景. 群发消息 公众号可以以一定频次(订阅号为每天1次,服务号为每月4次),向用户群发消息,包括文字消息.图 ...

  2. 细数Python Flask微信公众号开发中遇到的那些坑

    最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...

  3. Java 微信公众号开发--- 接入微信

    开发微信公众号在没有正式的公众平台账号时,我们可以使用测试平台账号--- 测试平台申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandb ...

  4. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

  5. 微信公众号开发C#系列-2、微信公众平台接入指南

    概述 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微信服务器将接收到的消息post到用户接入时填写的url中,在url处理程序中,首先 ...

  6. [.NET] 使用 Senparc.Weixin 接入微信公众号开发:简单实现自动回复

    使用 Senparc.Weixin 接入微信公众号开发:简单实现自动回复 目录 一.前提 二.基本配置信息简析 三.配置服务器地址(URL) 四.请求处理 一.前提 先申请微信公众号的授权,找到或配置 ...

  7. 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转

    线程安全使用(四)   这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...

  8. 微信公众号开发--.net core接入

    .net进行微信公众号开发的例子好像比较少,这里做个笔记 首先,我们需要让微信能访问到我们的项目,所以要么需要有一个可以部署项目的连接到公网下的服务器,要么可以通过端口转发将请求转发到我们的项目,总之 ...

  9. C#微信公众号开发系列教程三(消息体签名及加解密)

    http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...

随机推荐

  1. 关于使用swagger的问题

    近来在公司实现,接触到不少新的工具框架,今天见识到了一个新的工具,它的存在好像是情理之中的,但是以前就没有遇到这东西.那就是swagger,它的功能就是把你写的controller的内容都集合到一起方 ...

  2. 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之MySQL配置

    mysql高并发配置 要在mysqld下设置 1. 修改back_log参数值:由默认的50修改为500.(每个连接256kb,占用:125M) back_log=500 back_log值指出MyS ...

  3. Netty 源码解析(六): Channel 的 register 操作

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第六篇. 接下来的时间灯塔君持续更新Netty系列一共九篇   Netty 源码解析(一 ):开始 Netty ...

  4. VMware实现宿主机和虚拟机处于同一网段

    打开虚拟网络编辑器 选择VMnet0桥接模式,在VMnet信息中,选择可以选择的网卡,然后保存. 打开虚拟机设置,在“硬件”选项卡的网络适配器中选择桥接模式即可.

  5. 如何Simplest搭建个人博客

    前期 例如wordpress.hexo.hugo-- 准备 安装Node.js,安装Git,进入Hexo网站.进入Github网站进注册和登录. 建议买个阿里云服务器(学生最近好像是免费的) 开始搭建 ...

  6. linux安装phantomjs

    一.下载PhantomJS: 从官网http://phantomjs.org/download.html下载linux64位的安装包即  phantomjs-2.1.1-linux-x86_64.ta ...

  7. 权益质押(Staking):这是关于什么的?

    我们最近发表了三篇讲述Fetch.AI分类帐本的文章.这些概述: 我们的权益质押计划的主要特点和验证器的作用 影响我们设计权益质押模型设计的因素 我们的创新共识协议将如何改变用户体验 这些文章包含大量 ...

  8. ArrayList源码分析-jdk11 (18.9)

    目录 1.概述 2.源码分析 2.1参数 2.2 构造方法 2.2.1 无参构造方法 2.2.2 构造空的具有特定初始容量值方法 2.2.3构造一个包含指定集合元素的列表,按照集合的迭代器返回它们的顺 ...

  9. node+express实现简单的增删改查

    var express = require('express'); var bodyParser = require("body-parser"); var cors = requ ...

  10. Python并发编程06 /阻塞、异步调用/同步调用、异步回调函数、线程queue、事件event、协程

    Python并发编程06 /阻塞.异步调用/同步调用.异步回调函数.线程queue.事件event.协程 目录 Python并发编程06 /阻塞.异步调用/同步调用.异步回调函数.线程queue.事件 ...