ps:暂未完善,先做记录。本文核心讲外网穿透及微信Token验证

阅读 基本开发流程

申请个人公众号-订阅号

微信公众平台https://mp.weixin.qq.comhttps://mp.weixin.qq.com

自定义菜单

微信公众平台当然不只是给开发人员使用的,它提供了很多非技术人员可在UI界面上交互操作的功能模块。

如配置消息回复、自定义菜单、发布文章等

微信Token验证

微信提供了非开发人员也可自定义编辑的菜单UI,但是如果我们想自定义脚本开发呢?那么则需要对接微信SDK进行开发。

说明:由于微信服务器只是起到转发消息的作用,接收消息后的处理在我们本地,所以需要连接到外网,故此进行外网穿透

流程:

一:进行外网穿透

1.下载natapp客户端 到本地任意路径都可以,配置config.ini

[default]
authtoken=01d12c4dc7xxxxx
clienttoken=
log=none
loglevel=ERROR
http_proxy=

a.购买 隧道 和 二级域名

这里注意最好购买支持https的隧道 和有SSL证书的二级域名,价格都不贵,隧道允许购买多个

b.在 我的隧道 里进行配置

配置好的隧道如下

注意:我们需要把 authtoken 拷贝到ini里对应的authToken

这时我们运行natapp.exe即可看到

到这里natapp配置完成

2.我们找到微信公众号测试平台 公众平台测试号Token验证 进行配置URL和Token

Tips:这里点提交是不会成功的,下面会讲到 。Token需要在下文使用到(WECHAT_TOKEN )

我们把Forwarding里https链接拷贝到浏览器后可以看到自动生成了新的url   *******/http/in

这里我们把浏览器新的url链接拷贝到 公众号测试平台-接口配置信息 对应的URL上

下面需要使用到   appID、appsecret、Token、URL 在代码里进行验证

为什么要验证?请看  微信Token验证

3.验证微信Token

使用 VSCode、Python3.10 版本不重要,如果缺失引用需要 pip 安装对应包(安装Python记得勾选pip)

pip install flask

pip install requests

如未学过Python,推荐廖雪峰老师的网站,简单易学

Python代码如下:

from flask import Flask, request, abort, render_template
import hashlib# 常量
WECHAT_TOKEN = "xxxxxxx"  # 微信的token令牌,和配置时的token要统一
WECHAT_APPID = "xxxxxxx"  # appID
WECHAT_APPSECRET = "xxxxxxxx"  # AppSecretapp = Flask(__name__)#运行后执行的是http://127.0.0.1:80/http/in 链接
@app.route("/http/in", methods=["GET", "POST"])
def wechat():"""对接微信公众号服务器"""print('对接微信公众号服务器')# 1、提取微信服务器发送的参数signature = request.args.get("signature")timestamp = request.args.get("timestamp")nonce = request.args.get("nonce")# 2、校验参数,确定数据源是不是微信后台if not all([signature, timestamp, nonce]):abort(400)# 3、按照微信的流程进行计算签名,进行sha1加密, 得到正确的签名值li = [WECHAT_TOKEN, timestamp, nonce]li.sort()tmp_str = "".join(li)sign = hashlib.sha1(tmp_str.encode("utf-8")).hexdigest()# 4、判断计算的签名值与请求的签名参数是否等,如果相同,则证明请求来自微信服务器if signature != sign:abort(403)else:# 5、表示是第一次接入微信服务器的验证if request.method == "GET":echostr = request.args.get("echostr")if not echostr:abort(400)return echostrif __name__ == '__main__':app.run(host="127.0.0.1", port=8080, debug=True) #127.0.0.1是localhost本地服务器 8080端口要和natapp上配置的端口保持一致。运行natapp的时候可看到

到这里基本我们都写完配置完了,最后开始运行

a.运行Python脚本,推荐快捷鼠标右键Run Python File In Terminal ,如果有条件可断点查看执行过程

b.运行natapp.exe (如果先运行了natapp.exe,Python会提示不允许套接字也就是端口占用)

c.点击微信公众号测试平台Token测试号管理里的【提交】按钮

Tips:有条件的同学可以用断点调试python脚本,看接收到的数据

好了,到这里微信Token配置完成,提交按钮已消失,哎,挺不容易的

二:

参考文献:

1. 关于装饰器@app.route的正解 -->         Python装饰器@app.route() Flask

2.关于外网穿透的参考 -->    Ngrok外网穿透

3.微信公众号开发详细流程--> 微信公众号开发基本流程

Python(三)微信公众号开发相关推荐

  1. 使用Python进行微信公众号开发(三)回复消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  2. 使用Python进行微信公众号开发(二)接收消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  3. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  4. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  5. 基于python的微信公众号开发

    最近想自学服务器方面的知识,用微信公众号开发来练手.阅读了一些文章,实践以后总结一下. 租了腾讯云服务器,操作系统为 Ubuntu Server 14.04.1 LTS 64位,分配了一个公网IP地址 ...

  6. python训练营微信公众号真实性_用python进行微信公众号开发(仅测试学习)

    今天看到篇教程,是用python开发微信公众号的,觉得有意思,就敲代码实现了一下,成功后更觉得好玩,故记录,方便开发深入时使用. 基础背景介绍: 首先得有个人微信号(没有自行注册),为方便测试学习: ...

  7. Python进行微信公众号开发

    一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提示注册即可 注意:本文样例使用个人公众号,由于个人公众号没有接口权限,自定义菜单无法进行开发,同 ...

  8. python 微信公众号开发[1] 后台服务器端配置与公众号开发配置

    更新时间:2020年3月7日 微信公众号开发的硬件必备条件:(1)申请一个公众号 (2)有公网ip的服务器(最好是阿里云,腾讯云等的云服务器)(3)解析到(2)中服务器地址的域名(阿里云,腾讯云购买即 ...

  9. Python 微信公众号开发

    大三上的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的.http://blog.csdn.net/marksinoberg/article/details/54235271 后来服务器到 ...

  10. Python微信公众号开发

    摘要: 大三上的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的.http://blog.csdn.net/marksinoberg/article/details/54235271 后来 ...

最新文章

  1. android 自定义键盘高度不对,NVUE 容器一旦设置了position且容器高度不能超过整屏,在安卓端就会被键盘遮挡...
  2. android 自定义皮肤,Android Studio 自定义皮肤主题和背景
  3. 从动力学角度看优化算法SGD:一些小启示
  4. 使用ABAP代码获得tcode RZ11里的参数值
  5. 美国知名华人学者陈刚被捕,他出身贫寒,是一个不折不扣的工作狂
  6. 【从入门到放弃-Java】并发编程-NIO-Channel
  7. windows oracle 内存大,如何设计Oracle数据库内存的大小
  8. 武汉科技大学085211计算机,武汉科技大学计算机科学与技术学院
  9. Git-第三篇廖雪峰Git教程学习笔记(2)回退修改,恢复文件
  10. Memory for crash kernel (0x0 to 0x0) notwithin permissible range
  11. 鸿蒙官方编辑器 DevEco Studio 2.0.12.201使用流程
  12. 将在PPT中画的图 导入 word,保存矢量图格式
  13. 通过Adobe Acrobat DC和iText.jar完成通过pdf模板生成pdf
  14. 计算机体系结构 第一章 计算机系统结构的基础知识(2)
  15. pre-trained模型的使用
  16. 2019.2.21 对自定义页面的修改
  17. 微信小程序--优购商城项目(8)
  18. 还记得这门古老的编程语言么,送你一份perl书单!
  19. java中图片加载不出来的_请问图片加载不出来是为什么
  20. SyntaxError: Non-ASCII character ‘\xe9‘ in file dun.py on line 4

热门文章

  1. 移远BC95 nbiot接入华为OC云平台(电信云)
  2. 福禄克OptiFiber® Pro OTDR光线测试仪
  3. MySQL经典50道练习题及全网最详细解析
  4. python中的字体英文名,CSS 中文字体的英文名称
  5. canvas+websocket+vue做一个你画我猜小游戏
  6. Firefox国际版上登录本地服务
  7. rp软件app流程图_Axure制作流程图的图文操作
  8. java浏览器控件jxbrowser(简单demo模拟自动登录与点击)
  9. vs应用程序无法正常启动
  10. 深入浅出的etl作业调度工具taskctl