微信公众号之接入微信公众号服务器开发(二)

article/2025/10/16 19:13:34

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/85319116

一丶叙述

  • 开发说明

  1. Python代码实现(以Flask框架为例)
  2. 将使用公众号消息会话
  3. 客户端---->微信服务器---->nginx服务器---->开发者服务器
  4. 在微信服务器与开发者服务器之间搭建了nginx服务器默认为80端口(也是微信支持的端口),跟开发者服务器属于同一个主机
  5. 在nginx服务器上配置了多个端口,方便多人进行测试,转发规则:location/wechat8007
  6. 在微信公众号测试平台接口配置url为host/wechat8007时,当微信服务器发送消息给host/wechat8007时,host为nginx服务器时,就会按照/wechat8007转发规则匹配,一旦匹配成功后,由nginx服务器转发给开发者服务器上127.0.0.1:8007进程的用户,这样可以实现多个账号共享一个80端口,并可以收到微信服务器对应用户的消息
  7. 注:在写的flask程序中视图网址也必须是/wechat8007,因为nginx在向后台转发的时候,它只是按照/wechat8007规则知道转发给谁,它会把微信用户的请求原封不动的往后去发,因为微信服务器在向我们发送请求路径就是/wechat:8007,意味着nginx再转发给我们的时候,在我们写的flask程序收到的请求里面,你会发现对应的请求路径也是/wechat8007,所以我们flask程序中的route路径也必须是/wechat8007
  8. 如果是在公司做开发的话,不涉及到多个账户使用一个80端口,所以直接把程序在开发者服务器上以80端口运行,然后在微信公众测试平台配置url为配置程序地址即可
  9. 博主之所以这样做,那是因为我还没有购买服务器(●︿●)
  • 接入微信公众平台

接入微信公众平台开发,开发者需要按照如下步骤完成:

  1. 填写服务器配置
  2. 验证服务器地址的有效性
  3. 依据接口文档实现业务逻辑
  • 填写服务器配置

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

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

1.进入微信公众平台后,找到开发栏,进入基本配置

2.利用测试平台

测试平台登录地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

在手机微信上进行扫码登录即可

二丶验证服务器地址的有效性

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

开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

 

校验流程:

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

1.根据上面微信公众平台提供的开发文档进行代码编写

代码实现如下

# coding:utf-8
from flask import Flask, request, abort
import hashlib# 常量
# 微信的token令牌
WECHAT_TOKEN = "cdtaogang"app = Flask(__name__)@app.route("/wechat8007")
def wechat():"""对接微信公众号服务器"""# 接收微信服务器发送的参数signature = request.args.get("signature")timestamp = request.args.get("timestamp")nonce = request.args.get("nonce")echostr = request.args.get("echostr")# 校验参数if not all([signature, timestamp, nonce, echostr]):abort(400)# 按照微信的流程进行计算签名li = [WECHAT_TOKEN, timestamp, nonce]# 排序li.sort()# 拼接字符串tmp_str = ''.join(li)# 进行sha1加密, 得到正确的签名值sign = hashlib.sha1(tmp_str).hexdigest()# 将自己计算的签名值与请求的签名参数进行对比,如果相同,则证明请求来自微信服务器if sign != signature:# 表示请求不是微信发的abort(403)else:return echostrif __name__ == '__main__':app.run(port=8007, debug=True)

2.测试连接开发者服务器

  • step1 使用ssh命令测试连接服务器

  • step2 使用scp命令将程序文件推送到服务器

  • step3 在开发者服务器上运行wechat程序

  • step4 回到微信公众测试平台配置接口

注意:当没有在服务器运行wechat程序时,进行提交会显示失败

此时,回头看服务器程序运行日志,微信给我发了一个以get方式请求过来的数据

大功告成!说明该服务器具有有效性....


http://chatgpt.dhexx.cn/article/HDAxyYO7.shtml

相关文章

教你3分钟快速开发微信公众号[订阅号][服务号]

Wx-tools是基于微信公众平台API的轻量级框架。 基于Wx-tools你可以开速开发一个订阅号/服务号的web应用后台。 博主最近终于有空!!已经更新到2.0.0啦!! GitHub仓库 下载wx-tools-2.0.0.jar wx-tools开发文档 大三做过几个基于…

微信公众号开发之配置开发服务器

微信公众号开发详细教程 微信公众号开发文档 需不需要开发服务器应该根据自己的业务需求来决定。如果你只是简单使用微信公众号,发送推文等简单需求,你就不需要的配置自己的开发服务器,微信公众号平台功能十分强大,不懂技术的用…

微信服务号的开发-服务器配置

微信服务号开发-服务器配置 本期是将微信开发第一步,也就是服务器配置,以及校验。 话不多说,我们主要讲重点。既然是微信服务号开发,首先我们需要一个测试号,大家可以自己去微信公众平台申请一个。 申请完后&#xff…

微信公众号开发:服务器配置(Java)

由于项目需要微信公众号的开发,弄了老半天,发现也不是那么难弄。 对于微信公众号开发,首先要有开发者权限然后进行基本的配置。 登录进微信公众号平台,首页最下面有个基本配置: 进入基本配置后,会看到两个…

微信公众号开发——服务器配置

一、前提 1、购买一台云服务器 域名解析 这里用的宝塔服务 创建域名 绑定到指定的目录 wx.php 代码如下 <?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj new wechatCallbackap…

微信公众号开发--服务号

前言 因公司需要开发一款手机打卡程序&#xff0c;本人没有安卓APP开发经验&#xff0c;所以决定将写个服务号的公众号&#xff0c;集外出打卡&#xff0c;打卡查询等功能; 一&#xff0c;开发前测试帐号申请 以下是官方给出的建议&#xff0c;大家可以多参考参考 1&#xf…

如何使用开发者服务器运维微信公众号

文章目录 1 如何把微信公众号授权给开发者服务器2 如何使用代码把开发者服务器与微信服务器进行关联 很多人都有自己的服务器&#xff0c;特别是对于大学生而言&#xff0c;很多服务器公司都对学生有优惠&#xff0c;例如腾讯云只要1元每月&#xff1a;http://blog.csdn.net/ti…

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

更新时间&#xff1a;2020年3月7日 微信公众号开发的硬件必备条件&#xff1a;&#xff08;1&#xff09;申请一个公众号 &#xff08;2&#xff09;有公网ip的服务器&#xff08;最好是阿里云&#xff0c;腾讯云等的云服务器&#xff09;&#xff08;3&#xff09;解析到&…

微信小程序微信服务号开发微信公众平台开发前端开发框架

1、Frozen UI 手Q出品&#xff0c;组件更丰富&#xff0c;视觉舒适度也不错&#xff0c;适合我这种前端较生疏&#xff0c;需要开箱即用的程序员。 推荐度&#xff1a;5星 演示地址&#xff1a;FrozenUI Demo 2、WeUI 官方出品&#xff0c;情怀满满&#xff0c;但是组件不够用。…

微信公众号开发流程指南

微信公众号开发流程指南 一.物料准备二.开发须知0.接入验证1.消息类型概括(MsgType)2.申请服务号的原因为账号类型所支持功能不同,职能不同3.当开启服务器配置后,公众号的原始菜单将会失效, 会以自定义菜单为准4.如下文介绍Api中出现Token字样, 则统一为通过AppId和AppSecret获…

微信公众号开发

文章目录 一、微信公众号简介二、注册/登录微信公众号三、功能介绍1、编辑模式&#xff08;个人开发者&#xff0c;无需服务器&#xff09;2、开发模式 四、实战开发1、配置服务器2、模块化 五、获取 access_token1、access_token 是什么&#xff1f;2、获取 access_token 功能…

公众号开发配置,服务号对接第三方服务器配置方法

很多公司企业在注册服务号后&#xff0c;通常需要对接第三方的开发平台&#xff0c;进行一些功能的完善补充。 市面上第三方平台非常之多&#xff0c;但是因微信官方限制&#xff0c;所需要的配置总结下来就这么几点&#xff0c;下面给大家讲解下配置的要点&#xff1a; 一、…

公众号开发

1.本地调试:打开微信开发者工具——》微信开发者工具选项——》更换开发模式——》公众号网页调试 2.使用 http://127.0.0.1:8080 本地调试会 the permission value is offline verifying 解决方法:先在输入框输入 http://demo.open.weixin.qq.com/jssdk&#xff0c;再输入你之…

微信公众号开发(一)服务器及接口的配置

微信公众号开发&#xff08;一&#xff09;服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论&#xff0c;网上有很多资源可以搜到&#xff0c;这里直接进入正题&#xff0c;如果是个人开发者&#xff0c;这里建议使用测试号进行开发学习&#xff0c;测…

微信公众号开发相关流程及功能介绍

1. 开发前准备 1.1 注册微信公众平台账号 进入的网址&#xff1a;https://mp.weixin.qq.com。 测试号&#xff08;网址&#xff1a;https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login&#xff09;&#xff0c;用户在开发之前可以通过测试号快速测试开发&#…

微信小程序开发 公众号/服务号 方法

微信小程序嵌入公众号/服务号方法 1.公众号开发方法 先去微信公众平台开启公众号选项 然后在页面中加入组件 <official-account bindload"bindload" class"official-account"></official-account> 组件细节 可查 官网文档 文档地址 本地调试…

微信服务号开发说明:测试号申请、自定义菜单添加第三方连接

微信服务号开发方式多种多样&#xff0c;本文对接触过的一种微信服务号开发模式进行记录&#xff0c;作为今后参考的依据。 1.开发模式 本文描述的开发模式如下&#xff1a; 客户或者市场部等申请服务号。开发部开发并发布移动端服务的测试版本至互联网上。使用测试号进行微…

微信公众平台-微信服务号开发

文章目录 背景:一、微信各个平台介绍二、公众平台介绍三、开发前准备四、服务器配置五、服务器验证六、消息接收七、客服消息八、获取素材九、相关工具十、最终效果展示总结 背景: 近期接到了涉及微信开放平台和微信公众平台相关的开发需求&#xff0c;开发过程中踩了许多坑&a…

启动Tomcat闪退的问题

之前启动一直没有问题&#xff0c;今天配置conf/server.xml文件&#xff0c;把我要打开的文件更改了一下就发现它要闪退了&#xff01;然后我去百度搜它闪退的原因&#xff0c;都说是环境变量没有配置好&#xff0c;可是我的是好的啊 然后其实&#xff01;&#xff01;&#x…