微信后台开发第一步:nodeJS+express接入微信后台详细教程

前期准备工做

1:若是你没有服务器,那你须要一个内网映射工具:我用的是《花生壳》,花生壳在实名认证是须要8RMB的认证费,以后就能够永久使用了,而且支持80端口映射,php

注:花生壳在免费申请时要申请内网,不要申请公网。 html

2:nodeJS 最新版本,安装教程自行上网搜索node

3:一个注册号的微信公众号,自行申请,这里不作说明,网上教程已经比较成熟;nginx

花生壳使用教程:

下载地址: http://hsk.oray.com/download/web

安装:没有须要注意的express

注册帐号:npm

进去点击我的注册,若是你是企业,那就点击企业注册;浏览器

注册成功后登录客户端服务器

登录后具体怎么作我忘了,(省略实名认证过程)总之会让你支付8RMB,付款后就可使用了微信

这时你应该已经生成了本身的映射域名了;

双击域名

注意的地方如上图,点击肯定;添加成功了,再补充一点:上图中有个80端口,那是你本地服务器的端口,和你本身的端口保持一致就好了,好比你设置的是3000端口,你就改成3000;

nodeJS配置及使用:

1:确认本身的nodeJS安装成功,在cmd中输入node -v

能够看到本身node的安装版本

2:安装express4.x

这里须要说明的是express4.x在使用上和express3.x略有不一样;

1:安装全局的express包

在cmd任意位置执行如下代码

npm install -g express-generator

2:cmd进入到你须要建立项目的目录下;我以个人D:/test 文件夹为例

建立express项目,porjectName是你的项目文件夹名字,我这里以weixin命名

express porjectName

这里咱们在文件夹里能够看到已经建立好了一个文件夹,名字就是weixin

这时再执行

cd weixin && npm install

安装成功7个npm包后,咱们就开始测试下咱们的服务器可否正常启动!这里须要注意的是,express4.x建立的服务器默认端口为3000;若是须要改端口,bin/www文件里改

我这里用的是webstorm10.0.3开发。

启动服务器有两种方法,若是你也用的是webstorm。

方法一:在cmd里输入

npm start

方法二:在webstorm里的www文件里的任意位置单击右键,选择run ‘fileName’;

测试服务器是否正常启动,在浏览器里输入localhost:3000

到这里,咱们的本地服务器就算是搭建完成了。

3:测试花生壳是否映射成功

启动花生壳映射:这里注意,花生壳里的本地端口要和node服务器的端口一致!

在浏览器里打开上图中“外网访问地址”!咱们看到和在localhost:3000下访问的页面彻底同样,这样就映射成功

4:公众号的接入配置:(在这里,你应该阅读一下微信开发者文档里的接入指南;地址:http://mp.weixin.qq.com/wiki/16/1e87586a83e0e121cc3e808014375b74.html 

1:打开公众号平台:

点击“接口配置”

URL:就是咱们映射好的外网地址;

token:就是咱们和微信后台约定好的令牌;

秘钥:随机生成;

加密方式:能够选择明文模式,也能够选择兼容模式;

注意:此时咱们还不能提交,由于咱们尚未验证代码的编写;这是验证要求;

首先:咱们这里用到了另外一个npm包;因此咱们先须要安装这个npm包,打开以前的cmd,进去个人微信目录里输入:

npm install crypto

打开weixin/routes/index.js;

将里面的代码改成:

切记,代码里的token要改成你本身的token

var express = require('express'); var crypto = require('crypto'); var router = express.Router(); var token = "你本身规定的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; 

代码就改好了!如今开始接入:

填好就能够提交了!若是提示url超时,就从新点击提交!

此处可能出现的问题:

1:若是屡次提交仍是超时,则将映射地址输入浏览器里直接打开,看能请求到不,若是看到页面显示一个error,则从新点击提交,若是一直加载,则是花生壳问题,关闭从新打开花生壳!

2:若是提示token验证失败,则是代码问题,查看代码哪里有错误!修改错误后从新提交!

相关文章
相关标签/搜索