nodejs获取微信小程序带参数二维码实现代码


Posted in NodeJs onApril 12, 2017

nodejs获取微信小程序带参数二维码实现代码

由于项目需求,需要获取小程序页面的带有参数的二维码。好,那就看文档搞吧。

之前都是写前端,没有写过后台的东西,这次难得有机会组长让我试一试试用node来写,那就写吧。

1、首页获取token,发送request请求,用get的方式,在url后面加上小程序的grant_type,appid,secret,就顺利拿到token了,注意,这个token是有有效时间的,小程序的是7200秒,也就是2个小时,每天获取的次数有限,需要有个中控服务器定时获取token,由于我的业务量小,就没有对token进行保存了,每次都是重新获取。

2、获取完token之后,再发送请求获取二维码,坑的是,微信没有告诉我们获取的是二进制流,之前一直是写前端的代码,对流没有概念,百度之,谷歌之,折腾了两天,终于搞定。还遇到了express的坑,用原来express的代码,死活生成不了二维码,新建一个express再生成二维码就没问题,莫名其妙的坑。

上代码:

var fs = require('fs'); 
var request = require('request'); 
var wx_conf = require('../../conf/wx_conf');//这里放了微信appid跟appSecret,文件没有引入进来,要用的时候,改一下吧。 
var AccessToken = { 
 grant_type: 'client_credential', 
 appid: wx_conf.appId, 
 secret: wx_conf.appSecret 
} 
var wx_gettoken_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=' + AccessToken.grant_type + '&appid=' + AccessToken.appid + '&secret=' + AccessToken.secret; 
//请求二维码的参数 
var postData = { 
 path: "pages/index/index", 
 width: 430 
} 
var createQrcode = { 
 create: function() { 
  console.log('fn:create'); 
  this.getToken(); 
 }, 
 //获取微信的token 
 getToken: function() { 
  console.log('fn:getToken'); 
  var that = this; 
  new Promise((resolve, reject) => { 
   console.log('进入Promise方法了'); 
   request({ 
    method: 'GET', 
    url: wx_gettoken_url 
   }, function(err, res, body) { 
    if (res) { 
     resolve({ 
      isSuccess: true, 
      data: JSON.parse(body) 
     }); 
    } else { 
     console.log (err); 
     reject({ 
      isSuccess: false, 
      data: err 
     }); 
    } 
   }) 
  }).then(proData => { 
   that.getQrcode(proData); 
  }); 
 }, 
 //生成二维码 
 getQrcode: function(proData) { 
  console.log ('fn:getQrcode'); 
  if (proData.isSuccess) { 
   postData = JSON.stringify(postData); 
   request({ 
    method: 'POST', 
    url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + proData.data.access_token, 
    body: postData 
   }).pipe(fs.createWriteStream('./public/images/index.png'));//路径自己定义吧 
  } else { 
   console.log('Promise请求数据出错'); 
  } 
 } 
} 
module.exports = createQrcode;//暴露对象,调用create方法既可以创建二维码

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

NodeJs 相关文章推荐
nodejs下打包模块archiver详解
Dec 03 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 #NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 #NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 #NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 #NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 #NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 #NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 #NodeJs
You might like
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
javascript简易画板开发
2020/04/12 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Python中捕获键盘的方式详解
2019/03/28 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python之字典添加元素的几种方法
2020/09/30 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
生产总经理岗位职责
2013/12/19 职场文书
知识竞赛主持词
2014/03/26 职场文书
新年联欢会主持词
2014/03/27 职场文书
公司踏青活动方案
2014/08/16 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
工作检讨书大全
2015/01/26 职场文书
技术支持岗位职责
2015/02/13 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python