热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Node.js+Express微信公众号开发】第一步:服务搭建及微信接入

一、前言此前微信开发,都比较依赖后端。然而有时候后端小伙伴特别忙,最近又学习了一下node的基础知识,索性就想着自己用node整一遍。本教程环境为linux系统centOs7系统二
一、前言

此前微信开发,都比较依赖后端。然而有时候后端小伙伴特别忙,最近又学习了一下node的基础知识,索性就想着自己用node整一遍。

本教程环境为linux系统centOs7系统

二、准备工作

1. 服务器

服务器我使用的是搬瓦工的,目前19.9美元那款,网上有优惠券,对比下来也不贵,国外的也免备案,有兴趣可以去购买。
系统为centOs7。

2. 公众号

https://mp.weixin.qq.com

三、搭建服务

使用Xshell链接服务器。

1. 安装node

$ sudo yum -y install nodejs

2. 安装express脚手架

$ npm install express-generator -g

3. 创建项目

3.1 脚手架快速搭建

//创建源码目录,此处我的路径为/home/nodeApp,您可以根据自己需要放置源码
$ cd /home
$ mkdir dir nodeApp
// 进入目录
$ cd nodeApp
//创建项目
$ express wxApp
$ cd wxApp
// 安装项目所需依赖包
$ npm install

此时脚手架创建项目成功,但是应用默认的为3000端口,而微信配置服务器地址时,只允许80和443端口,故这边将我们项目改为80端口:

3.2 修改项目服务端口

《【Node.js+Express微信公众号开发】第一步:服务搭建及微信接入》
修改的方法有两种,上面截图是在自己电脑本地修改后把文件放到服务器(如ftp),下面介绍服务器vi命令修改:

$ cd bin
$ vi www
然后保存

3.3 安装nodemon(可跳过)

因习惯了vue热加载,node服务更改的话都要重启服务才能生效,这个nodemon插件就是相当于热加载,自动重启服务。

// 全局安装nodemon插件
$ npm install -g nodemon
// 进入项目下的bin目录
$ cd bin
// 创建并编写 nodemon.json 配置文件
$ vi nodemon.json

下面是nodemon.json 配置文件内容:

{
"restartable": "rs",
"ignore": [
".git",
".svn",
"node_modules/**/node_modules"
],
"verbose": true,
"execMap": {
"js": "node --harmony"
},
"watch": [],
"env": {
"NODE_ENV": "development"
},
"ext": "js json"
}

保存完成。(同样的,你也可以本地编辑好再放到服务器)

3.4 运行项目

// 回到项目根目录 /home/nodeApp/wxApp
$ cd ..
// 运行项目
$ nodemon npm start

《【Node.js+Express微信公众号开发】第一步:服务搭建及微信接入》

如果如图一样,就证明服务已经开启了。
(注:如果遇到端口80冲突,请先关闭你服务器其他80端口占用的服务,再进行启动项目。)

在浏览器输入你服务器的ip。如果看到下图所示,证明你的项目已经搭建成功!!!

《【Node.js+Express微信公众号开发】第一步:服务搭建及微信接入》

四、微信配置

登录微信公众平台,
找到基本配置—服务器配置:

《【Node.js+Express微信公众号开发】第一步:服务搭建及微信接入》

如上所示,配置填写,此时提交,微信肯定是会报错的,因为我们自定义的token没有在服务器进行设置。

设置服务器token

// 安装crypto
$ npm install crypto

将index.js的内容替换成下面内容
《【Node.js+Express微信公众号开发】第一步:服务搭建及微信接入》

var express = require('express');
var crypto = require('crypto');
var router = express.Router();
var token = "WeiChartToken"; //此处是我们自定义的token,需与准备填写到微信配置上的一致!
/* GET home page. */
router.get('/', function(req, res, next) {
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var nOnce= req.query.nonce;
var echostr = req.query.echostr;
/* 加密/校验流程如下: */
//1. 将token、timestamp、nonce三个参数进行字典序排序
var array = new Array(token,timestamp,nonce);
array.sort();
var str = array.toString().replace(/,/g,"");
//2. 将三个参数字符串拼接成一个字符串进行sha1加密
var sha1Code = crypto.createHash("sha1");
var code = sha1Code.update(str,'utf-8').digest("hex");
//3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if(code===signature){
res.send(echostr)
}else{
res.send("error");
}
});
module.exports = router;

配置完成,然后到公众号再次按图示配置确认即可。


推荐阅读
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • tarzxvffilename.tar.gz顺便我们了解下linux下压缩与解压命令大全.tar解包:tarxvffilename.tar打包:tarc ... [详细]
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • 在Python 3环境中,当无法连接互联网时,可以通过下载离线模块包来实现模块的安装。具体步骤包括:首先从PyPI网站下载所需的模块包,然后将其传输到目标环境,并使用`pip install`命令进行本地安装。此方法不仅适用于单个模块,还支持依赖项的批量安装,确保开发环境的完整性和一致性。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • 版本控制是软件开发中的关键实践,用于管理和跟踪代码变更历史,确保团队协作高效有序。本文详细介绍了SVN(Subversion)服务器与客户端的安装配置步骤,并针对常见问题提供了实用的解决方案,帮助用户顺利搭建和使用SVN系统。 ... [详细]
  • 在Ubuntu和Linux Mint系统中安装LibreOffice 6.0的详细步骤
    本文详细介绍了在Ubuntu和Linux Mint操作系统上安装LibreOffice 6.0的具体步骤,包括必要的系统准备、软件源配置以及命令行操作,确保用户能够顺利安装并使用这一开源办公套件。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 在Linux系统中将Python更新至3.7版本的方法如下:首先,从Python官方网站下载Python 3.7的安装包,例如使用 `wget` 命令下载 `Python-3.7.3.tgz`。其他版本的下载链接也可从Python官网获取。接下来,解压下载的文件并进入解压后的目录,运行配置脚本和编译命令以完成安装。确保在安装过程中添加Python 3.7到系统的环境变量中,以便全局使用。此外,建议检查当前系统的Python版本,以避免冲突。 ... [详细]
  • 在Linux系统中,目录结构遵循文件系统层次标准(FHS),确保了系统的组织性和可维护性。其中,`/bin`目录是FHS要求必须存在的目录之一,主要存放了在单用户维护模式下仍可执行的基本命令和工具。这些命令不仅对root用户可用,普通用户也能使用,以确保系统在最小化运行状态下仍能进行基本的操作和管理。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • Linux磁盘管理入门指南:MBR分区格式详解与安装步骤
    在 CentOS 7.x 环境下,本文详细介绍了 MBR 分区格式的基本概念及其安装步骤。实验中使用了 SAS 和 SATA 硬盘,其中 SAS 硬盘主要用于企业级应用和服务器,而 SATA 硬盘则广泛应用于个人计算机和低端服务器。文章通过具体操作示例,帮助读者更好地理解和掌握 Linux 磁盘管理的基本技能。 ... [详细]
  • 本课程首先介绍了全栈开发的最后一公里为何重要,并详细探讨了搭建线上生产环境的关键步骤。随后,通过五个本地Node.js项目的实战演练,逐步展示了从快速构建纯静态简易站点到复杂应用的全过程,涵盖了环境配置、代码优化、性能调优等多方面内容。 ... [详细]
  • 如何在无网络环境下高效安装Python第三方库
    在无网络连接的CentOS 7环境中,以普通用户权限高效安装Python第三方库的方法。首先,在有网络的机器上下载所需的软件包,然后将这些文件传输至目标服务器。接下来,使用Python的包管理工具(如pip)离线安装这些软件包。为确保安装顺利,建议提前下载所有依赖项,并检查版本兼容性。 ... [详细]
author-avatar
Fate丶灬小庆_926
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有