设为首页 收藏本站
查看: 1233|回复: 0

[经验分享] 微信后台开发第一步:nodeJS+express接入微信后台详细教程

[复制链接]

尚未签到

发表于 2017-2-22 11:48:49 | 显示全部楼层 |阅读模式
博文由  水车  编写
  欢迎各位指正,转载请把链接带上——http://www.cnblogs.com/xuange306/p/4971702.html
  前期准备工作
  1:如果你没有服务器,那你需要一个内网映射工具:我用的是《花生壳》(PS:这不是广告),花生壳在实名认证是需要8RMB的认证费,之后就可以永久使用了,并且支持80端口映射,
   注:花生壳在免费申请时要申请内网,不要申请公网。

    2:nodeJS 最新版本,安装教程自行上网搜索
  3:一个注册号的微信公众号,自行申请,这里不做说明,网上教程已经比较成熟;
  花生壳使用教程
  下载地址: http://hsk.oray.com/download/
  安装:没有需要注意的
  注册账号:
DSC0000.png

  进去点击个人注册,如果你是企业,那就点击企业注册;
  注册成功后登陆客户端
  登陆后具体怎么做我忘了,(省略实名认证过程)总之会让你支付8RMB,付款后就可以使用了
  这时你应该已经生成了自己的映射域名了;
DSC0001.png

  双击域名
DSC0002.png   

  注意的地方如上图,点击确定;添加成功了,再补充一点:上图中有个80端口,那是你本地服务器的端口,和你自己的端口保持一致就行了,比如你设置的是3000端口,你就改为3000;
  nodeJS配置及使用
  1:确认自己的nodeJS安装成功,在cmd中输入node -v
  可以看到自己node的安装版本
DSC0003.png

  2:安装express4.x
  这里需要说明的是express4.x在使用上和express3.x略有不同;
  1:安装全局的express包
DSC0004.png

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



npm install -g express-generator
  2:cmd进入到你需要创建项目的目录下;我以我的D:/test 文件夹为例
  创建express项目,porjectName是你的项目文件夹名字,我这里以weixin命名



express porjectName

DSC0005.png

  这里我们在文件夹里可以看到已经创建好了一个文件夹,名字就是weixin
DSC0006.png

  这时再执行



cd weixin && npm install

DSC0007.png

  安装成功7个npm包后,我们就开始测试下我们的服务器能否正常启动!这里需要注意的是,express4.x创建的服务器默认端口为3000;如果需要改端口,bin/www文件里改
DSC0008.png

  我这里用的是webstorm10.0.3开发。
  启动服务器有两种方法,如果你也用的是webstorm。
  方法一:在cmd里输入
DSC0009.png




npm start

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

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

  到这里,我们的本地服务器就算是搭建完成了。
  3:测试花生壳是否映射成功
  启动花生壳映射:这里注意,花生壳里的本地端口要和node服务器的端口一致!
DSC00012.png

  在浏览器里打开上图中“外网访问地址”!我们看到和在localhost:3000下访问的页面完全一样,这样就映射成功
DSC00013.png

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

  URL:就是我们映射好的外网地址;
  token:就是我们和微信后台约定好的令牌;
  秘钥:随机生成;
  加密方式:可以选择明文模式,也可以选择兼容模式;
  注意:此时我们还不能提交,因为我们还没有验证代码的编写;这是验证要求;
DSC00016.png

  首先:我们这里用到了另一个npm包;所以我们先需要安装这个npm包,打开之前的cmd,进去我的微信目录里输入:
  npm install crypto
DSC00017.png

  打开weixin/routes/index.js;
DSC00018.png

  将里面的代码改为:
  切记,代码里的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;
  代码就改好了!现在开始接入:
DSC00019.png

  填好就可以提交了!如果提示url超时,就重新点击提交!
  此处可能出现的问题:
  1:如果多次提交还是超时,则将映射地址输入浏览器里直接打开,看能请求到不,如果看到页面显示一个error,则重新点击提交,如果一直加载,则是花生壳问题,关闭重新打开花生壳!
  2:如果提示token验证失败,则是代码问题,查看代码哪里有错误!修改错误后重新提交!
DSC00020.png

  从此,我们就可以真正的做微信开发了,查看文档,完成自己想完成的任务去吧!
  @转载请注明出处!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345723-1-1.html 上篇帖子: 借助Nodejs在服务端使用jQuery采集17173游戏排行信息 下篇帖子: Nodejs AES加密
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表