本人也是在学习过程中,所以文章只作为学习笔记,如果能帮到你,那就更好啦~当然也难免会有错误,请不吝指出~

一、准备工作

1、本人学习教程:慕课网Scott老师的《Node.js七天搞定微信公众号》 ,但是有点小贵,经济条件允许的话可以支持一下。

2、文档:微信开发官方文档,必备。https://mp.weixin.qq.com/wiki

3、微信开发测试号:测试公众号,必备。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

4、云服务器:本人使用的是阿里云ECS,我是不建议使用ngrok这类的工具,太麻烦了,有个云服务器后一劳永逸!想弄的话可以看一下我以前的一篇文章http://www.cnblogs.com/zczhangcui/p/6789094.html

5、域名:有了服务器和外网IP后,没有域名好像也可以进行,我是买了个域名并进行了备案,备案耗时较长,我是在云网买的,建议买之前看看域名在国内能不能备案。

6、开发工具:mac + chrome + sublime + 手机,当然都不是必须的。sublime使用sftp插件向云服务同步代码,很方便。

二、框架选择

这里使用了Node.js的Koa框架的1.2版本,Node版本为7.6.

至于为什么Koa2都有了还要用Koa1.2,当然是跟着教程来的,为了减小入门成本,所以选择了与教程一致的版本。_(:з」∠)_

三、目录结构

这里目录的生成使用了koa-generator快速生成。https://github.com/17koa/koa-generator

四、接入微信服务器

首先进入测试号页面,如下图

其中接口配置信息需要填写你的服务器URL,Token是自己填写的验证信息,内容随意。在提交之前,需要在服务器端进行配置。说白了,这个过程就是向微信证明“你(填写的服务器地址)是你”。

五、配置服务器,完成接入

在此之前,必须阅读微信开发文档,了解接入过程!

接下来直接上代码:

首先使用koa-generator或者生成项目目录,之后使用npm install 安装依赖。

在routes下的index中进行如下修改:

var router = require('koa-router')();
var index_middleware = require('../wechat/index_middleware');
var config = require('../wechat/config'); router.get('/', index_middleware.get(config.wechat)); module.exports = router;

接下来实现index_middleware和config。

wechat/config.js:

module.exports = {
wechat: {
appID: 'xxxxxx',
appSecret: 'xxxxxxxxxxxxxxx',
token: 'xxxxxxx'
}
};

这里面的信息根据你自己的测试号进行填写。

wechat/index_middleware.js:

var sha1 = require('sha1');

exports.get = function(opts) {
return function *(next) {
var token = opts.token;
var signature = this.query.signature;
var nonce = this.query.nonce;
var timestamp = this.query.timestamp;
var echostr = this.query.echostr;
var str = [token, timestamp, nonce].sort().join('');
var sha = sha1(str); if (sha === signature) {
this.body = echostr + '';
}
};
};

完成接入逻辑后,需要npm install sha1 --save 安装sha1加密模块。

建议安装npm install supervisor -g,之后supervisor bin/www启动服务器并监听变化自动重启服务器,这样可以不用每次改动后手动重启服务器。

完成以上步骤后,回到步骤四,对填写的URL进行验证,这时,无意外的话,会出现验证成功,至此该服务器可以作为微信开发服务器了。

Node.js+Koa开发微信公众号个人笔记(一)准备工作的更多相关文章

  1. Node.js+Koa开发微信公众号个人笔记(二)响应事件

    微信公众号中的事件有订阅事件/扫码事件/点击事件/跳转链接事件等等,具体可以查阅文档. 这里来实现一下订阅事件,其他的事件的实现过程也都类似. 当有人订阅了公众号后,微信服务器会向我们的服务器推送一个 ...

  2. Node.js+Koa开发微信公众号个人笔记(三)响应文本

    响应输入文本和响应事件类似,首先对微信服务器发送来的数据的MsgType进行处理,如果是text,说明是文本,接下来可以对文本内容进行处理,比如用户输入了1,可以给用户回复一个文本或者图文或者视频等信 ...

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

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

  4. vue+node.js+webpack开发微信公众号功能填坑——组件按需引入

    初次开发微信公众号,整体框架是经理搭建,小喽喽只是实现部分功能,整体页面效果 整个页面使用两个组件:布局 FlexBox,搜索框 Search,demo文档 http://vue.ydui.org/d ...

  5. NodeJs 开发微信公众号(一)准备工作

    前言 大概是一个月前,自己用业余时间做了一个微信公众号.微信开发,尤其是对后台不熟悉的人来说显得尤其困难.首先要克服的是后台语言(nodejs)的一些不熟悉困难,其次,也是最大的一点困难是在跟微信交互 ...

  6. C#开发微信公众号-学习笔记

    由于最近要做微信服务号的开发,所以开始找相关说明和接口文档开始学,故把学习过程及注意事项记录一下,帮助想学习的快速上手.废话不多少了,直接上干货! 1.申请微信公众号 这个就不需要多说了吧,大家直接照 ...

  7. 使用vue开发微信公众号下SPA站点的填坑之旅

    原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...

  8. Vue开发微信公众号默认背景为灰色

    最近公司有一个项目,使用Vue开发微信公众号,开发过程遇到一个问题,即设计图的整体背景是白色的,但是公众号里默认的背景是浅灰色,如果某个页面高度没能占满一屏,就会露出浅灰色的默认背景,会显得很不协调. ...

  9. vux+vuex+vue+Es6开发微信公众号的坑

    初次开发微信公众号遇到很多问题,可能是基础不怎么牢靠,最近几天一直在看vue的东西,现在就来慢慢介绍vux和vue这个骚东西的用法: 细看文档一步步来, npm install vux --save ...

随机推荐

  1. 【leetcode】 算法题2 两数相加

      问题      给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例 ...

  2. XCode 无法识别设备

    XCode 取消Unpair Device 后不能读取设备 1:退出XCode 2:断开设备连接 3:在终端执行‘sudo pkill usbmuxd’ 4:重启XCode 5:连接设备即可

  3. Java学习笔记49(DBUtils工具类二)

    上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...

  4. js深拷贝与浅拷贝

    1 基础知识:基本类型与引用类型 JS中可以把变量分成两部分,基本类型和引用类型. 基本类型包括:Undefined.Null.Boolean.Number和String: 引用类型值可能由多个值构成 ...

  5. 【sping揭秘】14、@before @AfterThrowing

    @before 基础模式,我们先直接看一下就可以了,比较简单,网上一堆... 不是我装逼哈,我学了那么久spring,aop的皮毛也就是网上的那些blog内容,稍微高级点的我也不会,这里跳过基础部分 ...

  6. Redis主从和集群

    主从概念 一个master可以拥有多个slave,一个slave又可以拥有多个slave.如此下去,形成了强大的多级服务器集群架构. master用写数据,经统计:网站的读写比率是10:1 通过主从分 ...

  7. vertical-align_CSS参考手册_web前端开发参考手册系列

    该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐.允许指定负长度值和百分比值.这会使元素降低而不是升高.在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式. <!DOCTYP ...

  8. php 对数组按照字符串长度排序

    $file = file('zong.txt'); usort($file, 'sortByLen'); $handle = fopen('zong2.txt', 'a'); foreach ($fi ...

  9. linux pidstat 命令详解

    pidstat 概述 pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu.内存.线程.设备IO等系统资源的占用情况.pidstat首次运行时显示自系统启动开始的各项统计信息, ...

  10. underscore.js源码解析【'_'对象定义及内部函数】

    (function() { // Baseline setup // -------------- // Establish the root object, `window` (`self`) in ...