使用python几行代码解决在一台云服务器实现微信公众号服务器配置。

文章目录

前言

准备需要

一、了解微信公众号与服务器配置连接过程

第一步:填写服务器配置

第二步:验证消息的确来自微信服务器

二、配置URL与连接

三、python实现

1.初步了解web.py

2.代码实现

1.main.py运行函数

2.Handle.py 验证函数

3.部署到服务器


前言

微信公众号服务器配置,对公众号的部分功能实现有着基石作用。本文章将用python的一款轻量级的Web应用框架web.py实现url接口的配置。


准备需要

需要工具:一台云服务器、云服务器上的python3+、web.py、微信公众号(测试号)。

云服务器的选择配置、python的配置和微信公众号测试号的申请注册可参考的前面的博客《Python实现公众号每日自动发早/晚安消息(详细教程)》的第一节和第四节。


一、了解微信公众号与服务器配置连接过程

第一步:填写服务器配置

登录微信公众平台官网后,在公众平台官网的开发 - 基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中 URL 是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该 Token 会和接口 URL 中包含的 Token 进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档 。

测试号画面如下(只有URL和Token):


第二步:验证消息的确来自微信服务器

开发者提交信息后,微信服务器将发送 GET 请求到填写的服务器地址 URL 上,GET请求携带参数如下表所示:

参数

描述

signature

微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。

timestamp

时间戳

nonce

随机数

echostr

随机字符串

开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信。


二、配置URL与连接

配置大致分为四步:

1)首先需要用云服务器创建一个接收外来访问的web服务器

2)web服务器对微信服务器发送的GET请求进行解析提取对应字段

3)将web服务器的token、timestamp、nonce字典排序,拼接排序

4)判断自己的字符串是否与signature一致,一致则成功,不一致则不处理。

图解:


三、python实现

1.初步了解web.py

web.py的下载(注意是web.py,不是只有一个web)

最新0.62版本支持 Python >= 3.5。版本0.51是支持 Python 2.7 的最后一个版本。

pip3 install web.py
import web
#------------------
# 第一部分
urls = ('/', 'index'
)#------------------
# 第二部分
class index:def GET(self):return "Hello, Get!"def POST(self):return "Hello, Post!"
#------------------if __name__ == "__main__":app = web.application(urls, globals())app.run()

第一部分是匹配URL的正则表达式,像/、/help/faq、/item/(\d+)等(\d+将匹配数字)。圆括号表示捕捉对应的数据以便后面使用。第二部分是接受请求的类名称,像index、view、welcomes.hello (welcomes模块的hello类),或者get_\1。\1 会被正则表达式捕捉到的内容替换,剩下来捕捉的的内容将被传递到你的函数中去。

第二部分是web.py有明确区分的get和post方法,当用不同的请求访问时,返回不一样的内容。

ps:Web.py的更多详细使用方法可去官网新手指南阅读学习。

2.代码实现

1.main.py运行函数

建立服务器

# -*- coding: utf-8 -*-
# filename: main.py
import weburls = ('/wx', 'Handle',
)if __name__ == '__main__':app = web.application(urls, globals())app.run()

2.Handle.py 验证函数

get方法验证数据,返回数据

import web
import hashlibclass Handle(object):def GET(self):try:data = web.input()print(data)if len(data) == 0:return "hello,congratulations on finding me"signature = data.signaturetimestamp = data.timestampnonce = data.nonceechostr = data.echostr# 自己填写自己tokentoken = ""list = [token, timestamp, nonce]list.sort()s = list[0] + list[1] + list[2]hashcode = hashlib.sha1(s.encode('utf-8')).hexdigest()print("handle/GET func: hashcode, signature: ", hashcode, signature)if hashcode == signature:return echostrexcept Exception as Argument:return Argument
#消息自动回复、菜单连接等、将有post方法解决
#    def POST(self):

3.部署到服务器

服务器的配置、宝塔面板的配置进入和python的云服务器布置 见我之前的博客 《Python实现公众号每日自动发早/晚安消息(详细教程)》的第一节和第四节。

进入宝塔面板,先进入终端,下载web.py。

pip3 install web.py

随后在文件创建一个GongZhongHao(名字可以自己拟定)的文件夹,上传文件到刚刚创建的文件夹下。

就在刚刚创建的文件夹下,点击终端运行下方代码,运行成功会出现: http://0.0.0.0:80/http://0.0.0.0:80/

http://0.0.0.0:80/(80是端口号,因为微信公众号接口必须以http://或https://开头,分别支持80端口和443端口)

python3 main.py 80

不要关闭终端窗口,来到测试号,填写你的url和token,并提交。(你的url是:http://服务器公网ip:80/wx)

如果成功则有:


就这样服务器url接口就配置好了。虽然url接口配置好了,但是现在公众号的服务器并没有加功能,公众号并不能做什么,需要后面再添加内容。

(都看到这里了,如果你觉得对你有所帮助,就留下你宝贵的赞吧!!!!)

微信公众号url接口配置,使微信公众号更多功能化(python简单解决)相关推荐

  1. 微信商城开发:公众号平台接口配置及调试

    <微信商城开发系列教程第二讲> 公众号平台接口配置及调试 [本系列文章转载自:walkingmanc(作者:陈伟)] 在上一篇中,我们讲解了如何申请微信公众号,公众平台开发的基本原理以及服 ...

  2. 微信公众平台开发接口配置URL index.php和token

    最近在帮别人做个小项目,要用到微信公众平台,虽然以前也做过微信开发,但是没有深入的自己去搞一套微信开发的东西(也搞不了,那时候没能力,也弄不到微信公众号),最近开始搞,第一步就是配置微信基本配置(账号 ...

  3. 微信公纵平台基本配置php_php微信公众平台开发(一) 配置接口

    一.简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动. 二.通讯机制 三.注册微信平台 ...

  4. vue 微信公众号支付接口_vue做微信公众号分享,支付

    在前段时间做了一个微信公众号,因为我又是新手,没什么经验,拿起vue就开始,导致一坑再坑,简直阔怕!!! 对于此次项目,我主要用到的是vue的整框架和必要的插件,但是我没用vuex,用vuex的话会方 ...

  5. php微信公众号测试号token配置失败,微信公众号Token配置失败解决办法

    前言 今天生病在家,由于我的微信公众号被投诉了,因此影视站接口被迫关闭,于是就想着给大家分享 APP,于是就用了下微信的自动回复, 想着能否把这个自动回复对接到 MIPCMS 上,于是就开干.但是微信 ...

  6. php微信公众号支付接口案例,Thinkphp微信公众号支付接口

    本文实例为大家分享了Thinkphp微信公众号支付接口,供大家参考,具体内容如下 第一步 先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致. 第二步 把 Weixinpay 这个文 ...

  7. 第二讲:公众号平台接口配置及调试

    在上期第一讲中,我们讲解了如何申请微信公众号,公众平台开发的基本原理以及用花生壳搞定服务器环境的搭建.这一讲开始,我们正式进入微信公众号的开发. 1.微信接口 我们前一篇已经讲了,微信平台(不管是订阅 ...

  8. 微信公众号开发 接口配置信息 配置失败

    之前和室友合租的服务器到期了,现在自己租了一个,想把之前开发的公众号搬过来.然后就换配置接口的URL后提交.一致提示配置失败,后台没看到请求进来,也没看到错误日志.想想是不是请求发到别的地方去了,才突 ...

  9. 微信公众号测试号接口配置信息

    //引入express模块 const express = require('express'); //引入sha1模块 const sha1 = require('sha1'); //创建app应用 ...

  10. 微信公众平台测试号接口配置的一个坑——ngrok的

    先说坑,我觉得真坑 要想做公众号开发,但是个人账号是没有公众平台的全部接口权限的,所以需要申请测试账号.URL填写需要一个域名,所以选择用内网穿透,我这里使用的就是ngrok,直接去官网下就可以了.我 ...

最新文章

  1. Load Runner测试脚本(tuxedo服务)的编写指南
  2. 从零开始入门 K8s | 应用编排与管理
  3. 理解MySQL——复制(Replication)
  4. 电气:电能扰动质量数据集模拟生成(matlab)
  5. 全球服务器系统市场份额,IDC发布2017年第一季度全球融合系统报告 超融合市场最火爆...
  6. uva 10037——Bridge
  7. ndarray.ravel([order]) 和 ndarray.flatten([order])
  8. 孙鑫-MFC笔记一--Windows程序内部运行机制
  9. 【前端】js代码模拟用户键盘鼠标输入
  10. php 聊天室设计,基于PHP+MySQL的聊天室设计_PHP教程
  11. Dhtmlx Gantt如何LightBox自定义表单元素
  12. 共享换电:车企筑垒,宁王拆墙
  13. matlab 在二次函数图像,二次函数图像(二次函数图像图片)
  14. TMC5160/5130驱动芯片使用简明指南
  15. html格子像素画,有趣的CSS像素
  16. 安装启用firewalld防火墙
  17. 虚拟机挂起以后无法Resum
  18. 台语歌谣的奇葩── 邓雨贤
  19. sklearn的make_circles和make_moons生成数据
  20. Grafana只读编辑权限

热门文章

  1. oracle 隐式转换
  2. 企服网:语音线路市面上有哪些?
  3. java实现批量注册_Java写的批量域名注册查询程序
  4. 如何成为一家顶级域名注册商及如何提供域名注册
  5. 熵值法 java_Java实现熵值法确定权重
  6. 【学习OpenCV】使用OpenCV播放AVI视频
  7. 关于PostgreSQL的绑定变量窥视的问题详解
  8. 买的鱼丸怎么做好吃 鱼丸的家常做法介绍
  9. 模式识别——第3章 判别函数法
  10. 江苏科技大学计算机学院院长高尚,江苏科技大学计算机科学与工程学院导师介绍...