写在最前方!

作为开发者,在学习任何技术之前一定要先看官方文档。

官方文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

微信公众号有订阅号、服务号、企业微信号三类,可根据自己实际应用场景注册对应的类型即可,在开发中我们可以使用微信公众平台测试号进行开发测试。

但是,在开发之前一定要确定项目实际所运行的账号类型,因为这牵扯到官方的接口权限问题。针对不同的权限,在开发之前我们需要根据业务场景及接口权限设计好对应场景实现的解决方案。

一、开发准备工作介绍:

我们需要准备一个微信公众平台测试账号,微信公众平台测试账号不需要注册,任何人可以通过个人微信扫描二维码登录即可获得一个测试账号。

测试账号登录网址:
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

还需要准备一个内网穿透工具(ngrok),开发过程中我们需要将本地开发服务器映射到外网,模拟真实服务器使用,在这里我们可以使用(Express)配合(MongoDB)数据库搭建一个简单的Web 服务器应用程序。

二、公众号用户消息处理流程微信公众号消息处理流程示意图

如图所示:用户通过微信公众号无论是发送了一段文字、一张图片又或者是点击了某一个按钮,用户所有这些操作,首先会被发送至微信服务器,然后经由微信服务器将消息处理之后,按照一定格式发送至开发者服务器。开发服务器在接收到微信服务器发送的消息后,可依据接口文档针对用户操作处理对应的业务逻辑,然后将结果按照一定的格式返回给微信服务器,再由微信服务器将数据处理之后返回给用户。

对于开发者服务器来说,微信服务器与用户之间的交互不需要关注,开发者服务器只需要关注微信服务器发送给开发者服务器的数据,然后依据文档对接收到的数据进行处理。所以开发者服务器在接收到每一个请求时都必须验证一下该消息来源是否由微信服务器发出,验证通过之后才能依据接口文档进行对应的业务逻辑处理。

三、微信公众平台测试号说明

1、测试账号信息:

开发者ID(AppID):开发者ID是公众号开发识别码,配合开发者秘钥可调用公众号的接口能力。

开发者秘钥(AppSecret):开发者秘钥是校验公众号开发者身份的密码,具有极高的安全性。切记勿把秘钥直接交给第三方开发者或直接存储在代码中。如需第三方代为开发公众号功能,请使用授权方式接入。

2、接口配置信息:

URL:开发者服务器地址,该URL是开发者服务器用来接收和响应微信服务器消息和事件的接口。

Token:随机字符串,用作生成签名(必须为英文或数字,长度为3-32字符)该签名在后边会用到,这里暂时随便填个内容也可以。

3、JS接口安全域名:

设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口。

以上内容可通过官方文档:开发前必读及开始开发—接入指南深入理解。

四、搭建本地应用

采用Express+MongoDB技术栈搭建一个简单的本地开发者服务器。

1、配置信息

2、最简单服务器代码示例:

const express = require('express')
const app = express()
const port = 3000// 定义微信服务器接口获取微信服务器携带过来的参数。
app.get("/wechat", (req, res) => {console.log(req.query);res.send("Hello World!");
});app.listen(port, () => {console.log(`Example app listening at http://localhost:${port}`)
})

3、req.query返回信息

4、req.query返回信息字段说明

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

加密/校验流程如下:

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

5、js代码示例:

app.get("/wechat", (req, res) => {const { signature, echostr, timestamp, nonce } = req.query;const token = "lizhijie0429";const str = [token, timestamp, nonce].sort().join("");const sha1Str = sha1(str);sha1Str === signature ? res.send(echostr) : res.send("error");
});

至此,再去提交接口配置信息,若提示成功,则表示我们开发环境搭建完成。

往期内容:

【Vue】在Vite+Vue3.0中使用jsx语法开发。

【Vite+vue3】vue3当中keep-alive的使用

【微信公众号开发系列文章】一、微信公众号开发环境搭建相关推荐

  1. vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺

    vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺 首先我们要简单了解一下vSphere整体设计结构. 接下来开始做服务器吧. 一.先做ESXi5.0服务器 找到一台干净服务器 ...

  2. 微信公众号开发系列-玩转微信开发-目录汇总

    引言 最遗憾的不是把理想丢在路上,而是理想从未上路. 每一个将想法变成现实的人,都值得称赞和学习.致正在奔跑的您! 在现在这个无处不在的互联网背景下,各种应用已不再仅仅局限于网页或桌面应用了,IOS. ...

  3. [转载]C# WinForm开发系列 - 文章索引

    该系列主要整理收集在使用C#开发WinForm应用文章及相关代码, 平时看到大家主要使用C#来开发Asp.Net应用,这方面的文章也特别多,而关于WinForm的文章相对少很多,而自己对WinForm ...

  4. Windows Mobile 开发系列文章收藏 - Windows Mobile 6.x

    收集整理一些Windows Mobile 6.x开发相关文章, 文章及相关代码大部分搜集自网络,版权属于原作者! 智能手机      手机词汇      研发手机基本流程 WAP协议分析(1)     ...

  5. 【微信小程序开发•系列文章一】入门

    本系统文章主要有以下几篇: <[微信小程序开发•系列文章一]入门> <[微信小程序开发•系列文章二]视图层> <[微信小程序开发•系列文章三]数据层> <[微 ...

  6. Jerry Wang的微信小程序开发系列文章

    微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列教程三:微信小程序的调试方法 微信小程序开发系列四:微信小程序之控制器的初始化逻辑 ...

  7. 微信小程序开发系列七:微信小程序的页面跳转

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  8. 微信小程序开发系列六:微信框架API的调用

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  9. 微信小程序开发系列五:微信小程序中如何响应用户输入事件

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  10. 微信小程序开发系列四:微信小程序之控制器的初始化逻辑

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 这个教程的前两篇文章,介绍了如何 ...

最新文章

  1. 二、进程的状态与转换
  2. 《中国人工智能学会通讯》——3.15 社交媒体中的谣言识别研究及其发展趋势...
  3. Windows Server 2012 存储 (四) SMB 对SQL 数据库和Hyper-V的支持
  4. C语言--const修饰指针解析
  5. 【错误记录】Android NDK 编译报错 ( no known conversion from ‘unsigned char *‘ to ‘const char *‘ )
  6. Yii的gii-modules
  7. python:单例模式--使用__new__(cls)实现
  8. ECshop 快捷登录插件 支持QQ 支付宝 微博
  9. php实现凯撒密码加密算法,Python实现的凯撒密码算法示例
  10. 第四周作业二_单元测试
  11. win10配置清华源——快速安装anaconda、TensorFlow和pytorch
  12. CUDA精进之路(五):图像处理——OTSU二值算法(最大类间方差法、大津法)
  13. Django重新整理3
  14. mac PowerPoint 导出高分辨率图片
  15. 小小故事--大大道理
  16. Matlab绘图保存为.fig格式以使用,及.fig文件的加载与数据读取
  17. Fabric.js 上划线、中划线(删除线)、下划线
  18. oculusHome 无法登录提示显示错误 ovr....
  19. 基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)
  20. 十个英语口语学习网站

热门文章

  1. 诺基亚x6 android one,诺基亚X6手机推送固件更新:提升安卓8.1系统流畅性,新增后台锁定...
  2. m序列的原理以及verilog实现
  3. 基于深度学习的云反演-文献分析
  4. 卷积的本质及物理意义
  5. Java、JSP汽车租赁管理系统
  6. 6 爬虫 Scrapy 爬取图片 请求传参 核心组件 中间件
  7. 物料分拣系统matlab仿真,基于PLC的物料分拣控制系统设计与仿真(含梯形图)
  8. 2020电工(初级)证考试及电工(初级)考试软件
  9. 企业微信如何快速共享打印
  10. ubuntu 18.04安装微信