准备工作1 域名准备

  无论是个人开发还是做公司项目域名都是必不可少的

  前期我个人用过花生壳做个开发测试,挺好用的,就是现在要收费了,开通花生壳要收费,开通内网穿透要收费(为啥要内网穿透呢,因为微信接入的接口必须使用80端口,而如果 要想让自己pc的80端口对外映射就要做这个内网穿透)

  开发公司项目的需要提前准备好服务器和域名(为啥提前申请呢,域名备案也是个有点麻烦的事情,需要各种公司法人证件,顺利的话办理周期1-2周)

准备工作2 公众号申请和配置

  公众号分三种:订阅号(每天发文章)、服务号(功能更丰富)、企业号(俺也没用过)

  公众号申请也是需要公司各种材料,并且申请完了需要认证才可以做自定义开发,然后认证费300大洋

  当然个人做测试的话,只需要去申请一个测试号就行了,基本的开发功能也都有,so easy

  然后是配置

  进入微信公众平台,选择 开发-基本配置

  开发者ID、开发者密码:系统给自动分配的,尤其是开发者密码需要自己保存(否则就要进行重置)

  IP白名单:没有加入IP白名单的IP地址是无法调用微信的接口获取access_token的,所以你的微信公众号接口部署在哪里,就要把那台电脑的ip地址加入到IP白名单

  服务器地址:就是你的域名+接口名:如 http://mydomain.com/wechat/index

  令牌(token):记住就行,第一步做公众号接入的时候就要用这个token

  消息加解密密匙:如果消息加解密方式为‘明文模式’可以不去记,‘加密方式’就需要在接入接口中配置

  稍后等接入接口写完并且部署到服务器上了,就是在这里验证接口是否是通的

node.js 微信接入代码参考

公众号接入接口(注意是get请求)

'GET /wechat/index': async (ctx, next) => {
wechatApp.auth(ctx.request, ctx.response);
},

公众号接入认证

/**
* 微信接入验证
* @param {Request} req Request 对象
* @param {Response} res Response 对象
*/
WeChat.prototype.auth = function (req, res) { var that = this; //1.获取微信服务器Get请求的参数 signature、timestamp、nonce、echostr
var signature = req.query.signature, //微信加密签名
timestamp = req.query.timestamp, //时间戳
nonce = req.query.nonce, //随机数
echostr = req.query.echostr; //随机字符串 //2.将token、timestamp、nonce三个参数进行字典序排序
var array = [this.token, timestamp, nonce];
array.sort(); //3.将三个参数字符串拼接成一个字符串进行sha1加密
var tempStr = array.join('');
const hashCode = crypto.createHash('sha1'); //创建加密类型
var resultCode = hashCode.update(tempStr, 'utf8').digest('hex'); //对传入的字符串进行加密 //4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if (resultCode === signature) {
res.body = echostr
// res.send(echostr);
} else {
res.body = mismatch
// res.send('mismatch');
}
}

按照微信官方的说明就是:

你在微信公众平台点击提交 公众号基本配置 后,公众号会向你配置的服务器地址(URL)发送一个get请求

这个get请求就包含了四个参数:signature\timestamp\nonce\echostr

然后你要做的就是

1)将其中的timestamp、nonce两个参数和你自己设置的token(共三个参数)进行排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,如果对比一致,就将echostr参数返回(表示接入成功了),否则就返回其他信息(表示接入失败了)

如果此时在微信公众平台提示验证通过,那也就通过微信开发的第一步了……

node.js 微信开发1-接入的更多相关文章

  1. node.js 微信开发2-消息回复、token获取、自定义菜单

    项目结构 >config/wechat.json 微信公众号的配置文件 >controllers/oauth.js 微信网页授权接口(下一篇再细讲讲) >controllers/we ...

  2. node JS 微信开发

    JS-SDK 要点 微信测试号; 扫码登录;无需认证(只是名称统一为微信测试号)http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/logi ...

  3. node.js 微信开发3-网页授权

    1.配置公众号的自定义菜单,如 { "button":[ { "type":"view", "name":"公 ...

  4. vue+node.js+webpack开发微信公众号功能填坑——v -for循环

    页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...

  5. 4.Node.js 微信消息管理

    一.写在前面的话   当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应.   消息推送也是 ...

  6. node.js之开发环境搭建

    一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...

  7. AngularJS + Node.js + MongoDB开发

    AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero) 一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包 ...

  8. Ubuntu 14.04下搭建Node.js的开发环境

    最近想找一个轻量级且支持快速开发的服务开发平台,选来选去选择了Node.js,当时有几种选择: Python + Django(用过Django,虽然开发快速,但是感觉性能并不太好). Ruby + ...

  9. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

随机推荐

  1. [译]使用Pandas读取大型Excel文件

    上周我参加了dataisbeautiful subreddit上的Dataviz Battle,我们不得不从TSA声明数据集创建可视化.我喜欢这种比赛,因为大多数时候你最终都会学习很多有用的东西. 这 ...

  2. matlab基本函数min

    一起来学演化计算-matlab基本函数min 觉得有用的话,欢迎一起讨论相互学习~Follow Me 找到数组中最小的元素 语法 M = min(A) 返回A的最小元素 如果A是一个向量,那么min( ...

  3. Windows2008R2+iis7.5环境下的dz论坛X3版伪静态设置教程

    Windows2008R2+iis7.5环境下的dz论坛X3版伪静态设置教程 因为2008R2不是那么的普及,加上X3版新出不久,所以伪静态的设置教程比较少,今天搞出来了,其实很简单,那么下面给大家简 ...

  4. 16、vue引入echarts,划中国地图

    vue引入echarts npm install echarts --save main.js引入 import echarts from 'echarts' Vue.prototype.$echar ...

  5. mysql 连接闪断自动重连的方法(用在后台运行中的PHP代码)

    mysql 连接闪断自动重连的方法(用在后台运行中的PHP代码)当mysql断开连接 $_instance这个还是有值得 所以会报错 MySQL server has gone away 这个地方需要 ...

  6. 【转帖】IP地址总数

    http://blog.sina.com.cn/s/blog_ac1d70a40102xn8z.html 计算规则挺有意思的 私有IP地址段: A类:10.0.0.0到10.255.255.255 1 ...

  7. Git时间 —— 初始版本控制工具

    <第一行代码>读书手札 可能你早就听闻git,奈何看不懂命令吓退了. 今天逆流而上. (1.)安装Git 登录官网,下载最新版,一路下一步.就完成安装了. (2.)创建本地代码仓库 首先配 ...

  8. C++ 中三种继承方式的理解

    一.公有继承(public inheritance) 1.概念:当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类的私有成员不可以直接访问. 实验一下:   我们用代 ...

  9. python使用ORM之如何调用多对多关系

    在models.py中,我创建了两张表,他们分别是作者表和书籍表,且之间的关系是多对多. # 书 class Book(models.Model): id = models.AutoField(pri ...

  10. adb连接安卓设备的2种方式

    一.usb连接 安卓设备打开开发者模式,启用usb调试 CMD窗口输入adb devices,此时可以看到自己的设备 PS:无法看到自己设备时,查看手机USB调试是否打开:PC端是否安装手机驱动. 二 ...